feat: add mobile application structure with emotion picker and API integration

- Added favicon and icon assets for the mobile app.
- Implemented EmotionPicker component for selecting emotions with child options.
- Created hooks for fetching emotions, feeds, and rapport data.
- Established API service for handling requests and authentication.
- Integrated Zustand for state management of user authentication.
- Defined color palette for the application.
- Set up TypeScript types for various entities including User, Emotion, and Feed.
- Configured Babel and TypeScript for the mobile project.
- Added package.json with necessary dependencies for Expo and React Native.
This commit is contained in:
Azmog
2026-04-15 16:09:20 +02:00
parent 88f5863cb5
commit bfd35905c9
60 changed files with 2437 additions and 42 deletions
+12 -1
View File
@@ -2,14 +2,16 @@
import { useState } from 'react';
import Link from 'next/link';
import { Plus, Filter, Calendar } from 'lucide-react';
import { Plus, Filter } from 'lucide-react';
import { useSaisies, useDeleteSaisie } from '@/hooks/useTracker';
import { useEmotions } from '@/hooks/useEmotions';
import TrackerTimeline from '@/components/features/TrackerTimeline';
import EditSaisieModal from '@/components/features/EditSaisieModal';
import Button from '@/components/ui/Button';
import Card from '@/components/ui/Card';
import Skeleton from '@/components/ui/Skeleton';
import toast from 'react-hot-toast';
import type { SaisieTracker } from '@/types';
export default function JournalPage() {
const [showFilters, setShowFilters] = useState(false);
@@ -18,6 +20,7 @@ export default function JournalPage() {
date_fin?: string;
emotion_id?: number;
}>({});
const [editingSaisie, setEditingSaisie] = useState<SaisieTracker | null>(null);
const { data: saisies, isLoading } = useSaisies(filters);
const { data: emotions } = useEmotions();
@@ -134,9 +137,17 @@ export default function JournalPage() {
) : (
<TrackerTimeline
saisies={saisies || []}
onEdit={(saisie) => setEditingSaisie(saisie)}
onDelete={handleDelete}
/>
)}
{/* Modale d'édition */}
<EditSaisieModal
saisie={editingSaisie}
isOpen={!!editingSaisie}
onClose={() => setEditingSaisie(null)}
/>
</div>
);
}