import { useEffect, useRef, useState, useCallback } from 'react' import { useNavigate } from 'react-router-dom' import TableCard from '../components/TableCard' import ConnectionBanner from '../components/ConnectionBanner' import EmergencyBar from '../components/EmergencyBar' import UserMenu from '../components/UserMenu' import useAuthStore from '../store/authStore' import useTableColourStore from '../store/tableColourStore' import useConnectionStore from '../store/connectionStore' import useTableViewStore from '../store/tableViewStore' import client from '../api/client' import db from '../db/posdb' import { queueOfflinePayment } from '../services/offlinePayments' import { useNotifications } from '../context/NotificationContext' import { FlagsIcon, TransferIcon, MergeIcon, PrintIcon, WaiterIcon } from '../components/Icons' function fmtPrice(v) { return Number(v || 0).toFixed(2) + ' €' } // ─── Icons ──────────────────────────────────────────────────────────────────── function FilterIcon({ size = 20 }) { return ( ) } // ─── Notification drawer ────────────────────────────────────────────────────── function NotificationDrawer({ messages, onClose }) { return (
Δεν υπάρχουν ειδοποιήσεις
)}Δεν υπάρχει ενεργή παραγγελία
)} {flags.length > 0 && (ACTIONS
ΕΚΤΑΚΤΗ ΠΛΗΡΩΜΗ
Τραπέζι: {table.label || `T${table.number}`}
Ενεργά αντικείμενα:
{activeItems.length === 0 ?Δεν υπάρχουν δεδομένα (offline snapshot)
: activeItems.map(item => (Δεν είναι δυνατή η πληρωμή χωρίς offline δεδομένα. Άνοιξε το τραπέζι ενώ ο server ήταν online.
:⚠️ Μόνο μετρητά σε κατάσταση έκτακτης ανάγκης. Η πληρωμή συγχρονίζεται μόλις αποκατασταθεί η σύνδεση.
}Ανάθεση
Κατάσταση
Ζώνες {zoneFilter.length > 0 ? `(${zoneFilter.length} επιλεγμένες)` : ''}