Skip to main content

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

subject
string
required
Subject name
emoji
string
required
Subject emoji icon
title
string
required
Task title (hidden, description is shown)
color
string
required
Subject color (hex)
description
string
required
Task description (HTML formatted)
date
Date
required
Due date
completed
boolean
required
Completion status
hasAttachments
boolean
required
Whether task has attachments
magic
string
Special AI-generated info label
onToggle
() => void
required
Callback when completion status is toggled
onPress
() => void
required
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>
  );
}

Build docs developers (and LLMs) love