From 524e1e9a4d64e3c78906f25282ef4eb04fb4397f Mon Sep 17 00:00:00 2001
From: Steve Simonson <144349219+SteveSimonson@users.noreply.github.com>
Date: Thu, 30 Jul 2026 23:12:23 -0500
Subject: [PATCH 1/2] fix: make limited-time shop filter impossible to miss
When This week is on, show a high-visibility banner (count vs full
house + Show full collection), removable filter chips, pressed toggle
label, and header/top bar that flip to Full collection exit paths.
---
src/components/CategoryHero.tsx | 3 +-
src/components/Layout.tsx | 77 +++++++---
src/pages/Shop.tsx | 240 +++++++++++++++++++++++++-------
3 files changed, 244 insertions(+), 76 deletions(-)
diff --git a/src/components/CategoryHero.tsx b/src/components/CategoryHero.tsx
index 77848a5..91b3600 100644
--- a/src/components/CategoryHero.tsx
+++ b/src/components/CategoryHero.tsx
@@ -35,7 +35,7 @@ export function CategoryHero({
{limited && (
- This week in {content.title}
+ Filter on · This week only
)}
@@ -51,6 +51,7 @@ export function CategoryHero({
{' '}
· {productCount} {productCount === 1 ? 'piece' : 'pieces'}
+ {limited ? ' this week' : ''}
) : null}
diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx
index aa751c0..f81b37a 100644
--- a/src/components/Layout.tsx
+++ b/src/components/Layout.tsx
@@ -1,4 +1,4 @@
-import { Link, Outlet, useLocation } from 'react-router-dom'
+import { Link, Outlet, useLocation, useSearchParams } from 'react-router-dom'
import { Menu, X } from 'lucide-react'
import { useState } from 'react'
import { formatExpiry, limitedTimeCopy } from '../data/catalog'
@@ -24,26 +24,48 @@ function navClass(active: boolean) {
export function Layout() {
const [open, setOpen] = useState(false)
const { pathname } = useLocation()
- const limited = limitedTimeCopy()
- const until = formatExpiry(limited.expiresAt ?? undefined)
+ const [searchParams] = useSearchParams()
+ const drop = limitedTimeCopy()
+ const until = formatExpiry(drop.expiresAt ?? undefined)
+ const onShop = pathname === '/shop' || pathname.startsWith('/shop')
+ const limitedMode = onShop && searchParams.get('limited') === '1'
+ // When already filtering to this week, offer escape — not another trap door
+ const weekCta = limitedMode
+ ? { to: '/shop', label: 'Full collection', primary: false as const }
+ : { to: '/shop?limited=1', label: 'This week', primary: true as const }
return (