docs: generate comprehensive list of all remaining Tailwind default color instances
This commit is contained in:
parent
4032172050
commit
01f2acc718
3 changed files with 7027 additions and 0 deletions
|
|
@ -3125,8 +3125,10 @@ Critical path dependencies:
|
|||
- ✅ Batch 19 complete: CheckoutView.tsx (20 instances)
|
||||
- ✅ Batch 20 complete: FileManagerView.tsx (20 instances)
|
||||
- ✅ Total: 294 instances migrated (1,492 → 1,198 remaining, ~19.7% complete)
|
||||
- ✅ **Full instance list generated**: `apps/web/docs/TAILWIND_INSTANCES_FULL_LIST.md` (1,169 instances across 203 files)
|
||||
- ⏳ Continuing with remaining files incrementally
|
||||
- **Validation**: No Tailwind default colors used (in progress)
|
||||
- **Reference**: See `TAILWIND_INSTANCES_FULL_LIST.md` for complete list of all remaining instances
|
||||
- **Rollback**: Restore Tailwind colors
|
||||
|
||||
- [ ] **Action 9.1.1.4**: Add ESLint rule to prevent Tailwind defaults
|
||||
|
|
|
|||
6885
apps/web/docs/TAILWIND_INSTANCES_FULL_LIST.md
Normal file
6885
apps/web/docs/TAILWIND_INSTANCES_FULL_LIST.md
Normal file
File diff suppressed because it is too large
Load diff
140
scripts/generate_tailwind_list.py
Normal file
140
scripts/generate_tailwind_list.py
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
#!/usr/bin/env python3
|
||||
"""
|
||||
Generate a comprehensive list of all Tailwind default color instances.
|
||||
Excludes test files and backup files.
|
||||
"""
|
||||
|
||||
import re
|
||||
import subprocess
|
||||
from collections import defaultdict
|
||||
from pathlib import Path
|
||||
|
||||
# Patterns to search for
|
||||
PATTERNS = [
|
||||
r'text-gray-',
|
||||
r'bg-gray-',
|
||||
r'border-gray-',
|
||||
r'text-blue-',
|
||||
r'bg-blue-',
|
||||
r'border-blue-',
|
||||
r'text-red-',
|
||||
r'bg-red-',
|
||||
r'border-red-',
|
||||
r'text-green-',
|
||||
r'bg-green-',
|
||||
r'border-green-',
|
||||
r'text-yellow-',
|
||||
r'bg-yellow-',
|
||||
r'text-purple-',
|
||||
r'bg-purple-',
|
||||
r'text-pink-',
|
||||
r'bg-pink-',
|
||||
r'text-indigo-',
|
||||
r'bg-indigo-',
|
||||
r'text-orange-',
|
||||
r'bg-orange-',
|
||||
r'from-gray-',
|
||||
r'to-gray-',
|
||||
r'from-blue-',
|
||||
r'to-blue-',
|
||||
]
|
||||
|
||||
# Combine patterns
|
||||
PATTERN = '|'.join(PATTERNS)
|
||||
|
||||
def find_instances():
|
||||
"""Find all Tailwind default color instances."""
|
||||
root = Path(__file__).parent.parent / 'apps' / 'web' / 'src'
|
||||
|
||||
instances = defaultdict(list)
|
||||
|
||||
# Find all .tsx and .ts files
|
||||
for file_path in root.rglob('*.tsx'):
|
||||
if 'ui.backup' in str(file_path) or file_path.name.endswith('.test.tsx'):
|
||||
continue
|
||||
check_file(file_path, instances)
|
||||
|
||||
for file_path in root.rglob('*.ts'):
|
||||
if 'ui.backup' in str(file_path) or file_path.name.endswith('.test.ts'):
|
||||
continue
|
||||
check_file(file_path, instances)
|
||||
|
||||
return instances
|
||||
|
||||
def check_file(file_path, instances):
|
||||
"""Check a file for Tailwind default colors."""
|
||||
try:
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
for line_num, line in enumerate(f, 1):
|
||||
if re.search(PATTERN, line):
|
||||
# Extract the color class
|
||||
matches = re.findall(r'(' + PATTERN + r'[^\s"\'`)]+)', line)
|
||||
if matches:
|
||||
# Get relative path
|
||||
rel_path = file_path.relative_to(Path(__file__).parent.parent)
|
||||
instances[str(rel_path)].append({
|
||||
'line': line_num,
|
||||
'content': line.strip(),
|
||||
'colors': matches
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"Error reading {file_path}: {e}", file=sys.stderr)
|
||||
|
||||
def generate_markdown(instances):
|
||||
"""Generate markdown documentation."""
|
||||
output = []
|
||||
output.append("# Complete List of Remaining Tailwind Default Color Instances\n")
|
||||
output.append("**Generated**: Automatically generated list\n")
|
||||
output.append(f"**Total Files**: {len(instances)}\n")
|
||||
|
||||
total_instances = sum(len(v) for v in instances.values())
|
||||
output.append(f"**Total Instances**: {total_instances}\n")
|
||||
output.append("**Status**: Action 9.1.1.3 - In Progress (294 instances migrated, ~19.7% complete)\n")
|
||||
|
||||
output.append("\n## Usage\n")
|
||||
output.append("This document lists all remaining Tailwind default color instances organized by file path.\n")
|
||||
output.append("Each entry includes:\n")
|
||||
output.append("- File path\n")
|
||||
output.append("- Line number\n")
|
||||
output.append("- Color classes found\n")
|
||||
output.append("- Full line context\n")
|
||||
|
||||
output.append("\n## Migration Guidelines\n")
|
||||
output.append("Refer to `TAILWIND_COLORS_AUDIT.md` for color mapping:\n")
|
||||
output.append("- `text-gray-*` → `text-kodo-content-dim` or `text-kodo-text-main`\n")
|
||||
output.append("- `bg-gray-*` → `bg-kodo-graphite`, `bg-kodo-ink`, `bg-kodo-steel`, etc.\n")
|
||||
output.append("- `border-gray-*` → `border-kodo-steel`\n")
|
||||
output.append("- `text-blue-*` → `text-kodo-cyan` (when appropriate)\n")
|
||||
output.append("- Other colors: Map to appropriate Kodo design system colors\n")
|
||||
|
||||
output.append("\n## Files with Tailwind Default Colors\n")
|
||||
output.append("\n---\n")
|
||||
|
||||
# Sort files alphabetically
|
||||
for file_path in sorted(instances.keys()):
|
||||
file_instances = instances[file_path]
|
||||
output.append(f"\n### {file_path}\n")
|
||||
output.append(f"**Total instances in file**: {len(file_instances)}\n")
|
||||
|
||||
for inst in file_instances:
|
||||
colors_str = ', '.join(f"`{c}`" for c in inst['colors'])
|
||||
output.append(f"\n- **Line {inst['line']}**: {colors_str}\n")
|
||||
output.append(f" ```tsx\n")
|
||||
output.append(f" {inst['content']}\n")
|
||||
output.append(f" ```\n")
|
||||
|
||||
output.append("\n---\n")
|
||||
|
||||
return ''.join(output)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
instances = find_instances()
|
||||
markdown = generate_markdown(instances)
|
||||
|
||||
output_file = Path(__file__).parent.parent / 'apps' / 'web' / 'docs' / 'TAILWIND_INSTANCES_FULL_LIST.md'
|
||||
output_file.write_text(markdown, encoding='utf-8')
|
||||
|
||||
total = sum(len(v) for v in instances.values())
|
||||
print(f"Generated list with {total} instances across {len(instances)} files")
|
||||
print(f"Output saved to: {output_file}")
|
||||
Loading…
Reference in a new issue