+
+
);
};
diff --git a/apps/site/app/[locale]/not-found.tsx b/apps/site/app/[locale]/not-found.tsx
index 44d8839a42d7d..ec3a343628e52 100644
--- a/apps/site/app/[locale]/not-found.tsx
+++ b/apps/site/app/[locale]/not-found.tsx
@@ -6,40 +6,35 @@ import { useTranslations } from 'next-intl';
import type { FC } from 'react';
import Button from '@/components/Common/Button';
-import GlowingBackdrop from '@/components/Common/GlowingBackdrop';
-import CenteredLayout from '@/layouts/Centered';
+import GlowingBackdropLayout from '@/layouts/GlowingBackdrop';
const NotFoundPage: FC = () => {
const t = useTranslations();
return (
-
-
-
-
- 404
-
- {t('layouts.error.notFound.title')}
-
-
-
-
-
+
+ 404
+
+ {t('layouts.error.notFound.title')}
+
+
+
+
-
- {t('layouts.error.notFound.description')}
-
-
-
-
+
+
+ {t('layouts.error.notFound.description')}
+
+
+
);
};
diff --git a/apps/site/app/global-error.tsx b/apps/site/app/global-error.tsx
index 6cab08ae716f9..cb99e04c2fb36 100644
--- a/apps/site/app/global-error.tsx
+++ b/apps/site/app/global-error.tsx
@@ -5,9 +5,8 @@ import { captureException } from '@sentry/nextjs';
import type { FC } from 'react';
import Button from '@/components/Common/Button';
-import GlowingBackdrop from '@/components/Common/GlowingBackdrop';
import BaseLayout from '@/layouts/Base';
-import CenteredLayout from '@/layouts/Centered';
+import GlowingBackdropLayout from '@/layouts/GlowingBackdrop';
const GlobalErrorPage: FC<{ error: Error }> = ({ error }) => {
captureException(error);
@@ -16,23 +15,17 @@ const GlobalErrorPage: FC<{ error: Error }> = ({ error }) => {
-
-
-
-
- 500
-
- Internal Server Error
-
-
- This page has thrown a non-recoverable error.
-
-
-
-
+
+ 500
+
Internal Server Error
+
+ This page has thrown a non-recoverable error.
+
+
+
diff --git a/apps/site/components/withLayout.tsx b/apps/site/components/withLayout.tsx
index 7e8d50b300354..8d5a7d4745e9a 100644
--- a/apps/site/components/withLayout.tsx
+++ b/apps/site/components/withLayout.tsx
@@ -1,10 +1,11 @@
import type { FC, PropsWithChildren } from 'react';
import AboutLayout from '@/layouts/About';
+import ArticlePageLayout from '@/layouts/ArticlePage';
import BlogLayout from '@/layouts/Blog';
import DefaultLayout from '@/layouts/Default';
import DownloadLayout from '@/layouts/Download';
-import HomeLayout from '@/layouts/Home';
+import GlowingBackdropLayout from '@/layouts/GlowingBackdrop';
import LearnLayout from '@/layouts/Learn';
import PostLayout from '@/layouts/Post';
import SearchLayout from '@/layouts/Search';
@@ -12,13 +13,14 @@ import type { Layouts } from '@/types';
const layouts = {
about: AboutLayout,
- home: HomeLayout,
+ home: props => ,
learn: LearnLayout,
page: DefaultLayout,
'blog-post': PostLayout,
'blog-category': BlogLayout,
search: SearchLayout,
download: DownloadLayout,
+ article: ArticlePageLayout,
} satisfies Record;
type WithLayoutProps = PropsWithChildren<{ layout: L }>;
diff --git a/apps/site/layouts/ArticlePage.tsx b/apps/site/layouts/ArticlePage.tsx
new file mode 100644
index 0000000000000..a2cadddc0cfb2
--- /dev/null
+++ b/apps/site/layouts/ArticlePage.tsx
@@ -0,0 +1,24 @@
+import type { FC, PropsWithChildren } from 'react';
+
+import WithMetaBar from '@/components/withMetaBar';
+import WithNavBar from '@/components/withNavBar';
+import WithSidebar from '@/components/withSidebar';
+import ArticleLayout from '@/layouts/Article';
+
+const ArticlePageLayout: FC = ({ children }) => (
+ <>
+
+
+
+
+
+
+ {children}
+
+
+
+
+ >
+);
+
+export default ArticlePageLayout;
diff --git a/apps/site/layouts/Centered.tsx b/apps/site/layouts/Centered.tsx
index f63f312b451aa..e69de29bb2d1d 100644
--- a/apps/site/layouts/Centered.tsx
+++ b/apps/site/layouts/Centered.tsx
@@ -1,18 +0,0 @@
-import type { FC, PropsWithChildren } from 'react';
-
-import WithFooter from '@/components/withFooter';
-import WithNavBar from '@/components/withNavBar';
-
-import styles from './layouts.module.css';
-
-const CenteredLayout: FC = ({ children }) => (
- <>
-
-
-
{children}
-
-
- >
-);
-
-export default CenteredLayout;
diff --git a/apps/site/layouts/Content.tsx b/apps/site/layouts/Content.tsx
deleted file mode 100644
index 5e67339e0ad7c..0000000000000
--- a/apps/site/layouts/Content.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { FC, PropsWithChildren } from 'react';
-
-import styles from './layouts.module.css';
-
-const ContentLayout: FC = ({ children }) => (
-
{children}
-);
-
-export default ContentLayout;
diff --git a/apps/site/layouts/GlowingBackdrop.tsx b/apps/site/layouts/GlowingBackdrop.tsx
new file mode 100644
index 0000000000000..2457baf8e0877
--- /dev/null
+++ b/apps/site/layouts/GlowingBackdrop.tsx
@@ -0,0 +1,35 @@
+import classNames from 'classnames';
+import type { FC, PropsWithChildren } from 'react';
+
+import GlowingBackdrop from '@/components/Common/GlowingBackdrop';
+import WithFooter from '@/components/withFooter';
+import WithNavBar from '@/components/withNavBar';
+
+import styles from './layouts.module.css';
+
+type GlowingBackdropLayoutProps = PropsWithChildren<{
+ kind?: 'home';
+}>;
+
+const GlowingBackdropLayout: FC = ({
+ kind,
+ children,
+}) => (
+ <>
+
+
+
+
+
+ {children}
+
+
+
+ >
+);
+
+export default GlowingBackdropLayout;
diff --git a/apps/site/layouts/Home.tsx b/apps/site/layouts/Home.tsx
deleted file mode 100644
index 9a95e136b6c05..0000000000000
--- a/apps/site/layouts/Home.tsx
+++ /dev/null
@@ -1,16 +0,0 @@
-import type { FC, PropsWithChildren } from 'react';
-
-import GlowingBackdrop from '@/components/Common/GlowingBackdrop';
-import CenteredLayout from '@/layouts/Centered';
-
-import styles from './layouts.module.css';
-
-const HomeLayout: FC = ({ children }) => (
-
-
-
- {children}
-
-);
-
-export default HomeLayout;
diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx
index 23a3d7d0c3b54..e6cd3fc715949 100644
--- a/apps/site/layouts/Post.tsx
+++ b/apps/site/layouts/Post.tsx
@@ -7,7 +7,6 @@ import WithFooter from '@/components/withFooter';
import WithMetaBar from '@/components/withMetaBar';
import WithNavBar from '@/components/withNavBar';
import { useClientContext } from '@/hooks/react-server';
-import ContentLayout from '@/layouts/Content';
import {
mapAuthorToCardAuthors,
mapBlogCategoryToPreviewType,
@@ -26,7 +25,7 @@ const PostLayout: FC = ({ children }) => {
<>
-
+
{frontmatter.title}
@@ -51,7 +50,7 @@ const PostLayout: FC = ({ children }) => {
-
+
>
diff --git a/apps/site/pages/en/download/package-manager/all.md b/apps/site/pages/en/download/package-manager/all.md
index 3feb29f9c26ad..cc58af56998eb 100644
--- a/apps/site/pages/en/download/package-manager/all.md
+++ b/apps/site/pages/en/download/package-manager/all.md
@@ -1,5 +1,5 @@
---
-layout: download
+layout: article
title: Installing Node.js via package manager
---
@@ -7,36 +7,6 @@ title: Installing Node.js via package manager
> The packages on this page are maintained and supported by their respective packagers, **not** the Node.js core team. Please report any issues you encounter to the package maintainer. If it turns out your issue is a bug in Node.js itself, the maintainer will report the issue upstream.
----
-
-- [Alpine Linux](#alpine-linux)
-- [Android](#android)
-- [Arch Linux](#arch-linux)
-- [CentOS, Fedora and Red Hat Enterprise Linux](#centos-fedora-and-red-hat-enterprise-linux)
-- [Debian and Ubuntu based Linux distributions](#debian-and-ubuntu-based-linux-distributions)
-- [Exherbo Linux](#exherbo-linux)
-- [fnm](#fnm)
-- [FreeBSD](#freebsd)
-- [Gentoo](#gentoo)
-- [IBM i](#ibm-i)
-- [macOS](#macos)
-- [n](#n)
-- [NetBSD](#netbsd)
-- [Nodenv](#nodenv)
-- [nvm](#nvm)
-- [nvs](#nvs)
-- [OpenBSD](#openbsd)
-- [openSUSE and SLE](#opensuse-and-sle)
-- [SmartOS and illumos](#smartos-and-illumos)
-- [Snap](#snap)
-- [Solus](#solus)
-- [vfox](#vfox)
-- [Void Linux](#void-linux)
-- [Windows](#windows-1)
-- [z/OS](#zos)
-
----
-
## Alpine Linux
Node.js LTS and npm packages are available in the Main Repository.
diff --git a/apps/site/types/layouts.ts b/apps/site/types/layouts.ts
index 44bf83c8c5ef0..8e354bd51329e 100644
--- a/apps/site/types/layouts.ts
+++ b/apps/site/types/layouts.ts
@@ -6,4 +6,5 @@ export type Layouts =
| 'blog-category'
| 'blog-post'
| 'search'
- | 'download';
+ | 'download'
+ | 'article';