mirror of
https://github.com/simstudioai/sim.git
synced 2026-01-06 21:54:01 -05:00
* feat(cursorrules): updated cursorrules and claude md file * added rules for adding new integrations
49 lines
1.0 KiB
Plaintext
49 lines
1.0 KiB
Plaintext
---
|
|
description: Component patterns and structure for React components
|
|
globs: ["apps/sim/**/*.tsx"]
|
|
---
|
|
|
|
# Component Patterns
|
|
|
|
## Structure Order
|
|
|
|
```typescript
|
|
'use client' // Only if using hooks
|
|
|
|
// Imports (external → internal)
|
|
// Constants at module level
|
|
const CONFIG = { SPACING: 8 } as const
|
|
|
|
// Props interface
|
|
interface ComponentProps {
|
|
requiredProp: string
|
|
optionalProp?: boolean
|
|
}
|
|
|
|
export function Component({ requiredProp, optionalProp = false }: ComponentProps) {
|
|
// a. Refs
|
|
// b. External hooks (useParams, useRouter)
|
|
// c. Store hooks
|
|
// d. Custom hooks
|
|
// e. Local state
|
|
// f. useMemo
|
|
// g. useCallback
|
|
// h. useEffect
|
|
// i. Return JSX
|
|
}
|
|
```
|
|
|
|
## Rules
|
|
|
|
1. `'use client'` only when using React hooks
|
|
2. Always define props interface
|
|
3. Extract constants with `as const`
|
|
4. Semantic HTML (`aside`, `nav`, `article`)
|
|
5. Optional chain callbacks: `onAction?.(id)`
|
|
|
|
## Component Extraction
|
|
|
|
**Extract when:** 50+ lines, used in 2+ files, or has own state/logic
|
|
|
|
**Keep inline when:** < 10 lines, single use, purely presentational
|