@sylix/coworker 2.0.11 → 2.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/dist/commands/slash/config.d.ts.map +1 -1
  2. package/dist/commands/slash/config.js +22 -4
  3. package/dist/commands/slash/config.js.map +1 -1
  4. package/dist/core/CoWorkerAgent.d.ts.map +1 -1
  5. package/dist/core/CoWorkerAgent.js +6 -3
  6. package/dist/core/CoWorkerAgent.js.map +1 -1
  7. package/dist/skills/defaults/accessibility/screen-reader-testing.md +545 -0
  8. package/dist/skills/defaults/accessibility/wcag-audit-patterns.md +555 -0
  9. package/dist/skills/defaults/ai-ml/rag.md +276 -0
  10. package/dist/skills/defaults/backend-development/api-design-principles.md +528 -0
  11. package/dist/skills/defaults/backend-development/api-design.md +285 -0
  12. package/dist/skills/defaults/backend-development/architecture-patterns.md +494 -0
  13. package/dist/skills/defaults/backend-development/async-python.md +237 -0
  14. package/dist/skills/defaults/backend-development/auth-implementation-patterns.md +638 -0
  15. package/dist/skills/defaults/backend-development/bazel-build-optimization.md +387 -0
  16. package/dist/skills/defaults/backend-development/billing-automation/SKILL.md +566 -0
  17. package/dist/skills/defaults/backend-development/code-review-excellence.md +538 -0
  18. package/dist/skills/defaults/backend-development/cqrs-implementation.md +554 -0
  19. package/dist/skills/defaults/backend-development/database-design.md +305 -0
  20. package/dist/skills/defaults/backend-development/debugging-strategies.md +536 -0
  21. package/dist/skills/defaults/backend-development/e2e-testing-patterns.md +544 -0
  22. package/dist/skills/defaults/backend-development/error-handling-patterns.md +641 -0
  23. package/dist/skills/defaults/backend-development/fastapi-templates.md +559 -0
  24. package/dist/skills/defaults/backend-development/fastapi.md +309 -0
  25. package/dist/skills/defaults/backend-development/git-advanced-workflows.md +405 -0
  26. package/dist/skills/defaults/backend-development/microservices-patterns.md +595 -0
  27. package/dist/skills/defaults/backend-development/microservices.md +284 -0
  28. package/dist/skills/defaults/backend-development/monorepo-management.md +623 -0
  29. package/dist/skills/defaults/backend-development/nodejs-backend-patterns.md +1048 -0
  30. package/dist/skills/defaults/backend-development/nx-workspace-patterns.md +457 -0
  31. package/dist/skills/defaults/backend-development/paypal-integration/SKILL.md +478 -0
  32. package/dist/skills/defaults/backend-development/pci-compliance/SKILL.md +480 -0
  33. package/dist/skills/defaults/backend-development/python-anti-patterns.md +349 -0
  34. package/dist/skills/defaults/backend-development/python-background-jobs.md +364 -0
  35. package/dist/skills/defaults/backend-development/python-code-style.md +360 -0
  36. package/dist/skills/defaults/backend-development/python-configuration.md +368 -0
  37. package/dist/skills/defaults/backend-development/python-design-patterns.md +296 -0
  38. package/dist/skills/defaults/backend-development/python-error-handling.md +323 -0
  39. package/dist/skills/defaults/backend-development/python-packaging.md +887 -0
  40. package/dist/skills/defaults/backend-development/python-performance-optimization.md +874 -0
  41. package/dist/skills/defaults/backend-development/python-project-structure.md +252 -0
  42. package/dist/skills/defaults/backend-development/python-resilience.md +376 -0
  43. package/dist/skills/defaults/backend-development/python-resource-management.md +421 -0
  44. package/dist/skills/defaults/backend-development/python-type-safety.md +428 -0
  45. package/dist/skills/defaults/backend-development/sql-optimization-patterns.md +509 -0
  46. package/dist/skills/defaults/backend-development/stripe-integration/SKILL.md +522 -0
  47. package/dist/skills/defaults/backend-development/turborepo-caching.md +376 -0
  48. package/dist/skills/defaults/blockchain/defi-protocol-templates.md +430 -0
  49. package/dist/skills/defaults/blockchain/nft-standards.md +364 -0
  50. package/dist/skills/defaults/blockchain/solidity-security.md +514 -0
  51. package/dist/skills/defaults/blockchain/web3-testing.md +360 -0
  52. package/dist/skills/defaults/business/competitive-landscape/SKILL.md +527 -0
  53. package/dist/skills/defaults/business/market-sizing-analysis/SKILL.md +451 -0
  54. package/dist/skills/defaults/business/startup-financial-modeling/SKILL.md +494 -0
  55. package/dist/skills/defaults/business/startup-metrics-framework/SKILL.md +564 -0
  56. package/dist/skills/defaults/business/team-composition-analysis.md +437 -0
  57. package/dist/skills/defaults/compliance/employment-contract-templates/SKILL.md +527 -0
  58. package/dist/skills/defaults/compliance/gdpr-data-handling/SKILL.md +630 -0
  59. package/dist/skills/defaults/data-engineering/airflow-dag-patterns.md +436 -0
  60. package/dist/skills/defaults/data-engineering/airflow.md +519 -0
  61. package/dist/skills/defaults/data-engineering/data-quality.md +583 -0
  62. package/dist/skills/defaults/data-engineering/dbt-transformation-patterns.md +482 -0
  63. package/dist/skills/defaults/data-engineering/dbt.md +556 -0
  64. package/dist/skills/defaults/data-engineering/ml-pipeline-workflow/SKILL.md +247 -0
  65. package/dist/skills/defaults/data-engineering/spark-optimization.md +348 -0
  66. package/dist/skills/defaults/data-engineering/spark.md +411 -0
  67. package/dist/skills/defaults/database/postgresql.md +202 -0
  68. package/dist/skills/defaults/debugging/systematic-debugging.md +249 -0
  69. package/dist/skills/defaults/devops/architecture-decision-records.md +448 -0
  70. package/dist/skills/defaults/devops/changelog-automation.md +580 -0
  71. package/dist/skills/defaults/devops/cicd.md +314 -0
  72. package/dist/skills/defaults/devops/cloud.md +263 -0
  73. package/dist/skills/defaults/devops/code-review-excellence.md +299 -0
  74. package/dist/skills/defaults/devops/cost-optimization.md +295 -0
  75. package/dist/skills/defaults/devops/deployment-pipeline-design.md +356 -0
  76. package/dist/skills/defaults/devops/docker.md +281 -0
  77. package/dist/skills/defaults/devops/git-workflows.md +205 -0
  78. package/dist/skills/defaults/devops/github-actions.md +311 -0
  79. package/dist/skills/defaults/devops/gitlab-ci-patterns.md +266 -0
  80. package/dist/skills/defaults/devops/hybrid-cloud-networking.md +241 -0
  81. package/dist/skills/defaults/devops/istio-traffic-management.md +327 -0
  82. package/dist/skills/defaults/devops/kubernetes.md +339 -0
  83. package/dist/skills/defaults/devops/linkerd-patterns.md +311 -0
  84. package/dist/skills/defaults/devops/multi-cloud-architecture.md +181 -0
  85. package/dist/skills/defaults/devops/observability.md +243 -0
  86. package/dist/skills/defaults/devops/openapi-spec-generation.md +1024 -0
  87. package/dist/skills/defaults/devops/postmortem-writing.md +396 -0
  88. package/dist/skills/defaults/devops/prometheus-configuration.md +265 -0
  89. package/dist/skills/defaults/devops/secrets-management.md +341 -0
  90. package/dist/skills/defaults/devops/service-mesh-observability.md +385 -0
  91. package/dist/skills/defaults/devops/terraform-module-library.md +244 -0
  92. package/dist/skills/defaults/finance/backtesting-frameworks/SKILL.md +663 -0
  93. package/dist/skills/defaults/finance/risk-metrics-calculation/SKILL.md +557 -0
  94. package/dist/skills/defaults/frontend/accessibility-compliance.md +420 -0
  95. package/dist/skills/defaults/frontend/design-system-patterns.md +337 -0
  96. package/dist/skills/defaults/frontend/interaction-design.md +327 -0
  97. package/dist/skills/defaults/frontend/javascript.md +311 -0
  98. package/dist/skills/defaults/frontend/modern-javascript-patterns.md +927 -0
  99. package/dist/skills/defaults/frontend/react-native-design.md +440 -0
  100. package/dist/skills/defaults/frontend/react.md +345 -0
  101. package/dist/skills/defaults/frontend/responsive-design.md +472 -0
  102. package/dist/skills/defaults/frontend/tailwind-design-system.md +337 -0
  103. package/dist/skills/defaults/frontend/typescript-advanced-types.md +724 -0
  104. package/dist/skills/defaults/frontend/typescript.md +334 -0
  105. package/dist/skills/defaults/frontend/visual-design-foundations.md +326 -0
  106. package/dist/skills/defaults/frontend/web-component-design.md +279 -0
  107. package/dist/skills/defaults/game-development/godot-gdscript-patterns.md +188 -0
  108. package/dist/skills/defaults/game-development/unity-ecs-patterns.md +594 -0
  109. package/dist/skills/defaults/kubernetes/gitops-workflow.md +285 -0
  110. package/dist/skills/defaults/kubernetes/gitops.md +280 -0
  111. package/dist/skills/defaults/kubernetes/helm-chart-scaffolding.md +553 -0
  112. package/dist/skills/defaults/kubernetes/helm.md +343 -0
  113. package/dist/skills/defaults/kubernetes/k8s-manifest-generator.md +501 -0
  114. package/dist/skills/defaults/kubernetes/k8s-security-policies.md +342 -0
  115. package/dist/skills/defaults/kubernetes/manifests.md +330 -0
  116. package/dist/skills/defaults/kubernetes/security.md +337 -0
  117. package/dist/skills/defaults/llm-application/embedding-strategies.md +608 -0
  118. package/dist/skills/defaults/llm-application/hybrid-search-implementation.md +570 -0
  119. package/dist/skills/defaults/llm-application/hybrid-search.md +570 -0
  120. package/dist/skills/defaults/llm-application/langchain-architecture.md +666 -0
  121. package/dist/skills/defaults/llm-application/langchain.md +259 -0
  122. package/dist/skills/defaults/llm-application/llm-evaluation.md +695 -0
  123. package/dist/skills/defaults/llm-application/prompt-engineering-patterns.md +449 -0
  124. package/dist/skills/defaults/llm-application/prompt-engineering.md +219 -0
  125. package/dist/skills/defaults/llm-application/rag-implementation.md +434 -0
  126. package/dist/skills/defaults/llm-application/similarity-search-patterns.md +560 -0
  127. package/dist/skills/defaults/llm-application/similarity-search.md +560 -0
  128. package/dist/skills/defaults/llm-application/vector-index-tuning.md +523 -0
  129. package/dist/skills/defaults/mobile/mobile-android-design.md +440 -0
  130. package/dist/skills/defaults/mobile/mobile-ios-design.md +266 -0
  131. package/dist/skills/defaults/monitoring/distributed-tracing.md +436 -0
  132. package/dist/skills/defaults/monitoring/grafana-dashboards.md +370 -0
  133. package/dist/skills/defaults/monitoring/prometheus-configuration.md +379 -0
  134. package/dist/skills/defaults/monitoring/slo-implementation.md +323 -0
  135. package/dist/skills/defaults/refactoring/code-refactoring.md +349 -0
  136. package/dist/skills/defaults/security/anti-reversing-techniques/SKILL.md +559 -0
  137. package/dist/skills/defaults/security/auditor.md +168 -0
  138. package/dist/skills/defaults/security/binary-analysis-patterns/SKILL.md +438 -0
  139. package/dist/skills/defaults/security/memory-forensics/SKILL.md +483 -0
  140. package/dist/skills/defaults/security/mtls-configuration.md +349 -0
  141. package/dist/skills/defaults/security/protocol-reverse-engineering/SKILL.md +520 -0
  142. package/dist/skills/defaults/security/sast-configuration.md +182 -0
  143. package/dist/skills/defaults/security/security.md +313 -0
  144. package/dist/skills/defaults/security/stride-analysis.md +273 -0
  145. package/dist/skills/defaults/security/threat-mitigation-mapping.md +290 -0
  146. package/dist/skills/defaults/systems/bash-defensive-patterns/SKILL.md +539 -0
  147. package/dist/skills/defaults/systems/bats-testing-patterns/SKILL.md +631 -0
  148. package/dist/skills/defaults/systems/go-concurrency-patterns.md +657 -0
  149. package/dist/skills/defaults/systems/memory-safety-patterns.md +605 -0
  150. package/dist/skills/defaults/systems/rust-async-patterns.md +519 -0
  151. package/dist/skills/defaults/systems/shellcheck-configuration/SKILL.md +456 -0
  152. package/dist/skills/defaults/team-collaboration/multi-reviewer-patterns.md +126 -0
  153. package/dist/skills/defaults/team-collaboration/parallel-feature-development.md +151 -0
  154. package/dist/skills/defaults/testing/javascript-testing-patterns.md +1021 -0
  155. package/dist/skills/defaults/testing/python-testing-patterns.md +351 -0
  156. package/dist/skills/defaults/testing/testing.md +332 -0
  157. package/dist/skills/defaults/workflows/context-driven-development.md +384 -0
  158. package/dist/skills/defaults/workflows/track-management.md +592 -0
  159. package/dist/skills/defaults/workflows/workflow-patterns.md +622 -0
  160. package/dist/skills/index.d.ts +11 -0
  161. package/dist/skills/index.d.ts.map +1 -0
  162. package/dist/skills/index.js +129 -0
  163. package/dist/skills/index.js.map +1 -0
  164. package/dist/utils/character.js +4 -4
  165. package/dist/utils/character.js.map +1 -1
  166. package/dist/utils/inputbar.d.ts.map +1 -1
  167. package/dist/utils/inputbar.js +7 -0
  168. package/dist/utils/inputbar.js.map +1 -1
  169. package/package.json +1 -1
@@ -0,0 +1,440 @@
1
+ ---
2
+ name: react-native-design
3
+ description: Master React Native styling, navigation, and Reanimated animations for cross-platform mobile development. Use when building React Native apps, implementing navigation patterns, or creating performant animations.
4
+ ---
5
+
6
+ # React Native Design
7
+
8
+ Master React Native styling patterns, React Navigation, and Reanimated 3 to build performant, cross-platform mobile applications with native-quality user experiences.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Building cross-platform mobile apps with React Native
13
+ - Implementing navigation with React Navigation 6+
14
+ - Creating performant animations with Reanimated 3
15
+ - Styling components with StyleSheet and styled-components
16
+ - Building responsive layouts for different screen sizes
17
+ - Implementing platform-specific designs (iOS/Android)
18
+ - Creating gesture-driven interactions with Gesture Handler
19
+ - Optimizing React Native performance
20
+
21
+ ## Core Concepts
22
+
23
+ ### 1. StyleSheet and Styling
24
+
25
+ **Basic StyleSheet:**
26
+
27
+ ```typescript
28
+ import { StyleSheet, View, Text } from 'react-native';
29
+
30
+ const styles = StyleSheet.create({
31
+ container: {
32
+ flex: 1,
33
+ padding: 16,
34
+ backgroundColor: '#ffffff',
35
+ },
36
+ title: {
37
+ fontSize: 24,
38
+ fontWeight: '600',
39
+ color: '#1a1a1a',
40
+ marginBottom: 8,
41
+ },
42
+ subtitle: {
43
+ fontSize: 16,
44
+ color: '#666666',
45
+ lineHeight: 24,
46
+ },
47
+ });
48
+
49
+ function Card() {
50
+ return (
51
+ <View style={styles.container}>
52
+ <Text style={styles.title}>Title</Text>
53
+ <Text style={styles.subtitle}>Subtitle text</Text>
54
+ </View>
55
+ );
56
+ }
57
+ ```
58
+
59
+ **Dynamic Styles:**
60
+
61
+ ```typescript
62
+ interface CardProps {
63
+ variant: 'primary' | 'secondary';
64
+ disabled?: boolean;
65
+ }
66
+
67
+ function Card({ variant, disabled }: CardProps) {
68
+ return (
69
+ <View style={[
70
+ styles.card,
71
+ variant === 'primary' ? styles.primary : styles.secondary,
72
+ disabled && styles.disabled,
73
+ ]}>
74
+ <Text style={styles.text}>Content</Text>
75
+ </View>
76
+ );
77
+ }
78
+
79
+ const styles = StyleSheet.create({
80
+ card: {
81
+ padding: 16,
82
+ borderRadius: 12,
83
+ },
84
+ primary: {
85
+ backgroundColor: '#6366f1',
86
+ },
87
+ secondary: {
88
+ backgroundColor: '#f3f4f6',
89
+ borderWidth: 1,
90
+ borderColor: '#e5e7eb',
91
+ },
92
+ disabled: {
93
+ opacity: 0.5,
94
+ },
95
+ text: {
96
+ fontSize: 16,
97
+ },
98
+ });
99
+ ```
100
+
101
+ ### 2. Flexbox Layout
102
+
103
+ **Row and Column Layouts:**
104
+
105
+ ```typescript
106
+ const styles = StyleSheet.create({
107
+ // Vertical stack (column)
108
+ column: {
109
+ flexDirection: "column",
110
+ gap: 12,
111
+ },
112
+ // Horizontal stack (row)
113
+ row: {
114
+ flexDirection: "row",
115
+ alignItems: "center",
116
+ gap: 8,
117
+ },
118
+ // Space between items
119
+ spaceBetween: {
120
+ flexDirection: "row",
121
+ justifyContent: "space-between",
122
+ alignItems: "center",
123
+ },
124
+ // Centered content
125
+ centered: {
126
+ flex: 1,
127
+ justifyContent: "center",
128
+ alignItems: "center",
129
+ },
130
+ // Fill remaining space
131
+ fill: {
132
+ flex: 1,
133
+ },
134
+ });
135
+ ```
136
+
137
+ ### 3. React Navigation Setup
138
+
139
+ **Stack Navigator:**
140
+
141
+ ```typescript
142
+ import { NavigationContainer } from '@react-navigation/native';
143
+ import { createNativeStackNavigator } from '@react-navigation/native-stack';
144
+
145
+ type RootStackParamList = {
146
+ Home: undefined;
147
+ Detail: { itemId: string };
148
+ Settings: undefined;
149
+ };
150
+
151
+ const Stack = createNativeStackNavigator<RootStackParamList>();
152
+
153
+ function AppNavigator() {
154
+ return (
155
+ <NavigationContainer>
156
+ <Stack.Navigator
157
+ initialRouteName="Home"
158
+ screenOptions={{
159
+ headerStyle: { backgroundColor: '#6366f1' },
160
+ headerTintColor: '#ffffff',
161
+ headerTitleStyle: { fontWeight: '600' },
162
+ }}
163
+ >
164
+ <Stack.Screen
165
+ name="Home"
166
+ component={HomeScreen}
167
+ options={{ title: 'Home' }}
168
+ />
169
+ <Stack.Screen
170
+ name="Detail"
171
+ component={DetailScreen}
172
+ options={({ route }) => ({
173
+ title: `Item ${route.params.itemId}`,
174
+ })}
175
+ />
176
+ <Stack.Screen name="Settings" component={SettingsScreen} />
177
+ </Stack.Navigator>
178
+ </NavigationContainer>
179
+ );
180
+ }
181
+ ```
182
+
183
+ **Tab Navigator:**
184
+
185
+ ```typescript
186
+ import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
187
+ import { Ionicons } from '@expo/vector-icons';
188
+
189
+ type TabParamList = {
190
+ Home: undefined;
191
+ Search: undefined;
192
+ Profile: undefined;
193
+ };
194
+
195
+ const Tab = createBottomTabNavigator<TabParamList>();
196
+
197
+ function TabNavigator() {
198
+ return (
199
+ <Tab.Navigator
200
+ screenOptions={({ route }) => ({
201
+ tabBarIcon: ({ focused, color, size }) => {
202
+ const icons: Record<string, keyof typeof Ionicons.glyphMap> = {
203
+ Home: focused ? 'home' : 'home-outline',
204
+ Search: focused ? 'search' : 'search-outline',
205
+ Profile: focused ? 'person' : 'person-outline',
206
+ };
207
+ return <Ionicons name={icons[route.name]} size={size} color={color} />;
208
+ },
209
+ tabBarActiveTintColor: '#6366f1',
210
+ tabBarInactiveTintColor: '#9ca3af',
211
+ })}
212
+ >
213
+ <Tab.Screen name="Home" component={HomeScreen} />
214
+ <Tab.Screen name="Search" component={SearchScreen} />
215
+ <Tab.Screen name="Profile" component={ProfileScreen} />
216
+ </Tab.Navigator>
217
+ );
218
+ }
219
+ ```
220
+
221
+ ### 4. Reanimated 3 Basics
222
+
223
+ **Animated Values:**
224
+
225
+ ```typescript
226
+ import Animated, {
227
+ useSharedValue,
228
+ useAnimatedStyle,
229
+ withSpring,
230
+ withTiming,
231
+ } from 'react-native-reanimated';
232
+
233
+ function AnimatedBox() {
234
+ const scale = useSharedValue(1);
235
+ const opacity = useSharedValue(1);
236
+
237
+ const animatedStyle = useAnimatedStyle(() => ({
238
+ transform: [{ scale: scale.value }],
239
+ opacity: opacity.value,
240
+ }));
241
+
242
+ const handlePress = () => {
243
+ scale.value = withSpring(1.2, {}, () => {
244
+ scale.value = withSpring(1);
245
+ });
246
+ };
247
+
248
+ return (
249
+ <Pressable onPress={handlePress}>
250
+ <Animated.View style={[styles.box, animatedStyle]} />
251
+ </Pressable>
252
+ );
253
+ }
254
+ ```
255
+
256
+ **Gesture Handler Integration:**
257
+
258
+ ```typescript
259
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
260
+ import Animated, {
261
+ useSharedValue,
262
+ useAnimatedStyle,
263
+ withSpring,
264
+ } from 'react-native-reanimated';
265
+
266
+ function DraggableCard() {
267
+ const translateX = useSharedValue(0);
268
+ const translateY = useSharedValue(0);
269
+
270
+ const gesture = Gesture.Pan()
271
+ .onUpdate((event) => {
272
+ translateX.value = event.translationX;
273
+ translateY.value = event.translationY;
274
+ })
275
+ .onEnd(() => {
276
+ translateX.value = withSpring(0);
277
+ translateY.value = withSpring(0);
278
+ });
279
+
280
+ const animatedStyle = useAnimatedStyle(() => ({
281
+ transform: [
282
+ { translateX: translateX.value },
283
+ { translateY: translateY.value },
284
+ ],
285
+ }));
286
+
287
+ return (
288
+ <GestureDetector gesture={gesture}>
289
+ <Animated.View style={[styles.card, animatedStyle]}>
290
+ <Text>Drag me!</Text>
291
+ </Animated.View>
292
+ </GestureDetector>
293
+ );
294
+ }
295
+ ```
296
+
297
+ ### 5. Platform-Specific Styling
298
+
299
+ ```typescript
300
+ import { Platform, StyleSheet } from "react-native";
301
+
302
+ const styles = StyleSheet.create({
303
+ container: {
304
+ padding: 16,
305
+ ...Platform.select({
306
+ ios: {
307
+ shadowColor: "#000",
308
+ shadowOffset: { width: 0, height: 2 },
309
+ shadowOpacity: 0.1,
310
+ shadowRadius: 4,
311
+ },
312
+ android: {
313
+ elevation: 4,
314
+ },
315
+ }),
316
+ },
317
+ text: {
318
+ fontFamily: Platform.OS === "ios" ? "SF Pro Text" : "Roboto",
319
+ fontSize: 16,
320
+ },
321
+ });
322
+
323
+ // Platform-specific components
324
+ import { Platform } from "react-native";
325
+ const StatusBarHeight = Platform.OS === "ios" ? 44 : 0;
326
+ ```
327
+
328
+ ## Quick Start Component
329
+
330
+ ```typescript
331
+ import React from 'react';
332
+ import {
333
+ View,
334
+ Text,
335
+ StyleSheet,
336
+ Pressable,
337
+ Image,
338
+ } from 'react-native';
339
+ import Animated, {
340
+ useSharedValue,
341
+ useAnimatedStyle,
342
+ withSpring,
343
+ } from 'react-native-reanimated';
344
+
345
+ interface ItemCardProps {
346
+ title: string;
347
+ subtitle: string;
348
+ imageUrl: string;
349
+ onPress: () => void;
350
+ }
351
+
352
+ const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
353
+
354
+ export function ItemCard({ title, subtitle, imageUrl, onPress }: ItemCardProps) {
355
+ const scale = useSharedValue(1);
356
+
357
+ const animatedStyle = useAnimatedStyle(() => ({
358
+ transform: [{ scale: scale.value }],
359
+ }));
360
+
361
+ return (
362
+ <AnimatedPressable
363
+ style={[styles.card, animatedStyle]}
364
+ onPress={onPress}
365
+ onPressIn={() => { scale.value = withSpring(0.97); }}
366
+ onPressOut={() => { scale.value = withSpring(1); }}
367
+ >
368
+ <Image source={{ uri: imageUrl }} style={styles.image} />
369
+ <View style={styles.content}>
370
+ <Text style={styles.title} numberOfLines={1}>
371
+ {title}
372
+ </Text>
373
+ <Text style={styles.subtitle} numberOfLines={2}>
374
+ {subtitle}
375
+ </Text>
376
+ </View>
377
+ </AnimatedPressable>
378
+ );
379
+ }
380
+
381
+ const styles = StyleSheet.create({
382
+ card: {
383
+ backgroundColor: '#ffffff',
384
+ borderRadius: 16,
385
+ overflow: 'hidden',
386
+ shadowColor: '#000',
387
+ shadowOffset: { width: 0, height: 2 },
388
+ shadowOpacity: 0.1,
389
+ shadowRadius: 8,
390
+ elevation: 4,
391
+ },
392
+ image: {
393
+ width: '100%',
394
+ height: 160,
395
+ backgroundColor: '#f3f4f6',
396
+ },
397
+ content: {
398
+ padding: 16,
399
+ gap: 4,
400
+ },
401
+ title: {
402
+ fontSize: 18,
403
+ fontWeight: '600',
404
+ color: '#1f2937',
405
+ },
406
+ subtitle: {
407
+ fontSize: 14,
408
+ color: '#6b7280',
409
+ lineHeight: 20,
410
+ },
411
+ });
412
+ ```
413
+
414
+ ## Best Practices
415
+
416
+ 1. **Use TypeScript**: Define navigation and prop types for type safety
417
+ 2. **Memoize Components**: Use `React.memo` and `useCallback` to prevent unnecessary rerenders
418
+ 3. **Run Animations on UI Thread**: Use Reanimated worklets for 60fps animations
419
+ 4. **Avoid Inline Styles**: Use StyleSheet.create for performance
420
+ 5. **Handle Safe Areas**: Use `SafeAreaView` or `useSafeAreaInsets`
421
+ 6. **Test on Real Devices**: Simulator/emulator performance differs from real devices
422
+ 7. **Use FlatList for Lists**: Never use ScrollView with map for long lists
423
+ 8. **Platform-Specific Code**: Use Platform.select for iOS/Android differences
424
+
425
+ ## Common Issues
426
+
427
+ - **Gesture Conflicts**: Wrap gestures with `GestureDetector` and use `simultaneousHandlers`
428
+ - **Navigation Type Errors**: Define `ParamList` types for all navigators
429
+ - **Animation Jank**: Move animations to UI thread with `runOnUI` worklets
430
+ - **Memory Leaks**: Cancel animations and cleanup in useEffect
431
+ - **Font Loading**: Use `expo-font` or `react-native-asset` for custom fonts
432
+ - **Safe Area Issues**: Test on notched devices (iPhone, Android with cutouts)
433
+
434
+ ## Resources
435
+
436
+ - [React Native Documentation](https://reactnative.dev/)
437
+ - [React Navigation](https://reactnavigation.org/)
438
+ - [Reanimated Documentation](https://docs.swmansion.com/react-native-reanimated/)
439
+ - [Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/)
440
+ - [Expo Documentation](https://docs.expo.dev/)