Generate React Native components styled with NativeWind (Tailwind CSS).
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
name: nativewind-generator description: "Generate React Native components styled with NativeWind (Tailwind CSS)." autoInvoke: false priority: medium triggers:
Category: Mobile Development Version: 1.0.0 Dependencies: React Native, Expo, NativeWind, Tailwind CSS
Generate React Native components styled with NativeWind (Tailwind CSS) for cross-platform mobile applications.
// ✅ Preferred: NativeWind
<View className="flex-1 bg-white p-4 rounded-lg shadow-md">
<Text className="text-xl font-bold text-gray-900">Hello</Text>
</View>
// ❌ Avoid: Manual StyleSheet
<View style={styles.container}>
<Text style={styles.title}>Hello</Text>
</View>
<View className={`p-4 ${isTablet ? 'flex-row' : 'flex-col'}`}>
<Text className={isTablet ? 'text-2xl' : 'text-lg'}>Responsive</Text>
</View>
<View className="bg-white dark:bg-gray-900">
<Text className="text-gray-900 dark:text-white">Dark Mode Ready</Text>
</View>
<Pressable
className={({ pressed }) => `p-4 rounded-lg ${pressed ? 'bg-gray-200' : 'bg-white'}`}
>
<Text>Pressable</Text>
</Pressable>
// UserProfile.phone.tsx
import { View, Text, ScrollView, TouchableOpacity } from 'react-native';
import { SafeAreaView } from 'react-native-safe-area-context';
interface UserProfileProps {
userId: string;
onEdit?: () => void;
}
export const UserProfilePhone: React.FC<UserProfileProps> = ({ onEdit }) => (
<SafeAreaView className="flex-1 bg-gray-50">
<ScrollView className="flex-1">
<View className="bg-white px-4 py-6 items-center">
<Text className="text-2xl font-bold text-gray-900">John Doe</Text>
<Text className="text-base text-gray-500">john@example.com</Text>
</View>
<View className="p-4">
<TouchableOpacity
onPress={onEdit}
className="bg-blue-500 px-6 py-4 rounded-lg active:bg-blue-600"
>
<Text className="text-white text-center font-semibold">Edit Profile</Text>
</TouchableOpacity>
</View>
</ScrollView>
</SafeAreaView>
);
// LoginForm.tsx
import { View, Text, TextInput, TouchableOpacity, ActivityIndicator } from 'react-native';
interface LoginFormProps {
onSubmit: (email: string, password: string) => Promise<void>;
}
export const LoginForm: React.FC<LoginFormProps> = ({ onSubmit }) => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const [loading, setLoading] = useState(false);
return (
<View className="bg-white rounded-2xl p-6 shadow-xl">
<Text className="text-2xl font-bold text-gray-900 mb-6">Welcome Back</Text>
<View className="mb-4">
<Text className="text-sm font-medium text-gray-700 mb-2">Email</Text>
<TextInput
value={email}
onChangeText={setEmail}
className="bg-gray-50 border border-gray-300 rounded-lg px-4 py-3"
/>
</View>
<TouchableOpacity
onPress={() => onSubmit(email, password)}
disabled={loading}
className={`py-4 rounded-lg ${loading ? 'bg-gray-300' : 'bg-blue-500'}`}
>
{loading ? <ActivityIndicator color="white" /> : (
<Text className="text-white text-center font-semibold">Sign In</Text>
)}
</TouchableOpacity>
</View>
);
};
| Pattern | NativeWind Class |
|---|---|
| Flex container | flex-1 |
| Padding 16px | p-4 |
| Margin top 8px | mt-2 |
| Background white | bg-white |
| Text 16px | text-base |
| Font bold | font-bold |
| Center items | items-center |
| Border radius 8px | rounded-lg |
| Shadow | shadow-md |
// List Item
<View className="bg-white border-b border-gray-200 p-4">
<Text className="text-base font-semibold">Title</Text>
</View>
// Card with Shadow
<View className="bg-white rounded-xl shadow-lg p-6 mb-4" />
// Badge
<View className="bg-blue-100 px-3 py-1 rounded-full">
<Text className="text-blue-800 text-xs font-medium">New</Text>
</View>
// Flex Row
<View className="flex-row justify-between items-center">
<Text>Left</Text>
<Text>Right</Text>
</View>
components/
├── UserProfile/
│ ├── UserProfile.tsx # Main (shared logic)
│ ├── UserProfile.phone.tsx # Phone layout
│ ├── UserProfile.tablet.tsx # Tablet layout
│ └── index.ts # Barrel export
// tailwind.config.js
module.exports = {
content: ["./App.{js,tsx}", "./src/**/*.{js,tsx}"],
theme: {
extend: {
colors: {
primary: { 500: '#0ea5e9', 600: '#0284c7' },
success: { 500: '#10b981' },
error: { 500: '#ef4444' }
}
}
}
};
References: NativeWind | Tailwind CSS Version: 1.0.0 | Last Updated: 2025-11-28