From 90ae071e44044f6e8f838c8771afba7181931de3 Mon Sep 17 00:00:00 2001 From: Mikhail Neradkov Date: Wed, 29 Jul 2026 22:48:58 +0300 Subject: [PATCH] feat(web): link skill labels to search and wrap filter chips MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make skill-detail label chips navigate to /search?label=… and allow the search filter row to wrap when many labels are present. Signed-off-by: Mikhail Neradkov --- web/src/pages/search.test.tsx | 6 ++++ web/src/pages/search.tsx | 4 +-- web/src/pages/skill-detail.test.tsx | 36 ++++++++++++++++++++- web/src/pages/skill-detail.tsx | 16 +++++---- web/src/shared/lib/skill-navigation.test.ts | 14 +++++++- web/src/shared/lib/skill-navigation.ts | 11 +++++++ 6 files changed, 76 insertions(+), 11 deletions(-) diff --git a/web/src/pages/search.test.tsx b/web/src/pages/search.test.tsx index aac629a0..4db0210c 100644 --- a/web/src/pages/search.test.tsx +++ b/web/src/pages/search.test.tsx @@ -158,6 +158,12 @@ describe('SearchPage', () => { expect(findButton('Official').variant).toBe('outline') }) + it('wraps the filter chip row so many labels can flow onto multiple lines', () => { + const html = renderToStaticMarkup() + + expect(html).toContain('flex flex-wrap items-center gap-2') + }) + it('toggles the selected label off and resets paging', () => { renderToStaticMarkup() diff --git a/web/src/pages/search.tsx b/web/src/pages/search.tsx index ec23d319..fded8a67 100644 --- a/web/src/pages/search.tsx +++ b/web/src/pages/search.tsx @@ -272,8 +272,8 @@ export function SearchPage() { ) : null} -
- {t('search.filters.label')} +
+ {t('search.filters.label')}