diff --git a/client/src/pages/DashboardPage.test.tsx b/client/src/pages/DashboardPage.test.tsx index 5effca39..4aac3121 100644 --- a/client/src/pages/DashboardPage.test.tsx +++ b/client/src/pages/DashboardPage.test.tsx @@ -416,15 +416,10 @@ describe('DashboardPage', () => { expect(screen.getAllByText('Paris Adventure').length).toBeGreaterThan(0); }); - // Find settings button — it's the gear icon button without title or text + // Find settings button — the gear icon button (icon-only, no visible label) const allBtns = screen.getAllByRole('button'); - const settingsButton = allBtns.find( - btn => { - const title = btn.getAttribute('title'); - const text = btn.textContent?.trim() || ''; - // Settings gear: no title, no meaningful text, not the notification bell - return !title && !text && btn.querySelector('.lucide-settings'); - } + const settingsButton = allBtns.find(btn => + btn.querySelector('.lucide-settings') && !btn.textContent?.trim() ); expect(settingsButton).toBeDefined(); @@ -646,14 +641,10 @@ describe('DashboardPage', () => { expect(screen.getAllByText('Paris Adventure').length).toBeGreaterThan(0); }); - // Open widget settings + // Open widget settings — gear icon button (icon-only, no visible label) const allBtns = screen.getAllByRole('button'); - const settingsButton = allBtns.find( - btn => { - const title = btn.getAttribute('title'); - const text = btn.textContent?.trim() || ''; - return !title && !text && btn.querySelector('.lucide-settings'); - } + const settingsButton = allBtns.find(btn => + btn.querySelector('.lucide-settings') && !btn.textContent?.trim() ); expect(settingsButton).toBeDefined(); diff --git a/client/src/pages/DashboardPage.tsx b/client/src/pages/DashboardPage.tsx index 96c8375f..47063034 100644 --- a/client/src/pages/DashboardPage.tsx +++ b/client/src/pages/DashboardPage.tsx @@ -897,61 +897,76 @@ export default function DashboardPage(): React.ReactElement { - {/* Desktop header */} -
-
-

{t('dashboard.title')}

-

+ {/* Desktop header — unified toolbar */} +

+
+

+ {t('dashboard.title')} +

+
+ {isLoading ? t('common.loading') : trips.length > 0 ? `${t(trips.length !== 1 ? 'dashboard.subtitle.activeMany' : 'dashboard.subtitle.activeOne', { count: trips.length })}${archivedTrips.length > 0 ? t('dashboard.subtitle.archivedSuffix', { count: archivedTrips.length }) : ''}` : t('dashboard.subtitle.empty')} -

-
-
- {/* View mode toggle */} - - {/* Widget settings */} - - {can('trip_create') && } + + +
+ + + {can('trip_create') && ( + + )} +
diff --git a/client/src/pages/JourneyPage.tsx b/client/src/pages/JourneyPage.tsx index dbd6d818..31da4b9a 100644 --- a/client/src/pages/JourneyPage.tsx +++ b/client/src/pages/JourneyPage.tsx @@ -150,39 +150,41 @@ export default function JourneyPage() { )}
- {/* Header — desktop */} -
-
-

{t('journey.title')}

-

{t("journey.frontpage.subtitle")}

-
-
- {searchOpen && ( - setSearchQuery(e.target.value)} - onKeyDown={e => { if (e.key === 'Escape') { setSearchQuery(''); setSearchOpen(false) } }} - placeholder={t('journey.search.placeholder')} - autoFocus - className="w-52 px-3 py-2 border border-zinc-200 dark:border-zinc-700 rounded-[10px] text-[13px] bg-white dark:bg-zinc-800 text-zinc-900 dark:text-white focus:border-zinc-400 focus:outline-none" - /> - )} - - + {/* Header — desktop (unified toolbar) */} +
+
+

+ {t('journey.title')} +

+
+ + {t('journey.frontpage.subtitle')} + + +
+ +
diff --git a/client/src/pages/VacayPage.tsx b/client/src/pages/VacayPage.tsx index b3a524ed..d0d50689 100644 --- a/client/src/pages/VacayPage.tsx +++ b/client/src/pages/VacayPage.tsx @@ -138,19 +138,15 @@ export default function VacayPage(): React.ReactElement {
- {/* Header */} -
+ {/* Mobile + tablet header (filter toggle lives here) */} +
-
-

{t('admin.addons.catalog.vacay.name')}

-

{t('vacay.subtitle')}

-
+

{t('admin.addons.catalog.vacay.name')}

- {/* Mobile sidebar toggle */}
+ {/* Desktop header — unified toolbar (sidebar is always visible at this width) */} +
+
+

+ {t('admin.addons.catalog.vacay.name')} +

+
+ + {t('vacay.subtitle')} + +
+ +
+
+
+ {/* Main layout */}
{/* Desktop Sidebar */}