Cursor rule
.cursor/rules/components.mdcComponent development patterns and composition rules
Cursor rules
Quality
65/100
Scores the file, not the repository.Length
344 words
13 headings · 6 code blocksRepository
63
— · pushed 15 days agoLast changed
3 days ago
First indexed 3 days ago.1234567# Component Development Rules89## Component Patterns1011### GOOD Component Structure12```tsx13// Single responsibility, 20-80 lines14interface UserCardProps {15 user: User16 onEdit: (id: string) => void17 className?: string18}1920export const UserCard = ({ user, onEdit, className }: UserCardProps) => {21 return (22 <Card className={cn("p-4", className)}>23 <Avatar src={user.avatar} />24 <div>25 <h3 className="font-semibold">{user.name}</h3>26 <p className="text-muted-foreground">{user.email}</p>27 <Button onClick={() => onEdit(user.id)}>Edit</Button>28 </div>29 </Card>30 )31}32```3334### AVOID: Monolithic Components35```tsx36// DON'T: 300+ lines mixing concerns37const UserManagement = () => {38 // Massive component with multiple responsibilities39}40```4142### Component Composition Pattern43```tsx44// Build complex UI from smaller components45const Dashboard = () => (46 <PageLayout>47 <DashboardHeader />48 <DashboardMetrics />49 <DashboardCharts />50 <DashboardActivity />51 </PageLayout>52)53```5455## UI Component Rules5657### shadcn/ui Components58- **NEVER** modify files in `src/components/ui/` directly59- **EXTEND** by creating wrappers in `src/components/common/`60- **COMPOSE** multiple ui components to build features6162### Form Components63```tsx64// Use React Hook Form + Zod pattern65export const UserForm = ({ onSubmit, initialData }: UserFormProps) => {66 const form = useForm<UserFormData>({67 resolver: zodResolver(userSchema),68 defaultValues: initialData69 })7071 return (72 <Form {...form}>73 <form onSubmit={form.handleSubmit(onSubmit)}>74 <FormField75 control={form.control}76 name="name"77 render={({ field }) => (78 <FormItem>79 <FormLabel>Name</FormLabel>80 <FormControl>81 <Input {...field} />82 </FormControl>83 <FormMessage />84 </FormItem>85 )}86 />87 </form>88 </Form>89 )90}91```9293## Page Component Rules9495### Pages = Composition Only96```tsx97// PERFECT: Thin orchestration layer (10-30 lines max)98const DashboardPage = () => {99 const { data: user, isLoading } = useCurrentUser()100101 if (isLoading) return <PageSkeleton />102103 return (104 <PageLayout>105 <DashboardHeader user={user} />106 <DashboardMetrics />107 <div className="grid grid-cols-1 lg:grid-cols-2 gap-6">108 <DashboardCharts />109 <DashboardActivity />110 </div>111 </PageLayout>112 )113}114```115116### NEVER in Pages117- Business logic (extract to hooks)118- API calls (use service layer)119- Complex state management120- Inline event handlers121122## Reusable Component Patterns123124### Compound Components125```tsx126const DataTable = ({ children }) => (127 <div className="border rounded-lg overflow-hidden">{children}</div>128)129130const DataTableHeader = ({ children }) => (131 <div className="bg-muted p-4 border-b">{children}</div>132)133134// Usage135<DataTable>136 <DataTableHeader>137 <h3>Users</h3>138 </DataTableHeader>139 <DataTableBody>140 {users.map(user => <UserRow key={user.id} user={user} />)}141 </DataTableBody>142</DataTable>143```144
Also in chihebnabil/lovable-boilerplate
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| chihebnabil/lovable-boilerplate.cursor/rules/design.mdc · 63 | Cursor rules | styleuido-not | 65/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/forms.mdc · 63 | Cursor rules | setupstyledo-not | 73/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/hooks.mdc · 63 | Cursor rules | styleuido-not | 61/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/services.mdc · 63 | Cursor rules | archtypesdo-not | 73/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/typescript.mdc · 63 | Cursor rules | setupstyletypessecurity+2 | 73/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/architecture.instructions.md · 63 | Copilot instructions | stylearchtypesdatabase+2 | 69/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/design.instructions.md · 63 | Copilot instructions | lint-formatstyleuido-not | 61/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/development.instructions.md · 63 | Copilot instructions | setupbuildtestlint-format+7 | 88/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/hooks.instructions.md · 63 | Copilot instructions | styleui | 54/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/lib.instructions.md · 63 | Copilot instructions | archtypesdo-not | 69/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/pages.instructions.md · 63 | Copilot instructions | archuido-not | 69/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/quality.instructions.md · 63 | Copilot instructions | lint-formatdeploymentdo-not | 63/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/reusable.instructions.md · 63 | Copilot instructions | uido-notagent-behaviour | 32/100 | 3 days ago | |
| chihebnabil/lovable-boilerplateCLAUDE.md · 63 | CLAUDE.md | setupbuildtestlint-format+5 | 89/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/core.mdc · 63 | Cursor rules | buildlint-formatarchui+1 | 92/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/components.instructions.md · 63 | Copilot instructions | styleuido-not | 61/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.github/instructions/global.instructions.md · 63 | Copilot instructions | buildlint-formatstylearch+4 | 100/100 | 3 days ago | |
| chihebnabil/lovable-boilerplate.cursor/rules/quality.mdc · 63 | Cursor rules | buildlint-formatstyleui+3 | 88/100 | 3 days ago |
Diff against .cursor/rules/design.mdc Diff against .cursor/rules/forms.mdc Diff against .cursor/rules/hooks.mdc Diff against .cursor/rules/services.mdc Diff against .cursor/rules/typescript.mdc Diff against .github/instructions/architecture.instructions.md Diff against .github/instructions/design.instructions.md Diff against .github/instructions/development.instructions.md Diff against .github/instructions/hooks.instructions.md Diff against .github/instructions/lib.instructions.md Diff against .github/instructions/pages.instructions.md Diff against .github/instructions/quality.instructions.md Diff against .github/instructions/reusable.instructions.md Diff against CLAUDE.md Diff against .cursor/rules/core.mdc Diff against .github/instructions/components.instructions.md Diff against .github/instructions/global.instructions.md Diff against .cursor/rules/quality.mdc
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 3 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 45 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 3 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 3 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 3 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 3 days ago | |
| TechSquidTV/Hermes.cursor/rules/20-hermes-api-tests.mdc · 45 | Cursor rules | teststyletesting-strategysecurity+3 | 97/100 | 3 days ago |
