commit b9cbb0a45567cf944ba9e41e31fc4d28a86af5a8
parent 3739d11f3bbb075ceb6a282cbe48a22016c0699e
Author: Maxx Crawford <mcrawford@mozilla.com>
Date: Tue, 4 Nov 2025 22:30:17 +0000
Bug 1996335 - Remove "Scroll for More" text label r=home-newtab-reviewers,reemhamz
Differential Revision: https://phabricator.services.mozilla.com/D270923
Diffstat:
5 files changed, 2 insertions(+), 96 deletions(-)
diff --git a/browser/extensions/newtab/content-src/components/Widgets/Widgets.jsx b/browser/extensions/newtab/content-src/components/Widgets/Widgets.jsx
@@ -14,7 +14,6 @@ const PREF_WIDGETS_LISTS_ENABLED = "widgets.lists.enabled";
const PREF_WIDGETS_SYSTEM_LISTS_ENABLED = "widgets.system.lists.enabled";
const PREF_WIDGETS_TIMER_ENABLED = "widgets.focusTimer.enabled";
const PREF_WIDGETS_SYSTEM_TIMER_ENABLED = "widgets.system.focusTimer.enabled";
-const PREF_FEEDS_SECTION_TOPSTORIES = "feeds.section.topstories";
// resets timer to default values (exported for testing)
// In practice, this logic runs inside a useEffect when
@@ -74,8 +73,6 @@ function Widgets() {
prefs[PREF_WIDGETS_SYSTEM_TIMER_ENABLED]) &&
prefs[PREF_WIDGETS_TIMER_ENABLED];
- const recommendedStoriesEnabled = prefs[PREF_FEEDS_SECTION_TOPSTORIES];
-
// track previous timerEnabled state to detect when it becomes disabled
const prevTimerEnabledRef = useRef(timerEnabled);
@@ -122,11 +119,6 @@ function Widgets() {
/>
)}
</div>
- {recommendedStoriesEnabled && (
- <div className="widgets-scroll-message fade-in" aria-live="polite">
- <p data-l10n-id="newtab-widget-keep-scrolling"></p>
- </div>
- )}
{messageData?.content?.messageType === "WidgetMessage" && (
<MessageWrapper dispatch={dispatch}>
<WidgetsFeatureHighlight dispatch={dispatch} />
diff --git a/browser/extensions/newtab/content-src/components/Widgets/_Widgets.scss b/browser/extensions/newtab/content-src/components/Widgets/_Widgets.scss
@@ -2,18 +2,6 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
-@keyframes fade-in {
- from {
- opacity: 0;
- transform: translateY(4px);
- }
-
- to {
- opacity: 1;
- transform: translateY(0);
- }
-}
-
.discovery-stream.ds-layout.ds-layout-widgets {
margin-inline: 0;
}
@@ -24,34 +12,7 @@
align-items: center;
justify-content: center;
position: relative;
- // Bug 1967304 - Large number (48px)
- padding-block-end: calc(var(--space-xlarge) * 2);
-
- .widgets-scroll-message {
- @include wallpaper-contrast-fix;
-
- color: var(--newtab-contextual-text-primary-color);
- position: absolute;
- bottom: 0;
- border-radius: var(--button-border-radius);
- padding: var(--space-small) var(--space-large);
-
- p {
- margin: 0;
-
- /**
- * @backward-compat { version 146 }
- *
- * Replace this with `--font-weight-semibold` once 146 hits release.
- */
- font-weight: var(--heading-font-weight);
- }
-
- @media (prefers-reduced-motion: no-preference) {
- animation: fade-in 0.25s ease-out 0.7s both;
- }
-
- }
+ padding-block-end: var(--space-large);
}
.widgets-container {
diff --git a/browser/extensions/newtab/css/activity-stream.css b/browser/extensions/newtab/css/activity-stream.css
@@ -4361,16 +4361,6 @@ dialog::after {
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
-@keyframes fade-in {
- from {
- opacity: 0;
- transform: translateY(4px);
- }
- to {
- opacity: 1;
- transform: translateY(0);
- }
-}
.discovery-stream.ds-layout.ds-layout-widgets {
margin-inline: 0;
}
@@ -4381,34 +4371,7 @@ dialog::after {
align-items: center;
justify-content: center;
position: relative;
- padding-block-end: calc(var(--space-xlarge) * 2);
-}
-.widgets-wrapper .widgets-scroll-message {
- color: var(--newtab-contextual-text-primary-color);
- position: absolute;
- bottom: 0;
- border-radius: var(--button-border-radius);
- padding: var(--space-small) var(--space-large);
-}
-.lightWallpaper .widgets-wrapper .widgets-scroll-message {
- color-scheme: light;
-}
-.darkWallpaper .widgets-wrapper .widgets-scroll-message {
- color-scheme: dark;
-}
-.widgets-wrapper .widgets-scroll-message p {
- margin: 0;
- /**
- * @backward-compat { version 146 }
- *
- * Replace this with `--font-weight-semibold` once 146 hits release.
- */
- font-weight: var(--heading-font-weight);
-}
-@media (prefers-reduced-motion: no-preference) {
- .widgets-wrapper .widgets-scroll-message {
- animation: fade-in 0.25s ease-out 0.7s both;
- }
+ padding-block-end: var(--space-large);
}
.widgets-container:has(.lists), .widgets-container:has(.focus-timer) {
diff --git a/browser/extensions/newtab/data/content/activity-stream.bundle.js b/browser/extensions/newtab/data/content/activity-stream.bundle.js
@@ -13494,7 +13494,6 @@ const PREF_WIDGETS_LISTS_ENABLED = "widgets.lists.enabled";
const PREF_WIDGETS_SYSTEM_LISTS_ENABLED = "widgets.system.lists.enabled";
const PREF_WIDGETS_TIMER_ENABLED = "widgets.focusTimer.enabled";
const PREF_WIDGETS_SYSTEM_TIMER_ENABLED = "widgets.system.focusTimer.enabled";
-const PREF_FEEDS_SECTION_TOPSTORIES = "feeds.section.topstories";
// resets timer to default values (exported for testing)
// In practice, this logic runs inside a useEffect when
@@ -13537,7 +13536,6 @@ function Widgets() {
const nimbusTimerTrainhopEnabled = prefs.trainhopConfig?.widgets?.timerEnabled;
const listsEnabled = (nimbusListsTrainhopEnabled || nimbusListsEnabled || prefs[PREF_WIDGETS_SYSTEM_LISTS_ENABLED]) && prefs[PREF_WIDGETS_LISTS_ENABLED];
const timerEnabled = (nimbusTimerTrainhopEnabled || nimbusTimerEnabled || prefs[PREF_WIDGETS_SYSTEM_TIMER_ENABLED]) && prefs[PREF_WIDGETS_TIMER_ENABLED];
- const recommendedStoriesEnabled = prefs[PREF_FEEDS_SECTION_TOPSTORIES];
// track previous timerEnabled state to detect when it becomes disabled
const prevTimerEnabledRef = (0,external_React_namespaceObject.useRef)(timerEnabled);
@@ -13576,11 +13574,6 @@ function Widgets() {
}), timerEnabled && /*#__PURE__*/external_React_default().createElement(FocusTimer, {
dispatch: dispatch,
handleUserInteraction: handleUserInteraction
- })), recommendedStoriesEnabled && /*#__PURE__*/external_React_default().createElement("div", {
- className: "widgets-scroll-message fade-in",
- "aria-live": "polite"
- }, /*#__PURE__*/external_React_default().createElement("p", {
- "data-l10n-id": "newtab-widget-keep-scrolling"
})), messageData?.content?.messageType === "WidgetMessage" && /*#__PURE__*/external_React_default().createElement(MessageWrapper, {
dispatch: dispatch
}, /*#__PURE__*/external_React_default().createElement(WidgetsFeatureHighlight, {
diff --git a/browser/locales/en-US/browser/newtab/newtab.ftl b/browser/locales/en-US/browser/newtab/newtab.ftl
@@ -622,9 +622,6 @@ newtab-widget-timer-menu-notifications-on = Turn on notifications
newtab-widget-timer-menu-hide = Hide timer
newtab-widget-timer-menu-learn-more = Learn more
-# Message that appears when widgets are full-height. This reminds users that there is more New Tab content to see if they scroll
-newtab-widget-keep-scrolling = Scroll for more
-
newtab-widget-message-title = Stay focused with lists and a built-in timer
# to-dos stands for "things to do".
newtab-widget-message-copy = From quick reminders to daily to-dos, focus sessions to stretch breaks — stay on task and on time.