@@ -12,8 +12,8 @@ interface Alert {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const INITIAL: Alert[] = [
|
const INITIAL: Alert[] = [
|
||||||
{ id: '1', driver: 'karim_d', message: 'Accès bloqué, portail fermé', time: '03/08/2026, 14:32', active: true },
|
{ id: '1', driver: 'lucas_d', message: 'Accès bloqué, portail fermé', time: '03/08/2026, 14:32', active: true },
|
||||||
{ id: '2', driver: 'sofia_l', message: 'Client injoignable', time: '02/08/2026, 19:05', active: false },
|
{ id: '2', driver: 'emma_l', message: 'Client injoignable', time: '02/08/2026, 19:05', active: false },
|
||||||
]
|
]
|
||||||
|
|
||||||
// Le bouton "Résoudre" change réellement l'état de l'alerte (badge +
|
// Le bouton "Résoudre" change réellement l'état de l'alerte (badge +
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ interface Order {
|
|||||||
|
|
||||||
const ACTIVE: Order[] = [
|
const ACTIVE: Order[] = [
|
||||||
{ id: '#1042', client: 'client_marie · 12 rue des Lilas', extra: 'il y a 4 min', tone: 'warning', label: 'En attente', amount: '46,00 €' },
|
{ id: '#1042', client: 'client_marie · 12 rue des Lilas', extra: 'il y a 4 min', tone: 'warning', label: 'En attente', amount: '46,00 €' },
|
||||||
{ id: '#1041', client: 'client_paul · Livreur: karim_d', extra: 'Net après parrainage', tone: 'info', label: 'En route', amount: '33,00 €' },
|
{ id: '#1041', client: 'client_paul · Livreur: lucas_d', extra: 'Net après parrainage', tone: 'info', label: 'En route', amount: '33,00 €' },
|
||||||
{ id: '#1040', client: 'client_lea · 8 avenue Foch', extra: 'en attente d’assignation', tone: 'accent', label: 'Livreur arrivé', amount: '58,50 €' },
|
{ id: '#1040', client: 'client_lea · 8 avenue Foch', extra: 'en attente d’assignation', tone: 'accent', label: 'Livreur arrivé', amount: '58,50 €' },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { SimpleGrid } from '@chakra-ui/react'
|
|||||||
import { COLORS, MockButton, MockCard, MockDot, MockRow, MockText, MockupDevice, StatTile } from '../AdminMockup'
|
import { COLORS, MockButton, MockCard, MockDot, MockRow, MockText, MockupDevice, StatTile } from '../AdminMockup'
|
||||||
|
|
||||||
const DRIVERS = [
|
const DRIVERS = [
|
||||||
{ name: 'karim_d', status: 'busy' as const, queue: 1, today: 14, total: 512, distance: '1,8 km', eta: '6 min' },
|
{ name: 'lucas_d', status: 'busy' as const, queue: 1, today: 14, total: 512, distance: '1,8 km', eta: '6 min' },
|
||||||
{ name: 'sofia_l', status: 'available' as const, queue: 0, today: 9, total: 340, distance: '0,6 km', eta: '2 min' },
|
{ name: 'emma_l', status: 'available' as const, queue: 0, today: 9, total: 340, distance: '0,6 km', eta: '2 min' },
|
||||||
{ name: 'yanis_b', status: 'offline' as const, queue: 0, today: 5, total: 128, distance: '—', eta: '—' },
|
{ name: 'yanis_b', status: 'offline' as const, queue: 0, today: 5, total: 128, distance: '—', eta: '—' },
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ const STATUS_LABEL = { available: 'Disponible', busy: 'Occupé', offline: 'Hors
|
|||||||
// Sélection d'un livreur = vraie mise à jour d'état (carte + fiche + bouton
|
// Sélection d'un livreur = vraie mise à jour d'état (carte + fiche + bouton
|
||||||
// "suivre l'itinéraire"), pas une simple image de liste.
|
// "suivre l'itinéraire"), pas une simple image de liste.
|
||||||
export function LivraisonSection() {
|
export function LivraisonSection() {
|
||||||
const [selected, setSelected] = useState('karim_d')
|
const [selected, setSelected] = useState('lucas_d')
|
||||||
const driver = DRIVERS.find((d) => d.name === selected)!
|
const driver = DRIVERS.find((d) => d.name === selected)!
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ type Role = 'tous' | 'clients' | 'livreurs' | 'admins'
|
|||||||
|
|
||||||
const USERS = [
|
const USERS = [
|
||||||
{ name: 'client_marie', role: 'clients' as const, icon: faUser, tone: COLORS.info, detail: 'Cmd: 12 · Points: 340 · Parrain: +8€' },
|
{ name: 'client_marie', role: 'clients' as const, icon: faUser, tone: COLORS.info, detail: 'Cmd: 12 · Points: 340 · Parrain: +8€' },
|
||||||
{ name: 'karim_d', role: 'livreurs' as const, icon: faBicycle, tone: COLORS.success, detail: '512 livraisons · connecté aujourd’hui' },
|
{ name: 'lucas_d', role: 'livreurs' as const, icon: faBicycle, tone: COLORS.success, detail: '512 livraisons · connecté aujourd’hui' },
|
||||||
{ name: 'admin_yas', role: 'admins' as const, icon: faShieldHalved, tone: COLORS.accentLight, detail: 'Accès complet à la plateforme' },
|
{ name: 'admin_yas', role: 'admins' as const, icon: faShieldHalved, tone: COLORS.accentLight, detail: 'Accès complet à la plateforme' },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
|
|||||||
import { COLORS, MockCard, MockRow, MockTabs, MockText, MockupDevice, RestrictedNote, ScreenTitle } from '../../AdminMockup'
|
import { COLORS, MockCard, MockRow, MockTabs, MockText, MockupDevice, RestrictedNote, ScreenTitle } from '../../AdminMockup'
|
||||||
|
|
||||||
const ALERTS = [
|
const ALERTS = [
|
||||||
{ id: '1', driver: 'karim_d', message: 'Accès bloqué, portail fermé', time: '14:32', active: true },
|
{ id: '1', driver: 'lucas_d', message: 'Accès bloqué, portail fermé', time: '14:32', active: true },
|
||||||
{ id: '2', driver: 'sofia_l', message: 'Client injoignable', time: 'hier 19:05', active: false },
|
{ id: '2', driver: 'emma_l', message: 'Client injoignable', time: 'hier 19:05', active: false },
|
||||||
]
|
]
|
||||||
|
|
||||||
type Filter = 'toutes' | 'actives'
|
type Filter = 'toutes' | 'actives'
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ import {
|
|||||||
} from '../../AdminMockup'
|
} from '../../AdminMockup'
|
||||||
|
|
||||||
const DRIVERS = [
|
const DRIVERS = [
|
||||||
{ name: 'karim_d', status: 'busy' as const, queue: 1, total: 512 },
|
{ name: 'lucas_d', status: 'busy' as const, queue: 1, total: 512 },
|
||||||
{ name: 'sofia_l', status: 'available' as const, queue: 0, total: 340 },
|
{ name: 'emma_l', status: 'available' as const, queue: 0, total: 340 },
|
||||||
]
|
]
|
||||||
|
|
||||||
const STATUS_TONE = { available: COLORS.success, busy: COLORS.warning, offline: COLORS.text3 }
|
const STATUS_TONE = { available: COLORS.success, busy: COLORS.warning, offline: COLORS.text3 }
|
||||||
@@ -24,7 +24,7 @@ const STATUS_LABEL = { available: 'Disponible', busy: 'Occupé', offline: 'Hors
|
|||||||
// Suivi en direct des livreurs, sans les fonctions de gestion (créer,
|
// Suivi en direct des livreurs, sans les fonctions de gestion (créer,
|
||||||
// modifier, contacter) réservées à l'admin.
|
// modifier, contacter) réservées à l'admin.
|
||||||
export function CabineDeliverySection() {
|
export function CabineDeliverySection() {
|
||||||
const [tracking, setTracking] = useState<string | null>('karim_d')
|
const [tracking, setTracking] = useState<string | null>('lucas_d')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<MockupDevice>
|
<MockupDevice>
|
||||||
|
|||||||
Reference in New Issue
Block a user