From 812afdab007948b39a12c0b93f77af0248d87966 Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Sun, 11 Oct 2026 14:20:28 +0000 Subject: [PATCH] Deploy --- .../sections/NeighbourhoodLoveSection.tsx | 199 ++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 src/components/sections/NeighbourhoodLoveSection.tsx diff --git a/src/components/sections/NeighbourhoodLoveSection.tsx b/src/components/sections/NeighbourhoodLoveSection.tsx new file mode 100644 index 0000000..a03145c --- /dev/null +++ b/src/components/sections/NeighbourhoodLoveSection.tsx @@ -0,0 +1,199 @@ +'use client' + +import { useEffect, useState } from 'react' +import { ChevronLeft, ChevronRight, Quote } from 'lucide-react' + +const voices = [ + { + quote: `A box of those wok-tossed noodles and the walk home from school stops being just a walk. The chilli catches you at the back of the throat — nothing else on this street does that.`, + attribution: `Learner, walking home past the corner`, + detail: `Afternoon rush`, + }, + { + quote: `I used to grab a kota every afternoon. Now it is noodles twice a week. Same sort of money, but I can watch it go into the wok and come out steaming.`, + attribution: `Daily commuter`, + detail: `Taxi rank run`, + }, + { + quote: `Ben still tosses with the same wrist snap his uncle taught him. You can hear the pan over the amapiano from the street.`, + attribution: `Family, on box duty at the counter`, + detail: `Weekend shift`, + }, + { + quote: `The cabbage still has crunch. That is the part I tell people about — they expect soft noodles, and then they bite into it.`, + attribution: `Regular since the red sign went up`, + detail: `Friday takeaway queue`, + }, + { + quote: `We drove through from town because someone at work would not stop talking about the dark soy glaze. I did not expect to find it on our own corner.`, + attribution: `Weekend foodie`, + detail: `Came through from Newcastle`, + }, + { + quote: `My son does not ask for chips anymore. He asks if we are going past the red sign.`, + attribution: `Parent, school pickup`, + detail: `Weekday afternoons`, + }, +] + +const streetNotes = [ + { + label: `Rush hour`, + note: `When the school bell goes, the boxes stack three deep on the counter and nobody minds the wait — it smells too good to complain.`, + }, + { + label: `Made in front of you`, + note: `The wok is loud on purpose. High heat, quick toss, straight into the box while it is still spitting.`, + }, + { + label: `Takeaway first`, + note: `Order on the way past, collect at the corner, eat while it is hot. That is how most of Section 4 does it.`, + }, +] + +export default function NeighbourhoodLoveSection() { + const [index, setIndex] = useState(0) + const [paused, setPaused] = useState(false) + + useEffect(() => { + if (paused) return + const motionQuery = window.matchMedia('(prefers-reduced-motion: reduce)') + if (motionQuery.matches) return + const timer = window.setInterval(() => { + setIndex((current) => (current + 1) % voices.length) + }, 8000) + return () => window.clearInterval(timer) + }, [paused]) + + const goTo = (next: number) => { + setIndex((next + voices.length) % voices.length) + } + + return ( +
+
+
+
+
+

+ The queue talks before the wok does. +

+

+ Nobody wrote these down for us. They came off the pavement outside the red sign — learners on the walk home, commuters waiting on a taxi, neighbours who order the same box every Friday. +

+
+ +
setPaused(true)} + onMouseLeave={() => setPaused(false)} + onFocus={() => setPaused(true)} + onBlur={() => setPaused(false)} + > +
+
+
+
+ +
+
+

Counter rule

+

+ Say hello when you order. Half the street knows the box by name before the order is finished. +

+
+
+

Eaten here?

+

+ Your words are welcome on our wall. Tell us at the counter what the chilli did to you. +

+
+
+
+ +
+ {streetNotes.map((note) => ( +
+
{note.label}
+
{note.note}
+
+ ))} +
+
+
+ ) +}