mirror of
https://github.com/R0m1k3/Socialflow.git
synced 2026-10-21 22:18:12 +02:00
feat: Ajouter versions mobiles complètes pour toutes les pages
Implémentation d'un système responsive robuste avec détection automatique du type d'appareil et switch transparent entre versions desktop et mobile. ## Nouvelles fonctionnalités ### 1. Hook de détection mobile (useIsMobile) - Détection via media query (max-width: 768px) - Validation supplémentaire via user agent - Support des changements dynamiques de taille d'écran - Hook useDeviceType pour détection granulaire (mobile/tablet/desktop) ### 2. Composant ResponsiveRoute - Switch automatique entre versions desktop/mobile - Lazy loading des composants pour performances optimales - Factory function createResponsiveRoute pour création facile - Suspense avec fallback de chargement ### 3. Pages mobiles optimisées (10 pages) **Pages créées :** - dashboard.tsx - Tableau de bord - new-post.tsx - Création de posts (interface tactile optimisée) - calendar.tsx - Calendrier - media.tsx - Bibliothèque de médias - image-editor.tsx - Éditeur d'images - pages.tsx - Gestion des pages sociales - ai.tsx - Assistant IA (admin) - settings.tsx - Paramètres (admin) - users-admin.tsx - Gestion utilisateurs (admin) - sql.tsx - Administration SQL (admin) **Optimisations mobiles appliquées :** - Layout en colonne unique (au lieu de multi-colonnes) - Boutons tactiles : min-height 44-52px (Apple guidelines) - Grilles adaptées (2 colonnes au lieu de 3 pour médias) - Navigation simplifiée avec menu hamburger - Dialogs en plein écran (95vw sur mobile) - Tables converties en cards empilées - Boutons d'action en colonne au lieu de ligne - Padding et espacement optimisés pour petits écrans - Typographie réduite (text-2xl au lieu de 3xl) - Touch-manipulation sur zones interactives - Bottom fixed buttons pour actions principales - Inputs full-width avec min-height 48px ### 4. Routing automatique - App.tsx modifié pour utiliser createResponsiveRoute - Détection transparente du device - Lazy loading de toutes les routes - Aucun changement d'URL entre versions ## Performances - Code splitting automatique (lazy loading) - Seule la version nécessaire est chargée - Cache des composants chargés - Réduction de la taille du bundle initial ## Tests à effectuer 1. Rétrécir la fenêtre du navigateur < 768px 2. Utiliser les DevTools mobile 3. Tester sur un vrai appareil mobile 4. Vérifier que toutes les fonctionnalités marchent Les utilisateurs bénéficient maintenant d'une expérience optimale sur mobile !
This commit is contained in:
13 files changed
+3647
-10
No files matched your search
+52
-10
@@ -4,19 +4,61 @@ import { queryClient } from "./lib/queryClient";
|
||||
import { QueryClientProvider, useQuery } from "@tanstack/react-query";
|
||||
import { Toaster } from "@/components/ui/toaster";
|
||||
import { TooltipProvider } from "@/components/ui/tooltip";
|
||||
import { createResponsiveRoute } from "@/components/responsive-route";
|
||||
import NotFound from "@/pages/not-found";
|
||||
import Login from "@/pages/login";
|
||||
import Dashboard from "@/pages/dashboard";
|
||||
import NewPost from "@/pages/new-post";
|
||||
import Calendar from "@/pages/calendar";
|
||||
import Media from "@/pages/media";
|
||||
import ImageEditor from "@/pages/image-editor";
|
||||
import PagesManagement from "@/pages/pages";
|
||||
import AI from "@/pages/ai";
|
||||
import History from "@/pages/history";
|
||||
import Settings from "@/pages/settings";
|
||||
import SqlAdmin from "@/pages/sql";
|
||||
import UsersAdmin from "@/pages/users-admin";
|
||||
|
||||
// Create responsive routes with lazy loading for optimal performance
|
||||
const Dashboard = createResponsiveRoute(
|
||||
() => import("@/pages/dashboard"),
|
||||
() => import("@/pages/mobile/dashboard")
|
||||
);
|
||||
|
||||
const NewPost = createResponsiveRoute(
|
||||
() => import("@/pages/new-post"),
|
||||
() => import("@/pages/mobile/new-post")
|
||||
);
|
||||
|
||||
const Calendar = createResponsiveRoute(
|
||||
() => import("@/pages/calendar"),
|
||||
() => import("@/pages/mobile/calendar")
|
||||
);
|
||||
|
||||
const Media = createResponsiveRoute(
|
||||
() => import("@/pages/media"),
|
||||
() => import("@/pages/mobile/media")
|
||||
);
|
||||
|
||||
const ImageEditor = createResponsiveRoute(
|
||||
() => import("@/pages/image-editor"),
|
||||
() => import("@/pages/mobile/image-editor")
|
||||
);
|
||||
|
||||
const PagesManagement = createResponsiveRoute(
|
||||
() => import("@/pages/pages"),
|
||||
() => import("@/pages/mobile/pages")
|
||||
);
|
||||
|
||||
const AI = createResponsiveRoute(
|
||||
() => import("@/pages/ai"),
|
||||
() => import("@/pages/mobile/ai")
|
||||
);
|
||||
|
||||
const Settings = createResponsiveRoute(
|
||||
() => import("@/pages/settings"),
|
||||
() => import("@/pages/mobile/settings")
|
||||
);
|
||||
|
||||
const SqlAdmin = createResponsiveRoute(
|
||||
() => import("@/pages/sql"),
|
||||
() => import("@/pages/mobile/sql")
|
||||
);
|
||||
|
||||
const UsersAdmin = createResponsiveRoute(
|
||||
() => import("@/pages/users-admin"),
|
||||
() => import("@/pages/mobile/users-admin")
|
||||
);
|
||||
|
||||
function ProtectedRoute({ component: Component, adminOnly = false }: { component: React.ComponentType; adminOnly?: boolean }) {
|
||||
const [, setLocation] = useLocation();
|
||||
|
||||
Reference in new issue
Block a user