✨ Update design
This commit is contained in:
@@ -3,11 +3,14 @@ import type { PDFDocumentProxy, RenderTask } from 'pdfjs-dist'
|
|||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
src: string
|
src: string
|
||||||
|
background?: string
|
||||||
|
spinnerTrackColor?: string
|
||||||
|
spinnerAccentColor?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
// pdfjs-dist touches the DOM/Canvas at import time, so it's loaded lazily inside
|
// pdfjs-dist touches the DOM/Canvas at import time, so it's loaded lazily inside
|
||||||
// the effect below instead of at module scope — this file also runs during SSR.
|
// the effect below instead of at module scope — this file also runs during SSR.
|
||||||
export function PdfMenu({ src }: Props) {
|
export function PdfMenu({ src, background, spinnerTrackColor, spinnerAccentColor }: Props) {
|
||||||
const containerRef = useRef<HTMLDivElement>(null)
|
const containerRef = useRef<HTMLDivElement>(null)
|
||||||
const canvasRef = useRef<HTMLCanvasElement>(null)
|
const canvasRef = useRef<HTMLCanvasElement>(null)
|
||||||
const pdfRef = useRef<PDFDocumentProxy | null>(null)
|
const pdfRef = useRef<PDFDocumentProxy | null>(null)
|
||||||
@@ -148,11 +151,19 @@ export function PdfMenu({ src }: Props) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="pdf-menu" ref={containerRef}>
|
<div className="pdf-menu" ref={containerRef}>
|
||||||
<div className="pdf-menu-viewport">
|
<div className="pdf-menu-viewport" style={background ? { background } : undefined}>
|
||||||
<canvas className="pdf-menu-page" ref={canvasRef} />
|
<canvas className="pdf-menu-page" ref={canvasRef} />
|
||||||
{numPages === 0 && (
|
{numPages === 0 && (
|
||||||
<div className="pdf-menu-loading" role="status">
|
<div className="pdf-menu-loading" role="status">
|
||||||
<div className="pdf-menu-spinner" aria-hidden="true" />
|
<div
|
||||||
|
className="pdf-menu-spinner"
|
||||||
|
aria-hidden="true"
|
||||||
|
style={
|
||||||
|
spinnerTrackColor || spinnerAccentColor
|
||||||
|
? { borderColor: spinnerTrackColor, borderTopColor: spinnerAccentColor }
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
|
/>
|
||||||
<p>Die Karte wird aufgetischt …</p>
|
<p>Die Karte wird aufgetischt …</p>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -12,14 +12,12 @@ type Props = {
|
|||||||
onClose: () => void
|
onClose: () => void
|
||||||
}
|
}
|
||||||
|
|
||||||
function FlameBadgeIcon() {
|
function SparkleBadgeIcon() {
|
||||||
return (
|
return (
|
||||||
<svg className="reservation-confirmed-flame" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
<svg className="reservation-confirmed-sparkle" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
<path
|
<path
|
||||||
d="M12 2c1 3-3 4-3 7.5A3.5 3.5 0 0 0 12 13a3.5 3.5 0 0 0 3-5.3c1.5 1 2.5 3 2.5 5a5.5 5.5 0 1 1-11 0C6.5 8.5 9.5 6 12 2Z"
|
d="M12 2c0.6 3.2 1.2 5.8 2.7 7.3S18.8 11.4 22 12c-3.2 0.6-5.8 1.2-7.3 2.7S12.6 18.8 12 22c-0.6-3.2-1.2-5.8-2.7-7.3S5.2 12.6 2 12c3.2-0.6 5.8-1.2 7.3-2.7S11.4 5.2 12 2Z"
|
||||||
stroke="currentColor"
|
fill="currentColor"
|
||||||
strokeWidth="1.4"
|
|
||||||
strokeLinejoin="round"
|
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
)
|
)
|
||||||
@@ -62,13 +60,13 @@ export function ReservationConfirmedModal({
|
|||||||
aria-labelledby="reservation-confirmed-title"
|
aria-labelledby="reservation-confirmed-title"
|
||||||
onClick={(event) => event.stopPropagation()}
|
onClick={(event) => event.stopPropagation()}
|
||||||
>
|
>
|
||||||
<FlameBadgeIcon />
|
<SparkleBadgeIcon />
|
||||||
|
|
||||||
<h2 id="reservation-confirmed-title" className="reservation-confirmed-title">
|
<h2 id="reservation-confirmed-title" className="reservation-confirmed-title">
|
||||||
Tisch reserviert!
|
Tisch reserviert!
|
||||||
</h2>
|
</h2>
|
||||||
<p className="reservation-confirmed-message">
|
<p className="reservation-confirmed-message">
|
||||||
Bis bald, {customerName}! Wir halten Ihnen den Platz warm und legen schon mal Kohle nach.
|
Bis bald, {customerName}! Wir halten Ihnen den Platz warm und freuen uns auf Ihren Besuch.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<dl className="detail-list">
|
<dl className="detail-list">
|
||||||
|
|||||||
+12
-2
@@ -228,11 +228,21 @@ function Home() {
|
|||||||
<div className="menu-stack">
|
<div className="menu-stack">
|
||||||
<div>
|
<div>
|
||||||
<h3 className="menu-stack-heading">Speisen</h3>
|
<h3 className="menu-stack-heading">Speisen</h3>
|
||||||
<PdfMenu src="/speisekarte.pdf" />
|
<PdfMenu
|
||||||
|
src="/speisekarte.pdf"
|
||||||
|
background="#fef8de"
|
||||||
|
spinnerTrackColor="rgba(97, 16, 30, 0.2)"
|
||||||
|
spinnerAccentColor="#61101e"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h3 className="menu-stack-heading">Getränke</h3>
|
<h3 className="menu-stack-heading">Getränke</h3>
|
||||||
<PdfMenu src="/getraenkekarte.pdf" />
|
<PdfMenu
|
||||||
|
src="/getraenkekarte.pdf"
|
||||||
|
background="#b19e76"
|
||||||
|
spinnerTrackColor="rgba(87, 23, 23, 0.3)"
|
||||||
|
spinnerAccentColor="#571717"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+4
-4
@@ -911,7 +911,7 @@ a {
|
|||||||
animation: none;
|
animation: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reservation-confirmed-flame {
|
.reservation-confirmed-sparkle {
|
||||||
animation: none;
|
animation: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1796,15 +1796,15 @@ a {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.reservation-confirmed-flame {
|
.reservation-confirmed-sparkle {
|
||||||
width: 3.25rem;
|
width: 3.25rem;
|
||||||
height: 3.25rem;
|
height: 3.25rem;
|
||||||
margin: 0 auto 1rem;
|
margin: 0 auto 1rem;
|
||||||
color: var(--ember);
|
color: var(--ember);
|
||||||
animation: reservation-confirmed-flicker 2.2s ease-in-out infinite;
|
animation: reservation-confirmed-twinkle 2.2s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes reservation-confirmed-flicker {
|
@keyframes reservation-confirmed-twinkle {
|
||||||
0%,
|
0%,
|
||||||
100% {
|
100% {
|
||||||
transform: rotate(0deg) scale(1);
|
transform: rotate(0deg) scale(1);
|
||||||
|
|||||||
Reference in New Issue
Block a user