feat(shift): current shift in the list + modal actions; full-width layout everywhere

Shift screen:
- The standalone ShiftControl block is gone from /shift. The open/CURRENT shift now
  appears at the TOP of the shift list (CURRENT badge, live figures synthesized from
  the X-report), unified with history. Selecting it shows its live activity log.
- Shift ACTIONS moved into the current shift's detail pane, each opening a MODAL:
  End shift (confirm → signed Z-report result), drawer voucher (Mandat in/out),
  takings-so-far (X-report). When no shift is open, a Start-shift button shows.
- The current shift's log auto-refreshes (5s); a closed shift is bounded by its
  window. /setup/shifts stays read-only history (no manage props). Deleted the now-
  orphaned ShiftControl.tsx.

Layout:
- Every screen is now full-width like /booth — stripped the per-screen
  `mx-auto max-w-*` caps (Logs, Subscriptions, Plans, Tariff, Users, Roles, Setup
  layout, Shifts). The shell <main> already provides padding.

Build+lint 12/12 (i18n parity). Verified a live open shift surfaces as the CURRENT
list entry.

Claude-Session: https://claude.ai/code/session_01Xcm6ikLgGoCxxHrxtjkk5V
This commit is contained in:
2026-06-20 23:44:27 +02:00
parent 1b54775b4d
commit ae736a9e3e
13 changed files with 337 additions and 364 deletions
+2
View File
@@ -568,6 +568,7 @@ export const en: Catalog = {
starting: "Starting…",
endShift: "End shift",
ending: "Ending…",
endConfirm: "End this shift? A signed Z-report is recorded and printed.",
drawer: "Drawer:",
openingFloatInherited: "(opening float inherited from the prior shift)",
drawerCashAdmin: "Drawer cash (admin) — load or remove the float",
@@ -640,6 +641,7 @@ export const en: Catalog = {
preset_custom: "Custom",
selectAShift: "Select a shift to see its activity log.",
noActivity: "No activity in this shift.",
current: "current",
drawerSection: "Drawer",
openingFloat: "Opening float",
cashTaken: "Cash taken",
+2
View File
@@ -580,6 +580,7 @@ export const sq = {
starting: "Duke filluar…",
endShift: "Mbyll turnin",
ending: "Duke mbyllur…",
endConfirm: "Të mbyllet ky turn? Regjistrohet dhe printohet një Raport Z i nënshkruar.",
drawer: "Arka:",
openingFloatInherited: "(bilanci fillestar i trashëguar nga turni i mëparshëm)",
drawerCashAdmin: "Para në arkë (admin) — shto ose hiq bilancin",
@@ -653,6 +654,7 @@ export const sq = {
preset_custom: "E zgjedhur",
selectAShift: "Zgjidh një turn për të parë aktivitetin e tij.",
noActivity: "Asnjë aktivitet në këtë turn.",
current: "aktual",
// Expanded drawer detail.
drawerSection: "Arka",
openingFloat: "Bilanci fillestar",