From 96e48e0f509afbf68554c2a794e37dc06c1a3415 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Fri, 17 Jul 2026 09:13:27 -0400 Subject: [PATCH] printedparts kiosk: keypad and entry-panel visual polish The keypad becomes a proper terminal pad: fixed 3-column grid of rounded square buttons with tabular numerals, press feedback, and muted Clear/backspace actions. Each manual step (item number, SSO, quantity) shares one card panel - boxed entry display with placeholder styling, keypad, and a full-width action button. --- frontend/src/components/TouchKeypad.vue | 42 +++++++---- .../src/views/printedparts/PartsKiosk.vue | 74 ++++++++++++++----- 2 files changed, 83 insertions(+), 33 deletions(-) diff --git a/frontend/src/components/TouchKeypad.vue b/frontend/src/components/TouchKeypad.vue index 632dcd6..6baa0b8 100644 --- a/frontend/src/components/TouchKeypad.vue +++ b/frontend/src/components/TouchKeypad.vue @@ -4,11 +4,11 @@ class="keypad-button" @click="$emit('digit', digit)"> {{ digit }} - + - + @@ -20,19 +20,35 @@ defineEmits(['digit', 'clear', 'backspace']) diff --git a/frontend/src/views/printedparts/PartsKiosk.vue b/frontend/src/views/printedparts/PartsKiosk.vue index 5da0e85..543d547 100644 --- a/frontend/src/views/printedparts/PartsKiosk.vue +++ b/frontend/src/views/printedparts/PartsKiosk.vue @@ -21,15 +21,17 @@ No scanner? Type the number

-
-
{{ manualCode || 'label number' }}
+
+
+ {{ manualCode || 'label number' }} +
-

Just the number from the label - e.g. 4 for - {{ '0004' }}; letters are added automatically.

+

Just the number from the label; letters are + added automatically.

@@ -43,8 +45,10 @@

Scan your badge or tap in your SSO

-
-
{{ manualBadge || 'SSO' }}
+
+
+ {{ manualBadge || 'SSO' }} +
@@ -63,14 +67,18 @@

How many are you taking?

-
{{ quantity || '0' }}
- - +
+
+ {{ quantity || '0' }} +
+ + +
@@ -240,16 +248,42 @@ function reset() { object-fit: cover; border-radius: 0.4rem; } -.quantity-display { - font-size: 3rem; +.entry-panel { + display: flex; + flex-direction: column; + align-items: center; + gap: 1rem; + background: var(--bg-card); + border: 1px solid var(--border); + border-radius: 1rem; + padding: 1.5rem 2rem; +} +.entry-display { + width: 16.9rem; + box-sizing: border-box; + font-size: 2.4rem; font-weight: 700; - min-width: 8rem; + font-variant-numeric: tabular-nums; text-align: center; - border-bottom: 3px solid var(--primary); + padding: 0.5rem 1rem; + border: 1px solid var(--border); + border-radius: 0.75rem; + background: var(--bg); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.entry-display.empty { + color: var(--text-light); + font-weight: 400; + font-size: 1.4rem; + line-height: 2.4rem; } .take-button { - font-size: 1.5rem; - padding: 0.9rem 3.5rem; + font-size: 1.4rem; + padding: 0.85rem 0; + width: 16.9rem; + border-radius: 0.75rem; } .manual-row { display: flex; gap: 0.6rem; } .manual-block {