mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-19 00:41:24 +02:00
feat(contacts): integrate contacts into Todo and Calendar apps
- Add ContactSelector, ContactBadge, ContactAvatar to shared-ui - Add ContactsClient API service to shared-auth - Add ContactReference, ContactSummary types to shared-types - Todo: Add assignee and involvedContacts to tasks with UI in TaskEditModal - Todo: Display contacts in TaskItem and KanbanTaskCard - Calendar: Add AttendeeSelector with RSVP status support - Calendar: Integrate attendees in EventForm - Calendar: Add task drag-drop to calendar views (Day/Week/MultiDay) - Contacts: Add ContactTasks component to show related tasks - Backend: Add findByContact endpoint to Todo task service - UI polish: glassmorphism styling, keyboard navigation, auto-focus 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
307f1ae22e
commit
0ecbf69ebc
50 changed files with 5791 additions and 53 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import type { Label } from './label';
|
||||
import type { ContactReference } from '@manacore/shared-types';
|
||||
|
||||
export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
|
||||
export type TaskStatus = 'pending' | 'in_progress' | 'completed' | 'cancelled';
|
||||
|
|
@ -26,6 +27,9 @@ export interface TaskMetadata {
|
|||
storyPoints?: number | null; // Fibonacci: 1, 2, 3, 5, 8, 13, 21
|
||||
effectiveDuration?: EffectiveDuration | null; // Actual time spent
|
||||
funRating?: number | null; // 1-10 scale
|
||||
// Contact associations
|
||||
assignee?: ContactReference | null; // Person responsible for the task
|
||||
involvedContacts?: ContactReference[]; // Other people involved
|
||||
}
|
||||
|
||||
export interface Task {
|
||||
|
|
@ -43,6 +47,12 @@ export interface Task {
|
|||
dueTime?: string | null; // HH:mm format
|
||||
startDate?: Date | string | null;
|
||||
|
||||
// Time-Blocking (for calendar integration)
|
||||
scheduledDate?: Date | string | null; // Date when task is scheduled
|
||||
scheduledStartTime?: string | null; // HH:mm format - when to start
|
||||
scheduledEndTime?: string | null; // HH:mm format - when to end
|
||||
estimatedDuration?: number | null; // Duration in minutes
|
||||
|
||||
// Priority & Status
|
||||
priority: TaskPriority;
|
||||
status: TaskStatus;
|
||||
|
|
@ -84,6 +94,11 @@ export interface CreateTaskInput {
|
|||
dueDate?: string | null;
|
||||
dueTime?: string | null;
|
||||
startDate?: string | null;
|
||||
// Time-Blocking
|
||||
scheduledDate?: string | null;
|
||||
scheduledStartTime?: string | null;
|
||||
scheduledEndTime?: string | null;
|
||||
estimatedDuration?: number | null;
|
||||
priority?: TaskPriority;
|
||||
recurrenceRule?: string | null;
|
||||
recurrenceEndDate?: string | null;
|
||||
|
|
@ -100,6 +115,11 @@ export interface UpdateTaskInput {
|
|||
dueDate?: string | null;
|
||||
dueTime?: string | null;
|
||||
startDate?: string | null;
|
||||
// Time-Blocking
|
||||
scheduledDate?: string | null;
|
||||
scheduledStartTime?: string | null;
|
||||
scheduledEndTime?: string | null;
|
||||
estimatedDuration?: number | null;
|
||||
priority?: TaskPriority;
|
||||
status?: TaskStatus;
|
||||
isCompleted?: boolean;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue