Skip to content

Commit c15c34b

Browse files
author
marcselman
committed
Improve kiosk readability with updated fonts and background
Update kiosk page styling: remove session dimming, add food/drink background, and increase font sizes. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 9b278ad5-3a45-420e-ba83-0847baf9924f Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Event-Id: defdd27b-b90e-4ea6-895e-b433fe80f9e6 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/04133160-d2cd-42c9-82f0-4e08d800b951/9b278ad5-3a45-420e-ba83-0847baf9924f/R7QqjaK Replit-Helium-Checkpoint-Created: true
1 parent 7298c70 commit c15c34b

File tree

1 file changed

+50
-43
lines changed

1 file changed

+50
-43
lines changed

client/src/pages/Kiosk.tsx

Lines changed: 50 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { useState, useEffect } from "react";
2-
import { Clock, MapPin, User, Monitor } from "lucide-react";
2+
import { Clock, MapPin, User, Monitor, Utensils } from "lucide-react";
3+
import foodDrinkBg from "@assets/image_1768474260490.png";
34

45
interface KioskSession {
56
id: string;
@@ -84,15 +85,6 @@ const DUMMY_SESSIONS: KioskSession[] = [
8485
speakers: [{ name: "Ruben Visser" }],
8586
categories: ["Deepdive"],
8687
},
87-
{
88-
id: "9",
89-
title: "Retrospective & Borrel",
90-
room: "Zaal 2 — Workshopruimte",
91-
startTime: "2026-04-16T17:00:00",
92-
endTime: "2026-04-16T18:00:00",
93-
speakers: [],
94-
categories: ["Feedback"],
95-
},
9688
{
9789
id: "10",
9890
title: "Diner",
@@ -117,6 +109,10 @@ function formatTime(iso: string) {
117109
return new Date(iso).toLocaleTimeString("nl-NL", { hour: "2-digit", minute: "2-digit" });
118110
}
119111

112+
function isFoodDrinkSession(categories: string[]): boolean {
113+
return categories.some(c => c.toLowerCase() === "eten & drinken");
114+
}
115+
120116
type SessionStatus = "now" | "next" | "later";
121117

122118
function getSessionStatus(session: KioskSession, now: Date): SessionStatus {
@@ -155,70 +151,81 @@ function SessionBlock({
155151
}) {
156152
const isNow = status === "now";
157153
const isNext = status === "next";
158-
const isLater = status === "later";
159-
const isCompact = heightPx < 120;
154+
const isCompact = heightPx < 140;
155+
const isFoodDrink = isFoodDrinkSession(session.categories);
160156

161157
return (
162158
<div
163159
className={`
164-
rounded-2xl border-2 p-4 overflow-hidden flex flex-col justify-between transition-all
160+
rounded-2xl border-2 p-5 overflow-hidden flex flex-col justify-between transition-all relative
165161
${isNow
166162
? "border-green-400 bg-green-50 dark:bg-green-950/30 dark:border-green-600 shadow-lg shadow-green-100 dark:shadow-green-900/20"
167163
: isNext
168164
? "border-amber-400 bg-amber-50 dark:bg-amber-950/30 dark:border-amber-600 shadow-md shadow-amber-100 dark:shadow-amber-900/20"
169-
: "border-border/40 bg-muted/30 opacity-70"
165+
: "border-border bg-card"
170166
}
171167
`}
172168
style={{ height: `${heightPx}px`, minHeight: "60px" }}
173169
data-testid={`kiosk-session-${session.id}`}
174170
>
175-
<div>
176-
<div className="flex items-center gap-2 mb-1">
171+
{isFoodDrink && (
172+
<div
173+
className="absolute inset-0 pointer-events-none opacity-[0.12] dark:opacity-[0.10]"
174+
style={{
175+
backgroundImage: `url(${foodDrinkBg})`,
176+
backgroundSize: "cover",
177+
backgroundPosition: "center",
178+
}}
179+
/>
180+
)}
181+
<div className="relative z-10">
182+
<div className="flex items-center gap-2 mb-1.5">
177183
{isNow && (
178-
<span className="inline-flex items-center gap-1.5 rounded-full bg-green-600 px-2.5 py-0.5 text-xs font-bold text-white animate-pulse" data-testid="badge-now">
179-
<span className="h-1.5 w-1.5 rounded-full bg-white" />
184+
<span className="inline-flex items-center gap-1.5 rounded-full bg-green-600 px-3 py-1 text-sm font-bold text-white animate-pulse" data-testid="badge-now">
185+
<span className="h-2 w-2 rounded-full bg-white" />
180186
NU BEZIG
181187
</span>
182188
)}
183189
{isNext && (
184-
<span className="inline-flex items-center gap-1.5 rounded-full bg-amber-500 px-2.5 py-0.5 text-xs font-bold text-white" data-testid="badge-next">
190+
<span className="inline-flex items-center gap-1.5 rounded-full bg-amber-500 px-3 py-1 text-sm font-bold text-white" data-testid="badge-next">
185191
AANKOMEND
186192
</span>
187193
)}
188-
{isLater && (
189-
<span className="inline-flex items-center gap-1.5 rounded-full bg-muted px-2.5 py-0.5 text-xs font-medium text-muted-foreground">
194+
{status === "later" && (
195+
<span className="inline-flex items-center gap-1.5 rounded-full bg-muted px-3 py-1 text-sm font-medium text-muted-foreground">
190196
LATER
191197
</span>
192198
)}
193199
{session.categories.length > 0 && (
194-
<span className={`text-xs font-medium ${isLater ? "text-muted-foreground/70" : "text-muted-foreground"}`}>
200+
<span className="text-sm font-medium text-muted-foreground">
201+
{isFoodDrink && <Utensils className="inline mr-1 h-3.5 w-3.5" />}
195202
{session.categories.join(", ")}
196203
</span>
197204
)}
198205
</div>
199206

200207
<h3
201208
className={`font-bold leading-tight mb-1 ${
202-
isNow ? "text-xl" : isNext ? "text-lg" : "text-base text-muted-foreground/70"
209+
isNow ? "text-2xl" : isNext ? "text-xl" : "text-lg"
203210
} ${isCompact ? "line-clamp-1" : "line-clamp-2"}`}
204211
data-testid={`kiosk-title-${session.id}`}
205212
>
206213
{session.title}
207214
</h3>
208215

209216
{session.speakers.length > 0 && !isCompact && (
210-
<div className={`flex items-center gap-1.5 ${isLater ? "text-muted-foreground/60" : "text-muted-foreground"}`}>
211-
<User className="h-3.5 w-3.5 shrink-0" />
212-
<span className="text-sm truncate">
217+
<div className="flex items-center gap-2 text-muted-foreground">
218+
<User className="h-4 w-4 shrink-0" />
219+
<span className="text-base truncate">
213220
{session.speakers.map(s => s.name).join(", ")}
214221
</span>
215222
</div>
216223
)}
217224
</div>
218225

219-
<div className={`flex items-center gap-1.5 mt-1 ${isLater ? "text-muted-foreground/60" : "text-muted-foreground"}`}>
220-
<Clock className="h-3.5 w-3.5 shrink-0" />
221-
<span className="text-xs font-medium">
226+
<div className="flex items-center gap-2 mt-1 text-muted-foreground relative z-10">
227+
<Clock className="h-4 w-4 shrink-0" />
228+
<span className="text-sm font-medium">
222229
{formatTime(session.startTime)}{formatTime(session.endTime)}
223230
</span>
224231
</div>
@@ -266,33 +273,33 @@ export default function Kiosk() {
266273

267274
return (
268275
<div className="fixed inset-0 z-[100] flex flex-col bg-background overflow-hidden" data-testid="kiosk-container">
269-
<header className="flex items-center justify-between px-8 py-4 border-b bg-[hsl(var(--primary))] text-primary-foreground shrink-0">
270-
<div className="flex items-center gap-4">
271-
<img src="/logo.svg" alt="Caesar Forum" className="h-10 brightness-0 invert" data-testid="kiosk-logo" />
272-
<div className="h-8 w-px bg-primary-foreground/30" />
273-
<h1 className="text-2xl font-bold tracking-tight" data-testid="kiosk-title">Sessierooster</h1>
276+
<header className="flex items-center justify-between px-8 py-5 border-b bg-[hsl(var(--primary))] text-primary-foreground shrink-0">
277+
<div className="flex items-center gap-5">
278+
<img src="/logo.svg" alt="Caesar Forum" className="h-12 brightness-0 invert" data-testid="kiosk-logo" />
279+
<div className="h-9 w-px bg-primary-foreground/30" />
280+
<h1 className="text-3xl font-bold tracking-tight" data-testid="kiosk-title">Sessierooster</h1>
274281
</div>
275-
<div className="flex items-center gap-3 text-primary-foreground/80">
276-
<Monitor className="h-5 w-5" />
277-
<time className="text-xl font-mono font-semibold tabular-nums" data-testid="kiosk-clock">
282+
<div className="flex items-center gap-4 text-primary-foreground/80">
283+
<Monitor className="h-6 w-6" />
284+
<time className="text-2xl font-mono font-semibold tabular-nums" data-testid="kiosk-clock">
278285
{now.toLocaleTimeString("nl-NL", { hour: "2-digit", minute: "2-digit" })}
279286
</time>
280-
<span className="text-lg">
287+
<span className="text-xl">
281288
{now.toLocaleDateString("nl-NL", { weekday: "long", day: "numeric", month: "long" })}
282289
</span>
283290
</div>
284291
</header>
285292

286293
<main className="flex-1 overflow-auto p-6">
287294
<div className="flex gap-4 h-full">
288-
<div className="w-16 shrink-0 relative" style={{ height: `${timelineHeightPx}px` }}>
295+
<div className="w-20 shrink-0 relative" style={{ height: `${timelineHeightPx}px` }}>
289296
{timeMarkers.map((marker, i) => (
290297
<div
291298
key={i}
292299
className="absolute right-0 flex items-center gap-1 -translate-y-1/2"
293300
style={{ top: `${marker.offset}px` }}
294301
>
295-
<span className="text-xs font-mono text-muted-foreground font-medium">
302+
<span className="text-sm font-mono text-muted-foreground font-semibold">
296303
{marker.time.toLocaleTimeString("nl-NL", { hour: "2-digit", minute: "2-digit" })}
297304
</span>
298305
</div>
@@ -310,9 +317,9 @@ export default function Kiosk() {
310317

311318
return (
312319
<div key={room} className="flex flex-col min-w-0">
313-
<div className="flex items-center gap-2 rounded-xl bg-[hsl(var(--primary))] px-4 py-2.5 text-primary-foreground shrink-0 mb-4">
314-
<MapPin className="h-4 w-4 shrink-0" />
315-
<h2 className="text-sm font-bold truncate" data-testid={`kiosk-room-name-${room}`}>{room}</h2>
320+
<div className="flex items-center gap-2 rounded-xl bg-[hsl(var(--primary))] px-5 py-3 text-primary-foreground shrink-0 mb-4">
321+
<MapPin className="h-5 w-5 shrink-0" />
322+
<h2 className="text-base font-bold truncate" data-testid={`kiosk-room-name-${room}`}>{room}</h2>
316323
</div>
317324

318325
<div className="relative" style={{ height: `${timelineHeightPx}px` }}>

0 commit comments

Comments
 (0)