Task
The Task component displays homework assignments with completion tracking, attachments, and due dates.
Import
import { Task } from 'papillon-ui';
Basic Usage
<Task
subject="Mathematics"
emoji="📐"
title="Chapter 5 Exercises"
color="#4A90E2"
description="Complete exercises 1-10 on page 45"
date={new Date()}
completed={false}
hasAttachments={false}
onToggle={() => {}}
onPress={() => {}}
/>
Props
Task title (hidden, description is shown)
Task description (HTML formatted)
Whether task has attachments
Special AI-generated info label
Callback when completion status is toggled
Callback when task card is pressed
Examples
Incomplete Task
<Task
subject="Physics"
emoji="⚛️"
title="Lab Report"
color="#10B981"
description="Write a lab report on the pendulum experiment"
date={new Date(Date.now() + 86400000)}
completed={false}
hasAttachments={true}
onToggle={handleToggle}
onPress={handlePress}
/>
Completed Task
<Task
subject="Literature"
emoji="📚"
title="Reading"
color="#8B5CF6"
description="Read chapters 3-5 of The Great Gatsby"
date={new Date()}
completed={true}
hasAttachments={false}
onToggle={handleToggle}
onPress={handlePress}
/>
Task with AI Info
<Task
subject="Mathematics"
emoji="📐"
title="Homework"
color="#4A90E2"
description="Complete the geometry worksheet"
date={new Date()}
completed={false}
hasAttachments={false}
magic="Examen dans 2 jours"
onToggle={handleToggle}
onPress={handlePress}
/>
Full Example
import { Task } from 'papillon-ui';
import { View } from 'react-native';
function HomeworkList({ tasks, onToggleTask }) {
return (
<View style={{ gap: 12 }}>
{tasks.map(task => (
<Task
key={task.id}
subject={task.subject}
emoji={task.emoji}
title={task.title}
color={task.color}
description={task.description}
date={new Date(task.dueDate)}
completed={task.completed}
hasAttachments={task.attachments?.length > 0}
magic={task.aiInfo}
onToggle={() => onToggleTask(task.id)}
onPress={() => navigate('TaskDetail', { id: task.id })}
/>
))}
</View>
);
}