diff --git a/CLAUDE_DESIGN/.design-canvas.state.json b/CLAUDE_DESIGN/.design-canvas.state.json index 6b13e20..2a63473 100644 --- a/CLAUDE_DESIGN/.design-canvas.state.json +++ b/CLAUDE_DESIGN/.design-canvas.state.json @@ -1 +1 @@ -{"sections":{"v1":{"labels":{"v1-grid":"Grid of 8 tables — mixed statuses"}}}} \ No newline at end of file +{"sections":{"v1":{"labels":{"v1-grid":"Grid of 8 tables — mixed statuses"}},"desktop":{"labels":{"desktop-main":"1440×900 — full operational view, mid-shift"}}}} \ No newline at end of file diff --git a/CLAUDE_DESIGN/Table Grid Densities.html b/CLAUDE_DESIGN/Table Grid Densities.html new file mode 100644 index 0000000..d29c56b --- /dev/null +++ b/CLAUDE_DESIGN/Table Grid Densities.html @@ -0,0 +1,39 @@ + + +
+ + ++ Επιλέξτε πόσο λεπτομερές θα είναι κάθε ticket κουζίνας. +
+- Οι αλλαγές εφαρμόζονται αμέσως στην επόμενη εκτύπωση. + Οι αλλαγές εφαρμόζονται στην επόμενη εκτύπωση.
+ Χάθηκε η σύνδεση με τον Manager +
+ ++ Δεν μπορώ να φτάσω στον server.{'\n'} + Περίμενε ή άνοιξε ΕΚΤΑΚΤΗ ΛΕΙΤΟΥΡΓΙΑ{'\n'} + για να συνεχίσεις με τοπικά δεδομένα. +
+ ++ Αυτόματη επανάληψη κάθε 10 δευτερόλεπτα +
+{error}
} - {printAck?.allOk && ( -+ Πληκτρολογήστε για αναζήτηση… +
+ ) : results.length === 0 ? ( ++ Δεν βρέθηκαν προϊόντα για «{query}» +
+ ) : results.map(p => { + const initials = p.name.trim().split(/\s+/).slice(0, 2).map(w => w[0]).join('').toUpperCase() + return ( +Φόρτωση…
+ ) : serverUnreachable ? ( ++ Δεν βρέθηκε ο Server +
+
+ Δεν είναι δυνατή η σύνδεση με τον Manager.
+ Δεν μπορεί να ξεκινήσει βάρδια χωρίς σύνδεση.
+
Δεν βρέθηκαν σερβιτόροι
) : ( diff --git a/waiter_pwa/src/pages/SettingsPage.jsx b/waiter_pwa/src/pages/SettingsPage.jsx new file mode 100644 index 0000000..6dfd2c0 --- /dev/null +++ b/waiter_pwa/src/pages/SettingsPage.jsx @@ -0,0 +1,345 @@ +import { useState } from 'react' +import { useNavigate } from 'react-router-dom' +import useTableViewStore from '../store/tableViewStore' +import useThemeStore from '../store/themeStore' + +// ─── Tab definitions (stub future tabs here) ────────────────────────────────── + +const TABS = [ + { key: 'layout', label: 'Εμφάνιση' }, + { key: 'favorites', label: 'Αγαπημένα', disabled: true }, +] + +// ─── Density option data ────────────────────────────────────────────────────── + +const DENSITY_OPTIONS = [ + { + key: '1x1', + label: '1×1', + desc: '4 ανά σειρά — μόνο όνομα', + preview:Επίλεξε πόσα στοιχεία εμφανίζονται σε κάθε κάρτα.
+ +Σύντομα διαθέσιμο
++ Τα αγαπημένα προϊόντα θα εμφανίζονται εδώ για γρήγορη παραγγελία. +
+Δεν υπάρχει ενεργή παραγγελία
)} - {flags.length > 0 && (- ACTIONS -
+ACTIONS
ΕΚΤΑΚΤΗ ΠΛΗΡΩΜΗ
+Τραπέζι: {table.label || `T${table.number}`}
+Ενεργά αντικείμενα:
+ {activeItems.length === 0 + ?Δεν υπάρχουν δεδομένα (offline snapshot)
+ : activeItems.map(item => ( ++ Δεν είναι δυνατή η πληρωμή χωρίς offline δεδομένα. Άνοιξε το τραπέζι ενώ ο server ήταν online. +
+ :+ ⚠️ Μόνο μετρητά σε κατάσταση έκτακτης ανάγκης. Η πληρωμή συγχρονίζεται μόλις αποκατασταθεί η σύνδεση. +
+ } +Ανάθεση
+Κατάσταση
+Ζώνες {zoneFilter.length > 0 ? `(${zoneFilter.length} επιλεγμένες)` : ''}
+