Align Component Props with Figma Design Specifications
Overview
This PR aligns all component property names and values with Figma design specifications while maintaining full backward compatibility. Figma uses PascalCase for prop values (e.g., "Standard", "Inverse", "Default"), while the codebase uses lowercase. This change enables components to accept both formats and normalize internally, treating Figma as the source of truth.
Key Goals:
Ensure all components accept both PascalCase (Figma) and lowercase (codebase) prop values
Maintain 100% backward compatibility with existing code
Establish a consistent pattern for future component development
Add development rules to guide future work
Changes
Core Infrastructure
Created lib/propNormalization.ts - Centralized normalization utilities with 20+ functions:
normalizeMode() - Standard/Inverse modes
normalizeState() - Default/Hover/Focus/Selected states
normalizeInputState() - Default/Active/Hover/Focus for inputs
Component-specific normalizers for Alert, Tooltip, MenuBar, ContentLockup, QuoteBlock, NumberCard, AskOrganizer, ContextMenuItem, ImagePlaceholder, ToggleGroup, and more
Components Updated (50+ components)
Form Components:
RadioButton, RadioGroup - mode, state props (added indicator prop from Figma)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Align Component Props with Figma Design Specifications
Overview
This PR aligns all component property names and values with Figma design specifications while maintaining full backward compatibility. Figma uses PascalCase for prop values (e.g., "Standard", "Inverse", "Default"), while the codebase uses lowercase. This change enables components to accept both formats and normalize internally, treating Figma as the source of truth.
Key Goals:
Changes
Core Infrastructure
lib/propNormalization.ts- Centralized normalization utilities with 20+ functions:normalizeMode()- Standard/Inverse modesnormalizeState()- Default/Hover/Focus/Selected statesnormalizeInputState()- Default/Active/Hover/Focus for inputsnormalizeVariant()- Generic variant normalizationnormalizeSize()- Generic size normalizationnormalizeLabelVariant()- Label variants (default/horizontal)normalizeSmallMediumLargeSize()- Small/medium/large sizesComponents Updated (50+ components)
Form Components:
indicatorprop from Figma)Core UI Components:
Navigation & Layout:
Content Components:
Card & Display Components:
Feature Components:
Context & Menu Components:
Utility Components:
Development Rules
.cursorrules- Development guidelines for:.cursorrulesto.gitignore- Keeps local development rules out of repositoryType System Updates
"small" | "medium" | "Small" | "Medium"How to Test
// Existing lowercase usage should still work