IAV-225/ Add calendar feature and reorganize Community Manager components architecture
This MR adds a comprehensive calendar feature for the Community Manager agent and reorganizes all components to follow a feature-based architecture for better maintainability and scalability.
Main Feature: Calendar
Post Creation
- Manual mode: Create posts with custom media, captions, and platform selection
- Automatic mode: AI-powered post generation with customizable prompts, reference images, and inspiration URLs
- Draft management: Save posts as drafts and edit them later
- Multi-platform support: Schedule posts across multiple social media platforms simultaneously
Calendar Views
- Month view: Overview of all scheduled posts with visual indicators
- Week view: Detailed weekly schedule with time slots
- Day view: Hour-by-hour view for precise scheduling
- Agenda view: List format for quick event review
Event Management
- Multiple events per day: Handles overlapping events with overflow indicators ("+n more" links)
- Event editing: Click on any event to edit or reschedule
- Event deletion: Remove scheduled posts with confirmation dialog
- Status tracking: Visual distinction between scheduled and published posts
Filtering & Search
- Status filters: Filter by post status (scheduled, published)
- Platform filters: Filter by social media platform
- Event list: Quick access to filtered events with direct navigation
- Reset filters: One-click filter reset functionality
Additional Features
- Drafts drawer: Dedicated panel for managing draft posts with quick edit access
- Platform indicators: Visual badges showing which platforms each post targets
- Date navigation: Easy navigation between dates with "Aujourd'hui" button
Refactoring: Structure Migration
Before
components/
├── calendar-section.tsx
├── calendar-toolbar.tsx
├── calendar-filters.tsx
├── configuration-section.tsx
├── objectifs-marketing-section.tsx
├── create-post-dialog.tsx
├── integration-section.tsx
├── ...
After
components/
├── ui/
│ └── section-header/
│ ├── index.tsx
│ └── section-header.styles.ts
├── features/
│ ├── calendar/
│ │ ├── calendar-section.tsx
│ │ ├── calendar-section.styles.ts
│ │ ├── components/
│ │ │ ├── calendar-toolbar/
│ │ │ │ ├── index.tsx
│ │ │ │ └── calendar-toolbar.styles.ts
│ │ │ └── ...
│ │ └── index.ts
│ ├── configuration/
│ │ ├── configuration-section.tsx
│ │ ├── components/
│ │ │ ├── marketing-objectives.tsx
│ │ │ ├── channel-settings.tsx
│ │ │ └── platform-settings.tsx
│ │ └── index.ts
│ ├── create-post/
│ │ ├── components/
│ │ │ ├── caption-section.tsx
│ │ │ ├── mode-selector.tsx
│ │ │ ├── image-section/
│ │ │ │ ├── index.tsx
│ │ │ │ └── image-section.styles.ts
│ │ │ └── ...
│ │ ├── dialogs/
│ │ │ ├── create-post-dialog/
│ │ │ │ ├── index.tsx
│ │ │ │ └── create-post-dialog.styles.ts
│ │ │ └── ...
│ │ └── index.ts
│ ├── ideas/
│ │ ├── ideas-section.tsx
│ │ ├── ideas-section.styles.ts
│ │ ├── components/
│ │ │ ├── idea-card/
│ │ │ │ ├── index.tsx
│ │ │ │ └── idea-card.styles.ts
│ │ │ └── dialogs/
│ │ │ └── ...
│ │ └── index.ts
│ └── integrations/
│ ├── integration-section.tsx
│ ├── components/
│ │ ├── integration-card.tsx
│ │ └── integration-grid.tsx
│ └── index.ts
└── hooks/
├── use-calendar.ts
├── use-event.ts
├── use-popover.ts
└── index.ts
Key Improvements
- Feature-based organization: Each feature is self-contained in its own folder
- Style co-location: Style files are placed next to their components
-
Centralized exports:
index.tsfiles for clean imports