diff --git a/apps/web/src/app/showcase-deck.tsx b/apps/web/src/app/showcase-deck.tsx index 0977ed5..b706fef 100644 --- a/apps/web/src/app/showcase-deck.tsx +++ b/apps/web/src/app/showcase-deck.tsx @@ -66,22 +66,36 @@ export function ShowcaseDeck({ the drag gesture and never has to stay legible on a bright image. */}
{selected ? ( - setCategoryId(null)}> + setCategoryId(null)}> {selected.name} - + Show all trades ) : ( -
+ // The strip scrolls sideways through every trade. The right-hand fade + // is the only affordance saying so — the scrollbar is hidden, and a + // row that simply ends at the bezel reads as the whole list. +
+
{categories.map((c) => ( - setCategoryId(c.id)}> + setCategoryId(c.id)} + > {c.name} - ))} + ))} +
+
)}
diff --git a/apps/web/src/components/ui/chip.tsx b/apps/web/src/components/ui/chip.tsx index aed9438..c2b50cb 100644 --- a/apps/web/src/components/ui/chip.tsx +++ b/apps/web/src/components/ui/chip.tsx @@ -9,18 +9,28 @@ import { cn } from '@/lib/utils'; */ export function Chip({ selected = false, + size = 'md', className, children, ...props -}: React.ButtonHTMLAttributes & { selected?: boolean }) { +}: React.ButtonHTMLAttributes & { + selected?: boolean; + /** + * 'sm' is for dense horizontal strips — the trade filter has to fit four + * trades across a 390px phone before the fifth is cut off as a scroll hint. + * 'md' stays the default everywhere a chip is a primary choice. + */ + size?: 'sm' | 'md'; +}) { return ( );