diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/dialog/dialog.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/dialog/dialog.tsx
index df8ec7e3b9c07..c624f5818d256 100644
--- a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/dialog/dialog.tsx
+++ b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/dialog/dialog.tsx
@@ -2,11 +2,13 @@ import { Dialog } from '../../Dialog/Dialog'
import { noop as css } from '../../../helpers/noop-template'
type ErrorOverlayDialogProps = {
+ isTurbopack?: boolean
children?: React.ReactNode
onClose?: () => void
}
export function ErrorOverlayDialog({
+ isTurbopack,
children,
onClose,
}: ErrorOverlayDialogProps) {
@@ -16,7 +18,7 @@ export function ErrorOverlayDialog({
aria-labelledby="nextjs__container_errors_label"
aria-describedby="nextjs__container_errors_desc"
onClose={onClose}
- className="error-overlay-dialog"
+ className={`error-overlay-dialog ${isTurbopack ? 'turbopack' : ''}`}
>
{children}
@@ -30,4 +32,37 @@ export const DIALOG_STYLES = css`
border-radius: var(--rounded-xl);
box-shadow: var(--shadow-md);
}
+
+ .error-overlay-dialog.turbopack {
+ border: 1px solid transparent;
+ background:
+ linear-gradient(var(--color-background-100), var(--color-background-100))
+ padding-box,
+ linear-gradient(
+ to right top,
+ var(--color-gray-400) 75%,
+ var(--color-turbopack-border-blue) 87.5%,
+ var(--color-turbopack-border-red) 100%
+ )
+ border-box;
+ }
+
+ @media (prefers-color-scheme: dark) {
+ .error-overlay-dialog.turbopack {
+ border: 1px solid transparent;
+ background:
+ linear-gradient(
+ var(--color-background-100),
+ var(--color-background-100)
+ )
+ padding-box,
+ linear-gradient(
+ to right top,
+ var(--color-gray-400) 75%,
+ var(--color-turbopack-border-blue) 87.5%,
+ var(--color-turbopack-border-red) 100%
+ )
+ border-box;
+ }
+ }
`
diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-floating-header/error-overlay-floating-header.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-floating-header/error-overlay-floating-header.tsx
index d119e9a2dcb9f..4c3bf72cc3c7c 100644
--- a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-floating-header/error-overlay-floating-header.tsx
+++ b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-floating-header/error-overlay-floating-header.tsx
@@ -10,6 +10,7 @@ type ErrorOverlayFloatingHeaderProps = {
activeIdx?: number
setActiveIndex?: (index: number) => void
versionInfo?: VersionInfo
+ isTurbopack?: boolean
}
export function ErrorOverlayFloatingHeader({
@@ -17,6 +18,7 @@ export function ErrorOverlayFloatingHeader({
activeIdx,
setActiveIndex,
versionInfo,
+ isTurbopack,
}: ErrorOverlayFloatingHeaderProps) {
return (
@@ -26,7 +28,10 @@ export function ErrorOverlayFloatingHeader({
activeIdx={activeIdx ?? 0}
onActiveIndexChange={setActiveIndex ?? (() => {})}
/>
-
+
)
}
diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.stories.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.stories.tsx
index 10d9ccbdeb573..168a528ecbb1c 100644
--- a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.stories.tsx
+++ b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.stories.tsx
@@ -26,3 +26,10 @@ export const Default: Story = {
children: "Module not found: Cannot find module './missing-module'",
},
}
+
+export const Turbopack: Story = {
+ args: {
+ ...Default.args,
+ isTurbopack: true,
+ },
+}
diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.tsx
index c7f4ff9a96f9e..24280923aa00f 100644
--- a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.tsx
+++ b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/components/Errors/error-overlay-layout/error-overlay-layout.tsx
@@ -48,6 +48,7 @@ type ErrorOverlayLayoutProps = {
activeIdx?: number
setActiveIndex?: (index: number) => void
footerMessage?: string
+ isTurbopack?: boolean
}
export function ErrorOverlayLayout({
@@ -64,6 +65,7 @@ export function ErrorOverlayLayout({
activeIdx,
setActiveIndex,
footerMessage,
+ isTurbopack = !!process.env.TURBOPACK,
}: ErrorOverlayLayoutProps) {
return (
@@ -72,9 +74,10 @@ export function ErrorOverlayLayout({
activeIdx={activeIdx}
setActiveIndex={setActiveIndex}
versionInfo={versionInfo}
+ isTurbopack={isTurbopack}
/>
-
+
.turbopack-text {
+ background: linear-gradient(
+ to right,
+ var(--color-turbopack-text-red) 0%,
+ var(--color-turbopack-text-blue) 100%
+ );
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
@media (prefers-color-scheme: dark) {
- .turbopack-text {
- background: linear-gradient(280deg, #45b2ff 0%, #ff6d92 100%);
+ .nextjs-container-build-error-version-status.turbopack-border {
+ border: 1px solid transparent;
+ background:
+ linear-gradient(
+ var(--color-background-100),
+ var(--color-background-100)
+ )
+ padding-box,
+ linear-gradient(
+ to right,
+ var(--color-turbopack-border-red) 0%,
+ var(--color-turbopack-border-blue) 100%
+ )
+ border-box;
+ border-radius: var(--rounded-full);
+ }
+
+ .nextjs-container-build-error-version-status > .turbopack-text {
+ background: linear-gradient(
+ to right,
+ var(--color-turbopack-text-red) 0%,
+ var(--color-turbopack-text-blue) 100%
+ );
background-clip: text;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
diff --git a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/styles/colors.tsx b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/styles/colors.tsx
index 90f7236c5a8a0..0ceb4287d4d46 100644
--- a/packages/next/src/client/components/react-dev-overlay/_experimental/internal/styles/colors.tsx
+++ b/packages/next/src/client/components/react-dev-overlay/_experimental/internal/styles/colors.tsx
@@ -92,6 +92,12 @@ export function Colors() {
--color-green-800: #388e4a;
--color-green-900: #297c3b;
--color-green-1000: #18311e;
+
+ /* Turbopack Light - Temporary */
+ --color-turbopack-text-red: #ff1e56;
+ --color-turbopack-text-blue: #0096ff;
+ --color-turbopack-border-red: #f0adbe;
+ --color-turbopack-border-blue: #adccea;
}
@media (prefers-color-scheme: dark) {
@@ -182,6 +188,12 @@ export function Colors() {
--color-green-800: #388e4a;
--color-green-900: #63c174;
--color-green-1000: #e5fbeb;
+
+ /* Turbopack Dark - Temporary */
+ --color-turbopack-text-red: #ff6d92;
+ --color-turbopack-text-blue: #45b2ff;
+ --color-turbopack-border-red: #6e293b;
+ --color-turbopack-border-blue: #284f80;
}
}
`}