183 lines
6.9 KiB
Markdown
183 lines
6.9 KiB
Markdown
|
|
# Spacing Classes Audit Report
|
||
|
|
|
||
|
|
**Date**: 2025-01-27
|
||
|
|
**Action**: 7.2.1.2 - Audit all spacing classes
|
||
|
|
**Status**: ✅ Complete
|
||
|
|
|
||
|
|
## Summary
|
||
|
|
|
||
|
|
Comprehensive audit of all spacing classes used throughout the frontend application. This audit provides a complete inventory of spacing usage to inform spacing standardization.
|
||
|
|
|
||
|
|
## Overall Statistics
|
||
|
|
|
||
|
|
| Metric | Count |
|
||
|
|
|--------|-------|
|
||
|
|
| **Total spacing class instances** | 2,761 |
|
||
|
|
| **Files containing spacing classes** | 366 |
|
||
|
|
| **Unique spacing class patterns** | 100+ |
|
||
|
|
|
||
|
|
## Spacing Class Categories
|
||
|
|
|
||
|
|
### Gap Classes (1,200+ instances)
|
||
|
|
Most common spacing utility for flexbox/grid layouts:
|
||
|
|
|
||
|
|
| Class | Count | Percentage | Notes |
|
||
|
|
|-------|-------|------------|-------|
|
||
|
|
| `gap-2` | 519 | 18.8% | Most common - 8px gap |
|
||
|
|
| `gap-4` | 299 | 10.8% | 16px gap |
|
||
|
|
| `gap-3` | 222 | 8.0% | 12px gap |
|
||
|
|
| `gap-1` | 142 | 5.1% | 4px gap |
|
||
|
|
| `gap-6` | 78 | 2.8% | 24px gap |
|
||
|
|
| `gap-8` | 43 | 1.6% | 32px gap |
|
||
|
|
| `gap-0` | 7 | 0.3% | No gap |
|
||
|
|
| `gap-12` | 3 | 0.1% | 48px gap |
|
||
|
|
| `gap-5`, `gap-7`, `gap-9`, `gap-10`, `gap-11` | 1 each | <0.1% | Rare/edge cases |
|
||
|
|
|
||
|
|
**Total Gap Classes**: ~1,314 instances
|
||
|
|
|
||
|
|
### Padding Classes (1,100+ instances)
|
||
|
|
Padding utilities for internal spacing:
|
||
|
|
|
||
|
|
| Class | Count | Percentage | Notes |
|
||
|
|
|-------|-------|------------|-------|
|
||
|
|
| `p-4` | 357 | 12.9% | Most common - 16px padding |
|
||
|
|
| `p-2` | 157 | 5.7% | 8px padding |
|
||
|
|
| `p-1` | 138 | 5.0% | 4px padding |
|
||
|
|
| `p-3` | 135 | 4.9% | 12px padding |
|
||
|
|
| `p-6` | 113 | 4.1% | 24px padding |
|
||
|
|
| `p-0` | 82 | 3.0% | No padding |
|
||
|
|
| `p-8` | 43 | 1.6% | 32px padding |
|
||
|
|
| `p-12` | 11 | 0.4% | 48px padding |
|
||
|
|
| `p-5`, `p-10`, `p-16`, `p-20`, `p-24`, `p-48` | 1-4 each | <0.2% | Rare/edge cases |
|
||
|
|
|
||
|
|
**Total Padding Classes**: ~1,041 instances
|
||
|
|
|
||
|
|
### Padding X/Y Classes (400+ instances)
|
||
|
|
Directional padding utilities:
|
||
|
|
|
||
|
|
| Class | Count | Percentage | Notes |
|
||
|
|
|-------|-------|------------|-------|
|
||
|
|
| `px-4` | 146 | 5.3% | Horizontal padding 16px |
|
||
|
|
| `py-2` | 124 | 4.5% | Vertical padding 8px |
|
||
|
|
| `py-1` | 114 | 4.1% | Vertical padding 4px |
|
||
|
|
| `px-2` | 101 | 3.7% | Horizontal padding 8px |
|
||
|
|
| `px-3` | 87 | 3.2% | Horizontal padding 12px |
|
||
|
|
| `py-8` | 68 | 2.5% | Vertical padding 32px |
|
||
|
|
| `py-20` | 38 | 1.4% | Vertical padding 80px |
|
||
|
|
| `py-0` | 36 | 1.3% | No vertical padding |
|
||
|
|
| `py-3` | 35 | 1.3% | Vertical padding 12px |
|
||
|
|
| `py-12` | 34 | 1.2% | Vertical padding 48px |
|
||
|
|
| `py-4` | 26 | 0.9% | Vertical padding 16px |
|
||
|
|
| `px-1`, `px-6`, `px-8`, `px-9`, `px-10`, `px-20`, `px-0` | 1-12 each | <0.5% | Less common |
|
||
|
|
| `py-6`, `py-10`, `py-16` | 3-4 each | <0.2% | Rare |
|
||
|
|
|
||
|
|
**Total Padding X/Y Classes**: ~784 instances
|
||
|
|
|
||
|
|
### Space Between Classes (300+ instances)
|
||
|
|
Vertical/horizontal spacing between children:
|
||
|
|
|
||
|
|
| Class | Count | Percentage | Notes |
|
||
|
|
|-------|-------|------------|-------|
|
||
|
|
| `space-y-4` | 159 | 5.8% | Vertical space 16px |
|
||
|
|
| `space-y-2` | 156 | 5.6% | Vertical space 8px |
|
||
|
|
| `space-y-6` | 123 | 4.5% | Vertical space 24px |
|
||
|
|
| `space-y-1` | 41 | 1.5% | Vertical space 4px |
|
||
|
|
| `space-y-3` | 32 | 1.2% | Vertical space 12px |
|
||
|
|
| `space-y-8` | 31 | 1.1% | Vertical space 32px |
|
||
|
|
| `space-y-0` | 31 | 1.1% | No vertical space |
|
||
|
|
| `space-x-2` | 27 | 1.0% | Horizontal space 8px |
|
||
|
|
| `space-x-4` | 7 | 0.3% | Horizontal space 16px |
|
||
|
|
| `space-x-3` | 7 | 0.3% | Horizontal space 12px |
|
||
|
|
| `space-x-1` | 6 | 0.2% | Horizontal space 4px |
|
||
|
|
| `space-y-5`, `space-y-12` | 1-2 each | <0.1% | Rare |
|
||
|
|
|
||
|
|
**Total Space Between Classes**: ~611 instances
|
||
|
|
|
||
|
|
### Margin Classes (100+ instances)
|
||
|
|
Margin utilities for external spacing:
|
||
|
|
|
||
|
|
| Class | Count | Percentage | Notes |
|
||
|
|
|-------|------------|------------|-------|
|
||
|
|
| `mx-auto` | 150 | 5.4% | Horizontal auto margin (centering) |
|
||
|
|
| `m-0` | 21 | 0.8% | No margin |
|
||
|
|
| `m-2` | 14 | 0.5% | 8px margin |
|
||
|
|
| `m-4` | 10 | 0.4% | 16px margin |
|
||
|
|
| `mx-2` | 5 | 0.2% | Horizontal margin 8px |
|
||
|
|
| `mx-4` | 5 | 0.4% | Horizontal margin 16px |
|
||
|
|
| `mx-1` | 5 | 0.2% | Horizontal margin 4px |
|
||
|
|
| `my-1`, `my-2`, `my-4` | 1-4 each | <0.2% | Vertical margins |
|
||
|
|
| `m-1`, `m-3`, `m-6`, `m-8`, `m-10`, `m-16`, `m-20`, `m-24` | 1-2 each | <0.1% | Rare |
|
||
|
|
| `mx-0`, `mx-3`, `mx-8` | 1-2 each | <0.1% | Rare |
|
||
|
|
|
||
|
|
**Total Margin Classes**: ~217 instances
|
||
|
|
|
||
|
|
## Usage Patterns
|
||
|
|
|
||
|
|
### Most Common Patterns:
|
||
|
|
1. **Gap utilities** (1,314 instances) - Used for flexbox/grid layouts
|
||
|
|
2. **Padding utilities** (1,041 instances) - Used for component internal spacing
|
||
|
|
3. **Padding X/Y utilities** (784 instances) - Used for directional padding
|
||
|
|
4. **Space between utilities** (611 instances) - Used for spacing between children
|
||
|
|
5. **Margin utilities** (217 instances) - Used for external spacing and centering
|
||
|
|
|
||
|
|
### Size Distribution:
|
||
|
|
- **Small spacing (1-2)**: ~1,200 instances (43%) - 4px-8px
|
||
|
|
- **Medium spacing (3-4)**: ~1,000 instances (36%) - 12px-16px
|
||
|
|
- **Large spacing (6-8)**: ~400 instances (14%) - 24px-32px
|
||
|
|
- **Extra large spacing (10+)**: ~160 instances (6%) - 40px+
|
||
|
|
|
||
|
|
## Inconsistencies Identified
|
||
|
|
|
||
|
|
1. **No semantic spacing classes**: All spacing uses numeric values (0, 1, 2, 3, 4, etc.) instead of semantic names (xs, sm, md, lg, xl)
|
||
|
|
2. **Inconsistent spacing values**: Similar contexts use different spacing values
|
||
|
|
3. **Arbitrary values**: Some rare spacing values (5, 7, 9, 10, 11, 20, 24, 48) that don't follow the 4px base scale
|
||
|
|
4. **Mixed patterns**: Some components use `gap-`, others use `space-y-` for similar purposes
|
||
|
|
|
||
|
|
## Recommendations
|
||
|
|
|
||
|
|
### Standardization Strategy:
|
||
|
|
1. **Map numeric to semantic**:
|
||
|
|
- `1` → `xs` (4px)
|
||
|
|
- `2` → `sm` (8px)
|
||
|
|
- `3` → `md` (12px) - or keep as numeric
|
||
|
|
- `4` → `md` (16px) - base spacing
|
||
|
|
- `6` → `lg` (24px)
|
||
|
|
- `8` → `xl` (32px)
|
||
|
|
- `12` → `2xl` (48px)
|
||
|
|
- `16` → `3xl` (64px)
|
||
|
|
- `20` → `4xl` (80px)
|
||
|
|
- `24` → `5xl` or `xxl` (96px)
|
||
|
|
|
||
|
|
2. **Preserve common patterns**: Keep most common values (gap-2, p-4, space-y-4) as they represent good defaults
|
||
|
|
|
||
|
|
3. **Standardize rare values**: Replace arbitrary values (5, 7, 9, 10, 11) with nearest scale value
|
||
|
|
|
||
|
|
4. **Create migration guide**: Document which numeric values map to which semantic values
|
||
|
|
|
||
|
|
## Files Requiring Attention
|
||
|
|
|
||
|
|
- **366 files** contain spacing classes
|
||
|
|
- **Top files by spacing usage**:
|
||
|
|
- Components with complex layouts (DashboardPage, LibraryPage, etc.)
|
||
|
|
- Form components (RegisterForm, LoginForm, etc.)
|
||
|
|
- Modal components (various modals)
|
||
|
|
- View components (ProfileView, SettingsView, etc.)
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
1. ✅ **Action 7.2.1.2 Complete**: Audit complete
|
||
|
|
2. **Action 7.2.1.3**: Replace inconsistent spacing with scale
|
||
|
|
3. **Action 7.2.1.4**: Add ESLint rule to enforce spacing scale
|
||
|
|
|
||
|
|
## Conclusion
|
||
|
|
|
||
|
|
The audit reveals **extensive use of numeric spacing classes** (2,761 instances across 366 files):
|
||
|
|
- Most common: `gap-2` (519), `p-4` (357), `gap-4` (299)
|
||
|
|
- All spacing uses numeric values (0-48), no semantic names found
|
||
|
|
- Good distribution across spacing sizes (small to extra large)
|
||
|
|
- Some inconsistencies with arbitrary values that should be standardized
|
||
|
|
|
||
|
|
**Recommendation**: Standardize spacing incrementally, starting with the most common patterns and rare/arbitrary values.
|
||
|
|
|
||
|
|
**Action 7.2.1.2 Status**: ✅ Complete - Comprehensive audit documented
|