From aed0722641231aac618a7748c8068adebbaad618 Mon Sep 17 00:00:00 2001 From: isaacclad Date: Wed, 15 Jul 2026 16:31:23 +0000 Subject: [PATCH] Restyle customer display to match Frontdesk kiosk UI. Use a light shell, soft indigo accents, and object-contain logos so brand marks are not square-cropped on the dual-screen customer view. --- .../views/pos/customer-display.blade.php | 179 ++++++++++-------- 1 file changed, 100 insertions(+), 79 deletions(-) diff --git a/resources/views/pos/customer-display.blade.php b/resources/views/pos/customer-display.blade.php index 7f7eb89..2cecdf3 100644 --- a/resources/views/pos/customer-display.blade.php +++ b/resources/views/pos/customer-display.blade.php @@ -14,7 +14,8 @@ html, body { overflow: hidden; } - -
- {{-- Brand bar --}} -
-
+ +
+ +
+ {{-- Brand bar — logo uses object-contain (never square-crop) like Frontdesk kiosk-brand --}} +
+
-

-

+

+

-
+
@@ -44,74 +55,79 @@
-
-

-

+
+

Welcome

+

+

-

Your order will appear here

+

Your order will appear here

- {{-- CART + shared totals for payment / tip --}} + {{-- CART + payment / tip / signature --}}
-
+
-

Order summary

-

- For +

Order summary

+

+ For

-

+

-
-
+
+
Subtotal
-
+
Discounts
-
+
Tax
-
+
Tip - +
-
+
Total - +
- {{-- Loyalty --}}
-

-
+ class="mt-4 rounded-2xl border border-amber-200 bg-amber-50 px-4 py-3 text-sm"> +

+
Balance: pts @@ -125,61 +141,62 @@
- {{-- Right panel: payment / tip / signature --}} -
@@ -206,33 +223,33 @@ {{-- RECEIPT --}}
-
+
-

-

- Receipt +

+

+ Receipt

-

+

-
+
Digital receipt QR -

Scan for digital receipt

+

Scan for digital receipt

-

Email me a digital receipt

+

Email me a digital receipt

+ class="flex-1 rounded-xl border-slate-200 bg-white px-3 py-2.5 text-sm text-slate-900 shadow-sm placeholder:text-slate-400 focus:border-indigo-500 focus:ring-indigo-500"> + class="rounded-xl bg-indigo-600 px-4 py-2.5 text-sm font-semibold text-white hover:bg-indigo-500">Send
-

Receipt emailed — check your inbox.

-

+

Receipt emailed — check your inbox.

+

-

+

@@ -263,7 +280,6 @@ this.pollTimer = setInterval(() => this.fetchState(), 4000); this.$nextTick(() => this.resizeCanvas()); window.addEventListener('resize', () => this.resizeCanvas()); - // Same-browser dual window: instant cart updates without waiting for SSE. try { this.bc = new BroadcastChannel('pos-customer-display'); this.bc.onmessage = (e) => { @@ -297,8 +313,13 @@ grandTotal() { const base = Number(this.state.total_minor) || 0; - const tip = Number(this.state.tip?.selected_minor) || 0; - return base + tip; + const tipInTotal = Number(this.state.tip_minor) || 0; + const tipSelected = Number(this.state.tip?.selected_minor) || 0; + // Avoid double-counting when the server already baked tip into total_minor. + if (tipInTotal > 0) { + return base; + } + return base + tipSelected; }, tipAmount(pct) {