3 Commits

Author SHA1 Message Date
dc5499283c docs(quick-260411-022): Fix global items search bar layout
All checks were successful
CI / ci (push) Successful in 1m12s
CI / e2e (push) Has been skipped
CI / deploy (push) Successful in 14s
2026-04-11 00:07:08 +02:00
ef488913a2 docs(260411-022): complete global items header layout fix plan 2026-04-11 00:06:21 +02:00
4aab1fe1f8 feat(260411-022): compact global items catalog header
- Replace arrow entity + "Dashboard" back link with ArrowLeft icon + "Discover"
- Consolidate title and search into a single flex row (wraps on mobile)
- Reduce outer padding from py-6 to py-4
- Remove subtitle paragraph and separate mb-6/mb-8 section margins
2026-04-11 00:06:03 +02:00
4 changed files with 161 additions and 15 deletions

View File

@@ -28,7 +28,7 @@ See: .planning/PROJECT.md (updated 2026-04-09)
Phase: 999.1
Plan: Not started
Status: Phase complete — ready for verification
Last activity: 2026-04-10
Last activity: 2026-04-11 - Completed quick task 260411-022: Fix global items search bar layout
Progress: [░░░░░░░░░░] 0%
@@ -86,6 +86,12 @@ None active.
None.
### Quick Tasks Completed
| # | Description | Date | Commit | Directory |
|---|-------------|------|--------|-----------|
| 260411-022 | Fix global items search bar layout - too tall and hard to navigate back | 2026-04-10 | ef48891 | [260411-022-fix-global-items-search-bar-layout-too-t](./quick/260411-022-fix-global-items-search-bar-layout-too-t/) |
## Session Continuity
Last session: 2026-04-10T21:48:34.542Z

View File

@@ -0,0 +1,89 @@
---
phase: quick
plan: 260411-022
type: execute
wave: 1
depends_on: []
files_modified:
- src/client/routes/global-items/index.tsx
autonomous: true
requirements: [quick-fix]
must_haves:
truths:
- "Header area (back link + title + search) is compact — no more than ~80px before content starts"
- "Back navigation is clearly visible and links to / with correct label"
- "Search bar is inline with the title on wider screens"
artifacts:
- path: "src/client/routes/global-items/index.tsx"
provides: "Compact global items catalog page"
key_links: []
---
<objective>
Consolidate the global items catalog header into a compact single-row layout: back button, title, and search bar on one line (desktop) or minimal stacking (mobile). Remove excessive margins and fix the outdated "Dashboard" back link text.
Purpose: The current layout wastes ~22 Tailwind spacing units of vertical space before any content appears, and the back link text is outdated.
Output: A compact, scannable header for the global items catalog page.
</objective>
<execution_context>
@$HOME/.claude/get-shit-done/workflows/execute-plan.md
@$HOME/.claude/get-shit-done/templates/summary.md
</execution_context>
<context>
@.planning/STATE.md
@src/client/routes/global-items/index.tsx
</context>
<tasks>
<task type="auto">
<name>Task 1: Consolidate global items header into compact layout</name>
<files>src/client/routes/global-items/index.tsx</files>
<action>
Refactor the three separate header sections (back link, title+subtitle, search) into a single compact header:
1. **Replace the back link** with an ArrowLeft icon from lucide-react paired with "Discover" text (since `/` is now the discovery/landing page per Phase 27 restructure). Use a `Link to="/"` with `flex items-center gap-1.5` styling, `text-sm text-gray-500 hover:text-gray-700 transition-colors` to make it more visible than the current tiny gray text.
2. **Consolidate into a two-row compact header:**
- Row 1: Back link (left-aligned), stands alone but with minimal margin (`mb-3`)
- Row 2: Title and search on the same line using `flex items-center justify-between gap-4 mb-4`:
- Left side: `h1` with `text-lg font-semibold text-gray-900` (smaller than current text-2xl). Drop the subtitle paragraph entirely — "Global Gear Catalog" is self-explanatory.
- Right side: The search input (keep existing search logic, clear button, debounce). Set `max-w-xs` on wider screens. On mobile, let it wrap below the title using `flex-wrap`.
3. **Reduce outer padding:** Change `py-6` to `py-4` on the container div.
4. **Remove** the separate `mb-6`, `mb-8`, `mb-8` sections — they are replaced by the consolidated header rows above.
5. Keep all existing search state logic (searchInput, debouncedQuery, useEffect debounce) and results rendering unchanged.
Import `ArrowLeft` from `lucide-react` for the back icon.
</action>
<verify>
<automated>cd /home/jean-luc-makiola/Development/projects/GearBox && bun run lint</automated>
</verify>
<done>
- Header occupies minimal vertical space — back link + title/search in ~2 compact rows
- Back link says "Discover" with ArrowLeft icon and links to /
- Search bar is inline with title on desktop, wraps on mobile
- No subtitle paragraph
- All search functionality unchanged
</done>
</task>
</tasks>
<verification>
- `bun run lint` passes
- `bun run build` succeeds
- Visual check: page header is compact with back link, title, and search on minimal lines
</verification>
<success_criteria>
The global items catalog page header is compact: back navigation is visible with correct "Discover" label, title and search share a row on desktop, and total vertical space before content is dramatically reduced.
</success_criteria>
<output>
After completion, create `.planning/quick/260411-022-fix-global-items-search-bar-layout-too-t/260411-022-SUMMARY.md`
</output>

View File

@@ -0,0 +1,54 @@
---
phase: quick
plan: 260411-022
subsystem: client-ui
tags: [layout, header, search, global-items]
dependency_graph:
requires: []
provides: [compact-global-items-header]
affects: [src/client/routes/global-items/index.tsx]
tech_stack:
added: []
patterns: [flex-wrap inline header, lucide-react ArrowLeft]
key_files:
created: []
modified:
- src/client/routes/global-items/index.tsx
decisions:
- ArrowLeft icon + "Discover" label replaces arrow entity + "Dashboard" — matches Phase 27 restructure where / is the discovery landing page
metrics:
duration: ~5 minutes
completed: 2026-04-11
---
# Quick Task 260411-022: Fix Global Items Search Bar Layout
**One-liner:** Collapsed three-section header (back link, title+subtitle, search) into a two-row compact layout with ArrowLeft icon, "Discover" back link, and inline title+search row.
## Tasks Completed
| # | Task | Commit | Files |
|---|------|--------|-------|
| 1 | Consolidate global items header into compact layout | 4aab1fe | src/client/routes/global-items/index.tsx |
## Changes Made
- **Back link:** Replaced `&larr; Dashboard` with `<ArrowLeft /> Discover` — clearer icon, correct label for Phase 27's landing page restructure
- **Title:** Reduced from `text-2xl font-bold` to `text-lg font-semibold` and dropped the subtitle paragraph
- **Search:** Moved inline with title using `flex flex-wrap items-center justify-between gap-4`. On mobile the search wraps below the title (`w-full sm:w-auto sm:max-w-xs`)
- **Outer padding:** `py-6``py-4`
- **Section margins:** Removed separate `mb-6`, `mb-8`, `mb-8` wrappers; replaced with `mb-3` (back link) and `mb-4` (title+search row)
## Deviations from Plan
None — plan executed exactly as written.
## Known Stubs
None.
## Self-Check: PASSED
- File `src/client/routes/global-items/index.tsx` modified and committed
- Commit `4aab1fe` confirmed in git log
- `bun run lint` passed with no errors

View File

@@ -1,4 +1,5 @@
import { createFileRoute, Link } from "@tanstack/react-router";
import { ArrowLeft } from "lucide-react";
import { useEffect, useState } from "react";
import { GlobalItemCard } from "../../components/GlobalItemCard";
import { useGlobalItems } from "../../hooks/useGlobalItems";
@@ -23,28 +24,24 @@ function GlobalItemsCatalog() {
);
return (
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
<div className="mb-6">
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-4">
{/* Back link */}
<div className="mb-3">
<Link
to="/"
className="text-sm text-gray-400 hover:text-gray-600 transition-colors"
className="inline-flex items-center gap-1.5 text-sm text-gray-500 hover:text-gray-700 transition-colors"
>
&larr; Dashboard
<ArrowLeft className="w-3.5 h-3.5" />
Discover
</Link>
</div>
<div className="mb-8">
<h1 className="text-2xl font-bold text-gray-900 mb-1">
{/* Title + search row */}
<div className="flex flex-wrap items-center justify-between gap-4 mb-4">
<h1 className="text-lg font-semibold text-gray-900">
Global Gear Catalog
</h1>
<p className="text-sm text-gray-500">
Browse and discover gear from the shared catalog
</p>
</div>
{/* Search */}
<div className="mb-8">
<div className="relative max-w-md">
<div className="relative w-full sm:w-auto sm:max-w-xs">
<svg
className="absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"
fill="none"