diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.tsx index 22b58d8f86d6f..e5b8ed77d7921 100644 --- a/packages/next/src/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.tsx +++ b/packages/next/src/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.tsx @@ -37,11 +37,13 @@ export default function ReactDevOverlay({ {({ runtimeErrors, totalErrorCount }) => { + const isBuildError = runtimeErrors.length === 0 return ( <> diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.tsx index cce9013de1176..b1783ad676d10 100644 --- a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.tsx +++ b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.tsx @@ -3,13 +3,14 @@ import type { OverlayState } from '../../../../../shared' import { useState, useEffect, useRef, createContext, useContext } from 'react' import { Toast } from '../../toast' -import { Cross, NextLogo } from './internal/next-logo' +import { NextLogo } from './internal/next-logo' import { useIsDevBuilding } from '../../../../../../../dev/dev-build-indicator/internal/initialize-for-new-overlay' import { useIsDevRendering } from './internal/dev-render-indicator' import { useDelayedRender } from '../../../hooks/use-delayed-render' import { noop as css } from '../../../helpers/noop-template' import { TurbopackInfo } from './dev-tools-info/turbopack-info' import { RouteInfo } from './dev-tools-info/route-info' +import { StopIcon } from '../../../icons/stop-icon' // TODO: add E2E tests to cover different scenarios @@ -23,11 +24,13 @@ type DevToolsIndicatorPosition = typeof INDICATOR_POSITION export function DevToolsIndicator({ state, errorCount, + isBuildError, setIsErrorOverlayOpen, position = INDICATOR_POSITION, }: { state: OverlayState errorCount: number + isBuildError: boolean setIsErrorOverlayOpen: Dispatch> // Technically this prop isn't needed, but useful for testing. position?: DevToolsIndicatorPosition @@ -47,6 +50,7 @@ export function DevToolsIndicator({ isTurbopack={!!process.env.TURBOPACK} position={position} disabled={state.disableDevIndicator} + isBuildError={isBuildError} /> ) ) @@ -71,6 +75,7 @@ function DevToolsPopover({ isStaticRoute, isTurbopack, position, + isBuildError, hide, setIsErrorOverlayOpen, }: { @@ -80,6 +85,7 @@ function DevToolsPopover({ semver: string | undefined isTurbopack: boolean position: DevToolsIndicatorPosition + isBuildError: boolean hide: () => void setIsErrorOverlayOpen: Dispatch> }) { @@ -263,6 +269,7 @@ function DevToolsPopover({ openErrorOverlay={openErrorOverlay} isDevBuilding={useIsDevBuilding()} isDevRendering={useIsDevRendering()} + isBuildError={isBuildError} /> {routeInfoMounted && ( @@ -354,7 +361,7 @@ function DevToolsPopover({ } + value={} onClick={hide} index={isTurbopack ? 2 : 3} /> @@ -368,12 +375,12 @@ function DevToolsPopover({ function ChevronRight() { return ( - + ) diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.tsx index a21959c825525..91ad664b3dbbe 100644 --- a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.tsx +++ b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.tsx @@ -7,6 +7,7 @@ interface Props extends React.ComponentProps<'button'> { issueCount: number isDevBuilding: boolean isDevRendering: boolean + isBuildError: boolean onTriggerClick: () => void openErrorOverlay: () => void } @@ -62,6 +63,7 @@ export const NextLogo = forwardRef(function NextLogo( issueCount, isDevBuilding, isDevRendering, + isBuildError, onTriggerClick, openErrorOverlay, ...props @@ -224,7 +226,9 @@ export const NextLogo = forwardRef(function NextLogo( gap: var(--padding); align-items: center; padding-left: 8px; - padding-right: ${disabled ? '8px' : 'calc(var(--padding) * 2)'}; + padding-right: ${disabled || isBuildError + ? '8px' + : 'calc(var(--padding) * 2)'}; height: 32px; margin: 0 var(--padding); border-radius: 9999px; @@ -462,7 +466,7 @@ export const NextLogo = forwardRef(function NextLogo( )} - {!disabled && ( + {!disabled && !isBuildError && (