diff --git a/client/scripts/layers-baseline.json b/client/scripts/layers-baseline.json index b18cba06a..ca9772de9 100644 --- a/client/scripts/layers-baseline.json +++ b/client/scripts/layers-baseline.json @@ -38,8 +38,8 @@ "src/components/Roadtrip/RoadtripSidebarDriveBands.tsx": 1, "src/components/Roadtrip/RoadtripSidebarRefuelBand.tsx": 1, "src/components/Studio/StudioShell.tsx": 1, - "src/components/Studio/TravelElements.tsx": 1, "src/components/Studio/sidebar/StudioEntryCard.tsx": 1, + "src/components/Studio/travel/BadgeIcon.tsx": 1, "src/components/Todo/useTodoList.ts": 1, "src/components/shared/ConfirmDialog.tsx": 1, "src/components/shared/CountryFlag.tsx": 1, diff --git a/client/scripts/size-baseline.json b/client/scripts/size-baseline.json index b94aab77d..d3bbfdd42 100644 --- a/client/scripts/size-baseline.json +++ b/client/scripts/size-baseline.json @@ -16,7 +16,7 @@ "src/components/Planner/PlaceFormModal.test.tsx": 2836, "src/components/Planner/PlaceFormModal.tsx": 1157, "src/components/Planner/PlaceInspector.tsx": 1290, - "src/components/Studio/TravelElements.tsx": 1738, + "src/components/Studio/TravelElements.tsx": 1559, "src/components/Studio/countryShapes.ts": 2595, "src/index.css": 1636, "src/mobile/screens/admin/MAdminPluginsPanel.tsx": 1507, diff --git a/client/scripts/theme-baseline.json b/client/scripts/theme-baseline.json index 34a2dc24f..f6ee62c99 100644 --- a/client/scripts/theme-baseline.json +++ b/client/scripts/theme-baseline.json @@ -52,7 +52,7 @@ "components/Journey/moodConfig.ts": 5, "components/Layout/BottomNav.tsx": 3, "components/Layout/DemoBanner.tsx": 25, - "components/Layout/InAppNotificationBell.tsx": 8, + "components/Layout/InAppNotificationBell.tsx": 3, "components/Layout/MobileTopBar.tsx": 51, "components/Layout/Navbar.tsx": 21, "components/Layout/NewVersionNotice.tsx": 3, @@ -72,7 +72,7 @@ "components/Map/poiCategories.ts": 7, "components/Map/ratingBadge.ts": 2, "components/Map/reservationsMapbox.ts": 1, - "components/Notifications/InAppNotificationItem.tsx": 8, + "components/Notifications/InAppNotificationItem.tsx": 1, "components/PDF/TripPDF.tsx": 53, "components/Packing/PackingListPanelBagModal.tsx": 2, "components/Packing/PackingListPanelCategoryGroup.tsx": 5, @@ -295,7 +295,7 @@ "pages/FilesPage.tsx": 11, "pages/ForgotPasswordPage.tsx": 18, "pages/HelpPage.tsx": 21, - "pages/InAppNotificationsPage.tsx": 9, + "pages/InAppNotificationsPage.tsx": 2, "pages/JoinTripPage.tsx": 4, "pages/JourneyDetailPage.tsx": 53, "pages/JourneyPage.tsx": 64, diff --git a/client/scripts/theme-disable-baseline.json b/client/scripts/theme-disable-baseline.json index 0e1a34d3f..8110a9c88 100644 --- a/client/scripts/theme-disable-baseline.json +++ b/client/scripts/theme-disable-baseline.json @@ -44,9 +44,10 @@ "components/Studio/SpreadView.tsx": 1, "components/Studio/StudioElementsPanel.tsx": 2, "components/Studio/StudioSwatches.tsx": 1, - "components/Studio/TravelElements.tsx": 6, + "components/Studio/TravelElements.tsx": 3, "components/Studio/peerColour.ts": 1, "components/Studio/printSheets.ts": 4, + "components/Studio/travel/badgeLook.ts": 2, "components/Trips/TripMemberAvatar.tsx": 2, "components/Vacay/VacayPersons.tsx": 1, "components/shared/DialogShell.tsx": 2, diff --git a/client/src/components/Layout/InAppNotificationBell.tsx b/client/src/components/Layout/InAppNotificationBell.tsx index 997ecbbe4..e18935bad 100644 --- a/client/src/components/Layout/InAppNotificationBell.tsx +++ b/client/src/components/Layout/InAppNotificationBell.tsx @@ -68,12 +68,12 @@ export default function InAppNotificationBell(): React.ReactElement { {/* Click-away catcher only — the bell button itself closes the panel again from the keyboard. */}
{t('notifications.empty')}
-{t('notifications.emptyDescription')}
+{t('notifications.empty')}
+{t('notifications.emptyDescription')}
+
{hasUnknownTitle ? notification.title_key : titleText}
-+
{hasUnknownBody ? notification.text_key : bodyText}
{/* Boolean actions */} {notification.type === 'boolean' && notification.positive_text_key && notification.negative_text_key && ( -{t('journey.studio.saveNewer')}
+ {/* Focused on arrival, so Enter reloads and nothing behind the overlay takes the keyboard. */} +{t('journey.studio.noRoute')}
+{t('journey.studio.noCountries')}
- )} -{t('journey.studio.noRoute')}
+ // Only the trips that put stops on the route: a linked trip nobody wrote about would place an empty frame. + const trips = (stats.trips ?? []).filter(trip => trip.points > 0) + return ( + <> +{t('journey.studio.noCountries')}
+ return ( + <> + {stats.countries.slice(0, 12).map(c => ( ++
{total} {t('notifications.countLabel', { count: total })}