# Rule Template: Component Rules (Frontend/Fullstack Only)

## Variables
- {TECH_STACK_NAME}: Tech stack display name
- {FILE_EXT}: File extension pattern
- {UI_FRAMEWORK}: UI framework (React, Vue, etc)

## Output Format

```markdown
---
paths:
  - "**/components/**/*.{FILE_EXT}"
  - "**/ui/**/*.{FILE_EXT}"
  - "**/views/**/*.{FILE_EXT}"
  - "**/pages/**/*.{FILE_EXT}"
---

# {TECH_STACK_NAME} Component Rules

## Component Structure

[Organization patterns from Exa research]

### File Organization
```
components/
├── common/          # Shared components
├── features/        # Feature-specific
├── layout/          # Layout components
└── ui/              # Base UI elements
```

### Component Template
```{lang}
// Standard component structure
```

### Naming Conventions
- PascalCase for components
- Descriptive names
- Prefix conventions (if any)

## Props & State

[State management guidelines]

### Props Definition
```{lang}
// Props type/interface example
```

### Props Best Practices
- Required vs optional
- Default values
- Prop validation
- Prop naming

### Local State
- When to use local state
- State initialization
- State updates

### Shared State
- State management approach
- Context usage
- Store patterns

## Styling

[CSS/styling conventions]

### Approach
- [CSS Modules/Styled Components/Tailwind/etc]

### Style Organization
```{lang}
// Style example
```

### Naming Conventions
- Class naming (BEM, etc)
- CSS variable usage
- Theme integration

## Accessibility

[A11y requirements]

### Essential Requirements
- Semantic HTML
- ARIA labels
- Keyboard navigation
- Focus management

### Testing A11y
- Automated checks
- Manual testing
- Screen reader testing

## Performance

[Performance guidelines]

### Optimization Patterns
- Memoization
- Lazy loading
- Code splitting
- Virtual lists

### Avoiding Re-renders
- When to memoize
- Callback optimization
- State structure
```

## Content Guidelines

- Focus on component-specific patterns
- Include framework-specific examples
- Cover accessibility requirements
- Address performance considerations
