diff --git a/components/HomePage/ConfigSection/index.jsx b/components/HomePage/ConfigSection/index.jsx
new file mode 100644
index 00000000..592f176a
--- /dev/null
+++ b/components/HomePage/ConfigSection/index.jsx
@@ -0,0 +1,57 @@
+import styles from './index.module.css';
+
+export default function ConfigSection({ children }) {
+ const configFeatures = [
+ 'Zero-config for common setups',
+ 'Tree-shaking out of the box',
+ 'Hot Module Replacement',
+ 'Long-term caching with content hashes',
+ ];
+ return (
+
+
+
+
CONFIGURATION
+
+ Sensible defaults. Configurable when you need it.
+
+
+ A single config file is enough for most projects. Compose loaders to
+ transform any input; reach for plugins when behavior is non-trivial.
+
+
+
+
+ {/* rendering the code block */}
+ {children}
+
+
Loaders for any input
+
+ Through loaders, modules can be CommonJS, AMD, ES6 modules, CSS,
+ Images, JSON, Coffeescript, LESS — and your custom stuff.
+
+
+
+ {configFeatures.map((feature, index) => (
+
+
+
+
+ {feature}
+
+ ))}
+
+
+
+
+
+ );
+}
diff --git a/components/HomePage/ConfigSection/index.module.css b/components/HomePage/ConfigSection/index.module.css
new file mode 100644
index 00000000..27c1fff0
--- /dev/null
+++ b/components/HomePage/ConfigSection/index.module.css
@@ -0,0 +1,108 @@
+@reference "../../../styles/index.css";
+
+.configSection {
+ @apply flex
+ justify-center
+ w-full
+ py-20
+ border-neutral-200
+ bg-neutral-100
+ dark:border-neutral-800
+ dark:bg-[#070c13];
+}
+
+.container {
+ @apply flex
+ w-[80%]
+ max-w-7xl
+ flex-col
+ gap-3;
+}
+
+.configHeader {
+ @apply w-full
+ max-w-xl
+ text-left;
+}
+
+.preTitle {
+ @apply mb-4
+ flex
+ items-center
+ justify-center
+ text-[0.85rem]
+ font-normal
+ uppercase
+ tracking-wider
+ text-blue-600
+ dark:text-blue-500
+ lg:justify-start;
+}
+
+.title {
+ @apply text-4xl
+ mb-4;
+}
+
+.subtext {
+ @apply mb-8
+ text-lg
+ leading-relaxed
+ text-neutral-800
+ dark:text-neutral-500;
+}
+
+.configGrid {
+ @apply flex
+ w-full
+ flex-col
+ items-start
+ gap-12
+ lg:flex-row
+ lg:items-center;
+}
+
+.features {
+ @apply flex
+ flex-1
+ flex-col;
+}
+
+.featuresTitle {
+ @apply mb-4
+ text-2xl
+ font-normal
+ text-neutral-900
+ dark:text-white;
+}
+
+.featuresText {
+ @apply mb-4
+ text-base
+ leading-relaxed
+ text-neutral-600
+ dark:text-neutral-400;
+}
+
+.checkList {
+ @apply flex
+ flex-col
+ gap-3;
+}
+
+.checkItem {
+ @apply flex
+ items-center
+ gap-3
+ text-sm
+ font-medium
+ text-neutral-700
+ dark:text-neutral-300;
+}
+
+.checkIcon {
+ @apply h-5
+ w-5
+ shrink-0
+ text-blue-500;
+}
diff --git a/components/HomePage/FeaturesSection/index.jsx b/components/HomePage/FeaturesSection/index.jsx
new file mode 100644
index 00000000..7a9d7161
--- /dev/null
+++ b/components/HomePage/FeaturesSection/index.jsx
@@ -0,0 +1,151 @@
+import styles from './index.module.css';
+
+const Features = [
+ {
+ title: 'Module Federation',
+ description:
+ 'Share code across separately-deployed applications at runtime. The micro-frontend pattern, done right.',
+ icon: (
+
+
+
+ ),
+ },
+ {
+ title: 'Code splitting',
+ description:
+ "Split bundles by route, by demand, or by vendor. Load what's needed, when it's needed.",
+ icon: (
+
+
+
+ ),
+ },
+ {
+ title: 'Tree shaking',
+ description:
+ 'Static analysis of ES modules eliminates dead code in production builds — automatically.',
+ icon: (
+
+
+
+ ),
+ },
+ {
+ title: 'Hot module replacement',
+ description:
+ 'Edit and see the result without losing application state. The fastest feedback loop in JavaScript tooling.',
+ icon: (
+
+
+
+ ),
+ },
+ {
+ title: 'Persistent caching',
+ description:
+ "v5's filesystem cache makes warm builds near-instant. Cold builds are 38% faster than v4 on large monorepos.",
+ icon: (
+
+
+
+ ),
+ },
+ {
+ title: '11,000+ plugins',
+ description:
+ "The largest ecosystem in JavaScript tooling. If a build problem exists, there's a webpack plugin for it.",
+ icon: (
+
+
+
+ ),
+ },
+];
+
+export default function FeaturesSection() {
+ return (
+
+
+
+
WHY WEBPACK
+
Built for serious applications.
+
+ The original module bundler. Used by Vercel, Shopify, GitHub,
+ Microsoft, and most of the modern frontend stack.
+
+
+
+
+ {Features.map((feature, index) => (
+
+
{feature.icon}
+
{feature.title}
+
{feature.description}
+
+ ))}
+
+
+
+ );
+}
diff --git a/components/HomePage/FeaturesSection/index.module.css b/components/HomePage/FeaturesSection/index.module.css
new file mode 100644
index 00000000..527fc510
--- /dev/null
+++ b/components/HomePage/FeaturesSection/index.module.css
@@ -0,0 +1,110 @@
+@reference "../../../styles/index.css";
+
+.whySection {
+ @apply flex
+ w-full
+ justify-center
+ py-20;
+}
+
+.container {
+ @apply flex
+ w-[80%]
+ max-w-7xl
+ flex-col
+ gap-3;
+}
+
+.whyHeader {
+ @apply mb-4
+ w-full
+ max-w-2xl
+ text-left;
+}
+
+.preTitle {
+ @apply mb-4
+ flex
+ items-center
+ justify-center
+ text-[0.85rem]
+ font-normal
+ uppercase
+ tracking-wider
+ text-blue-600
+ dark:text-blue-500
+ lg:justify-start;
+}
+
+.title {
+ @apply text-4xl
+ mb-4;
+}
+
+.subtext {
+ @apply mb-8
+ text-lg
+ leading-relaxed
+ text-neutral-800
+ dark:text-neutral-500;
+}
+
+.gridContainer {
+ @apply grid
+ w-full
+ grid-cols-1
+ gap-6
+ md:grid-cols-2
+ lg:grid-cols-3;
+}
+
+.card {
+ @apply flex
+ flex-col
+ items-start
+ rounded-xl
+ border
+ border-neutral-200
+ bg-white
+ p-8
+ transition-shadow
+ hover:shadow-lg
+ dark:border-neutral-800
+ dark:bg-[#0D131C]
+ dark:hover:shadow-blue-950;
+}
+
+.iconWrapper {
+ @apply mb-6
+ flex
+ h-12
+ w-12
+ items-center
+ justify-center
+ rounded-lg
+ bg-blue-50
+ text-blue-600
+ dark:bg-blue-900/30
+ dark:text-blue-400;
+}
+
+.iconWrapper svg {
+ @apply h-6
+ w-6;
+}
+
+.cardTitle {
+ @apply mb-3
+ text-lg
+ font-medium
+ text-neutral-900
+ dark:text-white;
+}
+
+.cardDesc {
+ @apply m-0
+ text-sm
+ leading-relaxed
+ text-neutral-600
+ dark:text-neutral-400;
+}
diff --git a/components/HomePage/Hero/index.jsx b/components/HomePage/Hero/index.jsx
new file mode 100644
index 00000000..863b907b
--- /dev/null
+++ b/components/HomePage/Hero/index.jsx
@@ -0,0 +1,88 @@
+import styles from './index.module.css';
+import { version } from '#theme/config';
+import WebpackSVG from '../../Icons/WebpackSVG';
+export default function Hero() {
+ return (
+
+
+
+
+
+ STATIC MODULE BUNDLER
+
+
+
+ Bundle the web .
+
+
+
+ webpack packs many modules into a few bundled assets. Code
+ splitting allows for loading parts of the application on demand —
+ designed for modern JavaScript apps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
35M+
+
weekly downloads
+
+
+
+
11K+
+
plugins published
+
+
+
{`v${version.version}`}
+
current release
+
+
+
+ );
+}
diff --git a/components/HomePage/Hero/index.module.css b/components/HomePage/Hero/index.module.css
new file mode 100644
index 00000000..53af2293
--- /dev/null
+++ b/components/HomePage/Hero/index.module.css
@@ -0,0 +1,194 @@
+@reference "../../../styles/index.css";
+
+.hero {
+ @apply flex
+ w-full
+ flex-col
+ items-center
+ pt-20;
+}
+
+.webpackContainer {
+ @apply flex
+ justify-center
+ w-full
+ border-b
+ border-neutral-200
+ dark:border-neutral-800;
+}
+
+.webpack {
+ @apply pb-20
+ flex
+ max-w-6xl
+ w-[75%]
+ flex-col
+ items-center
+ justify-between
+ gap-16
+ text-center
+ lg:flex-row
+ lg:gap-10
+ lg:text-left;
+}
+
+.description {
+ @apply w-full
+ max-w-full
+ flex-1
+ lg:max-w-[520px];
+}
+
+.preTitle {
+ @apply mb-4
+ flex
+ items-center
+ justify-center
+ text-[0.85rem]
+ font-normal
+ uppercase
+ tracking-wider
+ text-blue-600
+ dark:text-blue-500
+ lg:justify-start;
+}
+
+.dot {
+ @apply mr-2
+ inline-block
+ h-1.5
+ w-1.5
+ rounded-full
+ bg-blue-600
+ dark:bg-blue-500;
+}
+
+.title {
+ @apply mb-4
+ font-normal
+ text-5xl
+ leading-[1.1]
+ md:text-6xl;
+}
+
+.highlight {
+ @apply text-blue-600
+ dark:text-blue-500;
+}
+
+.subtext {
+ @apply mb-8
+ text-lg
+ leading-relaxed
+ text-neutral-800
+ dark:text-neutral-500;
+}
+
+.actions {
+ @apply flex
+ items-center
+ justify-center
+ gap-4
+ lg:justify-start;
+}
+
+.primaryBtn {
+ @apply inline-flex
+ items-center
+ justify-center
+ rounded
+ border
+ border-blue-700
+ bg-blue-600
+ dark:bg-blue-500
+ px-5
+ py-3
+ text-sm
+ font-medium
+ text-white
+ transition-colors
+ duration-200
+ hover:bg-blue-700
+ dark:hover:bg-blue-400;
+}
+
+.arrowIcon {
+ @apply ml-2
+ h-5
+ w-5
+ transition-transform
+ duration-200
+ group-hover:translate-x-1;
+}
+
+.primaryBtn:hover .arrowIcon {
+ @apply translate-x-1;
+}
+
+.secondaryBtn {
+ @apply inline-flex
+ items-center
+ justify-center
+ rounded
+ border
+ border-[#d1d9e0]
+ bg-white
+ px-5
+ py-3
+ text-sm
+ font-medium
+ text-[#2c3e50]
+ transition-colors
+ duration-200
+ hover:border-[#b5c0cb]
+ hover:bg-[#f8f9fa];
+}
+
+.githubIcon {
+ @apply ml-2
+ h-4
+ w-4;
+}
+
+.logo {
+ @apply flex
+ w-full
+ items-center
+ justify-center
+ lg:flex-1
+ lg:justify-end;
+}
+
+.webpackLogo {
+ @apply aspect-square
+ w-72
+ max-w-full
+ lg:w-96;
+}
+
+.stats {
+ @apply flex
+ w-[90%]
+ max-w-350
+ flex-col
+ items-center
+ justify-center
+ gap-6
+ py-6
+ text-center
+ dark:border-neutral-800
+ lg:flex-row
+ lg:justify-around
+ lg:gap-0;
+}
+
+.statItem h2 {
+ @apply text-3xl
+ font-medium;
+}
+
+.statItem p {
+ @apply text-sm
+ text-neutral-800
+ dark:text-neutral-500;
+}
diff --git a/components/HomePage/HomeSponsorSection/index.jsx b/components/HomePage/HomeSponsorSection/index.jsx
new file mode 100644
index 00000000..936fbf33
--- /dev/null
+++ b/components/HomePage/HomeSponsorSection/index.jsx
@@ -0,0 +1,186 @@
+import { useMemo } from 'react';
+import classNames from 'classnames';
+import Avatar from '@node-core/ui-components/Common/AvatarGroup/Avatar';
+import BaseButton from '@node-core/ui-components/Common/BaseButton';
+
+import SectionHeader from '../../SectionHeader/index.jsx';
+import SponsorTier from '../../Sponsors/Tier/index.jsx';
+import data from '#theme/sponsors' with { type: 'json' };
+
+import styles from './index.module.css';
+
+const OC_URL = 'https://opencollective.com/webpack';
+const OC_BASE = 'https://opencollective.com';
+const SPONSORS_URL = '/about/sponsors';
+
+// Home page always ranks by monthly contribution — no sort toggle needed.
+const METRIC = 'monthly';
+
+// Max cards shown per tier before the overflow "· · · +N more" row appears.
+const TIERS = [
+ {
+ tier: 'platinum',
+ label: 'Platinum',
+ price: '$2,500+ / month',
+ cardSize: 'lg',
+ limit: 4,
+ },
+ {
+ tier: 'gold',
+ label: 'Gold',
+ price: '$500 / month',
+ cardSize: 'md',
+ limit: 6,
+ },
+ {
+ tier: 'silver',
+ label: 'Silver',
+ price: '$100 / month',
+ cardSize: 'sm',
+ limit: 8,
+ },
+ {
+ tier: 'bronze',
+ label: 'Bronze',
+ price: '$10 / month',
+ cardSize: 'xs',
+ limit: 12,
+ },
+];
+
+// Max backer avatars shown before the overflow row appears.
+const BACKER_LIMIT = 40;
+
+const sortByMetric = (list, metric) =>
+ [...list].sort((a, b) => b[metric].value - a[metric].value);
+
+// Group all sponsors into tier buckets (mirrors SponsorsLayout logic).
+const bucketSponsors = (sponsors, metric) => {
+ const buckets = { platinum: [], gold: [], silver: [], bronze: [] };
+ for (const sponsor of sortByMetric(sponsors, metric)) {
+ const tier = sponsor[metric].tier;
+ if (!tier) continue;
+ buckets[tier].push(sponsor);
+ }
+ return buckets;
+};
+
+const initialsOf = name =>
+ name
+ .split(/\s+/)
+ .slice(0, 2)
+ .map(w => w[0])
+ .join('')
+ .toUpperCase();
+
+// Randomise backer wall order on every render so no backer is permanently buried.
+const shuffle = arr => [...arr].sort(() => Math.random() - 0.5);
+
+// Shared overflow indicator
+
+function SeeMore({ count, href, className }) {
+ return (
+
+ );
+}
+
+export default function HomeSponsorSection() {
+ const buckets = useMemo(() => bucketSponsors(data.sponsors, METRIC), []);
+ const hasAnySponsor = TIERS.some(({ tier }) => buckets[tier].length > 0);
+
+ if (!hasAnySponsor) return null;
+
+ return (
+
+
+
+
+ {/* ── Sponsor tiers ── */}
+
+ {TIERS.map(({ tier, label, price, cardSize, limit }) => {
+ const all = buckets[tier];
+ if (!all.length) return null;
+
+ const shown = all.slice(0, limit);
+ const overflow = all.length - limit;
+
+ return (
+
+
+ {overflow > 0 && (
+
+ )}
+
+ );
+ })}
+
+
+ {/* ── Backer wall ── */}
+ {data.backers?.length > 0 && (
+
+
And the people who chip in
+
+ {CLIENT &&
+ shuffle(data.backers)
+ .slice(0, BACKER_LIMIT)
+ .map(backer => (
+
+ ))}
+
+ {data.backers.length > BACKER_LIMIT && (
+
+ )}
+
+ )}
+
+
+
+
+ );
+}
diff --git a/components/HomePage/HomeSponsorSection/index.module.css b/components/HomePage/HomeSponsorSection/index.module.css
new file mode 100644
index 00000000..aaab7a9d
--- /dev/null
+++ b/components/HomePage/HomeSponsorSection/index.module.css
@@ -0,0 +1,130 @@
+@reference "../../../styles/index.css";
+
+.section {
+ @apply bg-white
+ py-16
+ lg:py-20
+ dark:bg-neutral-950
+ border-t
+ border-neutral-200
+ dark:border-neutral-800;
+}
+
+.container {
+ @apply mx-auto
+ max-w-7xl
+ px-6;
+}
+
+.tiers {
+ @apply mt-12
+ flex
+ flex-col
+ gap-10;
+}
+
+.tierWrapper {
+ @apply flex
+ flex-col
+ gap-0;
+}
+
+.platinumStage {
+ @apply rounded-2xl
+ px-6
+ py-8;
+
+ /* blue-50 (#eff6ff) at 50% opacity */
+ background: radial-gradient(
+ ellipse 80% 60% at 50% 0%,
+ rgb(239 246 255 / 50%) 0%,
+ transparent 100%
+ );
+}
+
+:global(.dark) .platinumStage {
+ /* blue-950 (#172554) at 30% opacity */
+ background: radial-gradient(
+ ellipse 80% 60% at 50% 0%,
+ rgb(23 37 84 / 30%) 0%,
+ transparent 100%
+ );
+}
+
+.seeMore {
+ @apply flex
+ items-center
+ justify-center
+ gap-2
+ mt-4;
+}
+
+.dots {
+ @apply select-none
+ tracking-widest
+ text-neutral-300
+ dark:text-neutral-600;
+}
+
+.seeMoreLink {
+ @apply text-sm
+ font-medium
+ text-blue-600
+ no-underline
+ transition-colors
+ duration-150
+ hover:text-blue-700
+ dark:text-blue-400
+ dark:hover:text-blue-300;
+}
+
+.backersSection {
+ @apply mt-14
+ border-t
+ border-neutral-100
+ pt-10
+ dark:border-neutral-800;
+}
+
+.backersLabel {
+ @apply mb-6
+ text-center
+ text-xs
+ font-semibold
+ uppercase
+ tracking-widest
+ text-neutral-400
+ dark:text-neutral-500;
+}
+
+.backerWall {
+ @apply flex
+ flex-wrap
+ justify-center
+ gap-2;
+}
+
+.backerSeeMore {
+ @apply mt-5;
+}
+
+.actions {
+ @apply mt-10
+ flex
+ flex-wrap
+ items-center
+ justify-center
+ gap-4;
+}
+
+.allSponsorsLink {
+ @apply text-sm
+ font-medium
+ text-blue-600
+ no-underline
+ transition-colors
+ duration-150
+ hover:text-blue-700
+ dark:text-blue-400
+ dark:hover:text-blue-300;
+}
diff --git a/components/Icons/WebpackSVG.jsx b/components/Icons/WebpackSVG.jsx
new file mode 100644
index 00000000..47ae9597
--- /dev/null
+++ b/components/Icons/WebpackSVG.jsx
@@ -0,0 +1,23 @@
+export default function WebpackSVG({ className }) {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/layouts/Home/index.jsx b/layouts/Home/index.jsx
index f237ddf5..c8628931 100644
--- a/layouts/Home/index.jsx
+++ b/layouts/Home/index.jsx
@@ -1 +1,13 @@
-export default undefined;
+import Footer from '../../components/Footer';
+import NavBar from '../../components/NavBar';
+
+export default function Home({ metadata, children }) {
+ return (
+ <>
+
+ {/* MDX content described inside root index.md */}
+ {children}
+
+ >
+ );
+}
diff --git a/package-lock.json b/package-lock.json
index 225bf172..5ca39157 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,7 +5,7 @@
"packages": {
"": {
"dependencies": {
- "@node-core/doc-kit": "^1.3.10",
+ "@node-core/doc-kit": "^1.4.0",
"@tailwindcss/node": "^4.3.0",
"classnames": "^2.5.1",
"gray-matter": "^4.0.3",
@@ -1013,13 +1013,13 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz",
- "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
+ "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
"license": "MIT",
"optional": true,
"dependencies": {
- "@tybys/wasm-util": "^0.10.2"
+ "@tybys/wasm-util": "^0.10.3"
},
"funding": {
"type": "github",
@@ -1043,9 +1043,9 @@
}
},
"node_modules/@node-core/doc-kit": {
- "version": "1.3.10",
- "resolved": "https://registry.npmjs.org/@node-core/doc-kit/-/doc-kit-1.3.10.tgz",
- "integrity": "sha512-lbOki0a/Gb1ZkD3DMZmqd2WgkTTcZp1zjCuUZxSxWbC8asgfDUW2zVW0KsJSKszHXwThaDjoCIBtVwJdek7+dQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@node-core/doc-kit/-/doc-kit-1.4.0.tgz",
+ "integrity": "sha512-6OpJlqkJknnDJB2VEuR1X/035PPzlFlZr+XMkLuJnkKC3qQ2b5YWJG5iWlGzrWCkVqGX5gIS4ihR3AbkaIQWIQ==",
"dependencies": {
"@actions/core": "^3.0.0",
"@heroicons/react": "^2.2.0",
@@ -1067,7 +1067,7 @@
"hastscript": "^9.0.1",
"lightningcss-wasm": "^1.32.0",
"mdast-util-slice-markdown": "^2.0.1",
- "piscina": "^5.1.4",
+ "piscina": "^5.2.0",
"preact": "^10.29.2",
"preact-render-to-string": "^6.7.0",
"reading-time": "^1.5.0",
@@ -1076,6 +1076,7 @@
"rehype-recma": "^1.0.0",
"rehype-stringify": "^10.0.1",
"remark-gfm": "^4.0.1",
+ "remark-mdx": "^3.1.1",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
"remark-stringify": "^11.0.0",
@@ -2446,13 +2447,13 @@
}
},
"node_modules/@shikijs/core": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.2.0.tgz",
- "integrity": "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.3.0.tgz",
+ "integrity": "sha512-EooU3i9F6IAE8kEu+AnGf9DFZWkQBZ+hJn3tLVbsH+61mtQiva5biai66fAA6nvFPXkLgvrh7BrR7YcJU83xQQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/primitive": "4.2.0",
- "@shikijs/types": "4.2.0",
+ "@shikijs/primitive": "4.3.0",
+ "@shikijs/types": "4.3.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.5"
@@ -2462,12 +2463,12 @@
}
},
"node_modules/@shikijs/engine-javascript": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.2.0.tgz",
- "integrity": "sha512-fjETeq1k5ffyXqRgS6+3hpvqseLalp1kjNfRbXpUgWR8FpZ1CmQfiNHovc5lncYjt/Vg5JK/WJEmLahjwMa0og==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.3.0.tgz",
+ "integrity": "sha512-hTv/KiFf2tpiqlACPiztGGurEARWIutB8YUhcrA1pUC7VzzwKO+g5crUocrLztrZ5ro5Z4hbXg7bYclETn3gSQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "4.2.0",
+ "@shikijs/types": "4.3.0",
"@shikijs/vscode-textmate": "^10.0.2",
"oniguruma-to-es": "^4.3.6"
},
@@ -2476,12 +2477,12 @@
}
},
"node_modules/@shikijs/engine-oniguruma": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.2.0.tgz",
- "integrity": "sha512-hTorK1dffPkpbMUk6Z+828PgRo7d07HbnizoP0hNPFjhxMHctj0Px/qoHeGMYafc6ju+u9iMldN4JbVzNQM++g==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.3.0.tgz",
+ "integrity": "sha512-1vMdN3gHfnKfLYwecUI2ITJI4RhHt96xEaJumVn7Heb0IlJ8WQMIH0Voak+2j22BpSNKdnOfB/pCTPnPm2gq7A==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "4.2.0",
+ "@shikijs/types": "4.3.0",
"@shikijs/vscode-textmate": "^10.0.2"
},
"engines": {
@@ -2489,24 +2490,24 @@
}
},
"node_modules/@shikijs/langs": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.2.0.tgz",
- "integrity": "sha512-bwrVRlJ0wUhZxAbVdvBbv2TTC9yLsh4C/IO5Ofz0T8MQntgDvyVnkbjw9vi50r1kx7RCIJdnJnjZAwmAsXFLZQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.3.0.tgz",
+ "integrity": "sha512-rnlqFbBRSys9bT4gl/5rw9RnS0W/I84ZldXPkO7cvlEMoV85TyF/aU01N7/NbSR776RNLjrJKjfFUXJR6wN1Cg==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "4.2.0"
+ "@shikijs/types": "4.3.0"
},
"engines": {
"node": ">=20"
}
},
"node_modules/@shikijs/primitive": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.2.0.tgz",
- "integrity": "sha512-NOq+DtUkVBJtZMVXL5A0vI0Xk8nvDYaXetFHSJFlOqjDZIVhIPRYFdGkSoElDqNuegikcc3A76SNUa8dTqtAYA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.3.0.tgz",
+ "integrity": "sha512-CPkz64PTa5diRW1ggzMZH9VM/du4RNChYgVtgqrFcgruvIybmCvySv8GkiHSczUHXYuuR8TdKEwFx+UnZMpgdg==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "4.2.0",
+ "@shikijs/types": "4.3.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
},
@@ -2515,26 +2516,26 @@
}
},
"node_modules/@shikijs/themes": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.2.0.tgz",
- "integrity": "sha512-RX8IHYeLv8Cu2W6ruc3RxUqWn0IYCqSrMBzi/uRGAmfyDNOnNO5BF/Px7o97n4XTpmFTo5GbRaazuOWj+2ak2w==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.3.0.tgz",
+ "integrity": "sha512-Avgt05YiT+Y3prjIc9lmQxhJzHBcCfR6cjiFW4OyaMBbt2A6trX5rfjUzx+Vj/mE9qpArYjatnqo9XPjQNW/AQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "4.2.0"
+ "@shikijs/types": "4.3.0"
},
"engines": {
"node": ">=20"
}
},
"node_modules/@shikijs/twoslash": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-4.2.0.tgz",
- "integrity": "sha512-PG/F0tMyt4zAvHVBL7Ehtk/ZpI2Rq3PwaXRYJaOO41eIK/iV9GOO/20jZhQkScOdcP6aFwHC2/x/GxmeR4tMlA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-4.3.0.tgz",
+ "integrity": "sha512-9tM/GWduKcWCU2jJIUqJZBxnyX/6iXtWov5rWmqcTnokHWIOxBL6nktx+HuzqB7/v3ApTahKT/TfRqBl+mFsOQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/core": "4.2.0",
- "@shikijs/types": "4.2.0",
- "twoslash": "^0.3.8"
+ "@shikijs/core": "4.3.0",
+ "@shikijs/types": "4.3.0",
+ "twoslash": "^0.3.9"
},
"engines": {
"node": ">=20"
@@ -2544,9 +2545,9 @@
}
},
"node_modules/@shikijs/types": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.2.0.tgz",
- "integrity": "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.3.0.tgz",
+ "integrity": "sha512-oc8b9U2SYvofKZk8e/737nIX0qwf6eV2vHFATeObAu7r+mUVpLs8Re0BmVkIjAWAYgkmG/CzLNo7rzuBzRu/wQ==",
"license": "MIT",
"dependencies": {
"@shikijs/vscode-textmate": "^10.0.2",
@@ -2576,9 +2577,9 @@
}
},
"node_modules/@swc/html-wasm": {
- "version": "1.15.41",
- "resolved": "https://registry.npmjs.org/@swc/html-wasm/-/html-wasm-1.15.41.tgz",
- "integrity": "sha512-XyZ05dUhHSAhWFwpqzXR3HzHpL89Cq4oN6GxteRMP/4lsNEoENeO+ZEG+JuWY7joRJ6/Y5G69JyZ0PcsquXn+w==",
+ "version": "1.15.43",
+ "resolved": "https://registry.npmjs.org/@swc/html-wasm/-/html-wasm-1.15.43.tgz",
+ "integrity": "sha512-tw1DpLmh54BDNPDBY/tHLDFcLnxzji242Fu/8Y8nrbSBdDndO0Lv56g869mRgrsmZBvsoS31JqgDkf6YYtvi3g==",
"license": "Apache-2.0"
},
"node_modules/@tailwindcss/node": {
@@ -2597,9 +2598,9 @@
}
},
"node_modules/@tybys/wasm-util": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
- "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
+ "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
"license": "MIT",
"optional": true,
"dependencies": {
@@ -2668,9 +2669,9 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "26.0.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.0.tgz",
- "integrity": "sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==",
+ "version": "26.0.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.1.tgz",
+ "integrity": "sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==",
"license": "MIT",
"dependencies": {
"undici-types": "~8.3.0"
@@ -2705,9 +2706,9 @@
}
},
"node_modules/@ungap/structured-clone": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz",
- "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.2.tgz",
+ "integrity": "sha512-5jsZFwgR5rTdKwidH9Qmat75RKwqfpKlWWB1frDkljN127mwqBu8K0PYo7/hFpF03IEJpfVPpCQDY/eDx3iHvA==",
"license": "ISC"
},
"node_modules/@vcarl/remark-headings": {
@@ -3221,9 +3222,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.28.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.3.tgz",
- "integrity": "sha512-fJuAi3QO096TeMRa/1Z/Z4xVxx2NVXFQc8aOX5huX0gA1V7NkIw+Qv1/Y16MatpJUeYs4mLXAsRs6RUp4sylIQ==",
+ "version": "4.28.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.4.tgz",
+ "integrity": "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==",
"funding": [
{
"type": "opencollective",
@@ -3868,9 +3869,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.376",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.376.tgz",
- "integrity": "sha512-cUVA7/RvbFTEuw/i3obUwDTRIXojaxkResf+ibByPFxjc6XK3VNtcQXV0NSbAlJ0FMjcJGgftVVB4Qo184EXvA==",
+ "version": "1.5.378",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.378.tgz",
+ "integrity": "sha512-VinvOAuuPmdD1guEgGv5f2Qp7/vlfqOrUOMYNnOD4wj3pit8kRsQHzfIf6teyUGWo15Tg5+bOJaRunvyltpVWQ==",
"license": "ISC"
},
"node_modules/emoji-regex": {
@@ -4726,12 +4727,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/glob-to-regexp": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
- "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
- "license": "BSD-2-Clause"
- },
"node_modules/global-modules": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
@@ -4774,9 +4769,9 @@
}
},
"node_modules/globals": {
- "version": "17.6.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz",
- "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==",
+ "version": "17.7.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.7.0.tgz",
+ "integrity": "sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -6262,9 +6257,9 @@
}
},
"node_modules/listr2": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/listr2/-/listr2-10.2.1.tgz",
- "integrity": "sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==",
+ "version": "10.2.2",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-10.2.2.tgz",
+ "integrity": "sha512-JtNtbZj8q5BnDMR7trpwvwk3RIrANtIVzEUm8w7amp6xelLgyuq+4WZoTH913XaQAoH/cNdYhaNzBPA2U3xbDw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6681,6 +6676,23 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/mdast-util-mdx": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz",
+ "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-from-markdown": "^2.0.0",
+ "mdast-util-mdx-expression": "^2.0.0",
+ "mdast-util-mdx-jsx": "^3.0.0",
+ "mdast-util-mdxjs-esm": "^2.0.0",
+ "mdast-util-to-markdown": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/mdast-util-mdx-expression": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz",
@@ -7084,6 +7096,108 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/micromark-extension-mdx-expression": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz",
+ "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ }
+ },
+ "node_modules/micromark-extension-mdx-jsx": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz",
+ "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-is-identifier-name": "^3.0.0",
+ "micromark-factory-mdx-expression": "^2.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdx-md": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz",
+ "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==",
+ "license": "MIT",
+ "dependencies": {
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz",
+ "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.0.0",
+ "acorn-jsx": "^5.0.0",
+ "micromark-extension-mdx-expression": "^3.0.0",
+ "micromark-extension-mdx-jsx": "^3.0.0",
+ "micromark-extension-mdx-md": "^2.0.0",
+ "micromark-extension-mdxjs-esm": "^3.0.0",
+ "micromark-util-combine-extensions": "^2.0.0",
+ "micromark-util-types": "^2.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
+ "node_modules/micromark-extension-mdxjs-esm": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz",
+ "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-core-commonmark": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/micromark-factory-destination": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz",
@@ -7127,6 +7241,33 @@
"micromark-util-types": "^2.0.0"
}
},
+ "node_modules/micromark-factory-mdx-expression": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz",
+ "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "devlop": "^1.0.0",
+ "micromark-factory-space": "^2.0.0",
+ "micromark-util-character": "^2.0.0",
+ "micromark-util-events-to-acorn": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "unist-util-position-from-estree": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
"node_modules/micromark-factory-space": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz",
@@ -7328,6 +7469,31 @@
],
"license": "MIT"
},
+ "node_modules/micromark-util-events-to-acorn": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz",
+ "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==",
+ "funding": [
+ {
+ "type": "GitHub Sponsors",
+ "url": "https://github.com/sponsors/unifiedjs"
+ },
+ {
+ "type": "OpenCollective",
+ "url": "https://opencollective.com/unified"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "@types/unist": "^3.0.0",
+ "devlop": "^1.0.0",
+ "estree-util-visit": "^2.0.0",
+ "micromark-util-symbol": "^2.0.0",
+ "micromark-util-types": "^2.0.0",
+ "vfile-message": "^4.0.0"
+ }
+ },
"node_modules/micromark-util-html-tag-name": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz",
@@ -7521,6 +7687,66 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/minimizer-webpack-plugin": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz",
+ "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "jest-worker": "^27.4.5",
+ "schema-utils": "^4.3.0",
+ "terser": "^5.31.1"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependencies": {
+ "webpack": "^5.1.0"
+ },
+ "peerDependenciesMeta": {
+ "@minify-html/node": {
+ "optional": true
+ },
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/css": {
+ "optional": true
+ },
+ "@swc/html": {
+ "optional": true
+ },
+ "clean-css": {
+ "optional": true
+ },
+ "cssnano": {
+ "optional": true
+ },
+ "csso": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "html-minifier-terser": {
+ "optional": true
+ },
+ "lightningcss": {
+ "optional": true
+ },
+ "postcss": {
+ "optional": true
+ },
+ "uglify-js": {
+ "optional": true
+ }
+ }
+ },
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -7566,9 +7792,9 @@
"license": "MIT"
},
"node_modules/node-releases": {
- "version": "2.0.48",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.48.tgz",
- "integrity": "sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==",
+ "version": "2.0.50",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.50.tgz",
+ "integrity": "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -8574,6 +8800,20 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remark-mdx": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.1.tgz",
+ "integrity": "sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==",
+ "license": "MIT",
+ "dependencies": {
+ "mdast-util-mdx": "^3.0.0",
+ "micromark-extension-mdxjs": "^3.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/remark-parse": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz",
@@ -8961,9 +9201,9 @@
}
},
"node_modules/shell-quote": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.4.tgz",
- "integrity": "sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.9.0.tgz",
+ "integrity": "sha512-Iov+JwFv/2HcTpcwNMKd8+IWNb8tboQJNQTkAY/LLVK7gGH9jy+LGkVqPxfekHl+yMmiqXszdGWXgkfml7hjqA==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -8973,17 +9213,17 @@
}
},
"node_modules/shiki": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.2.0.tgz",
- "integrity": "sha512-hjNax6o/ylDy9lefQEaSDtzaT3iVNtZ3WmpQnbuQNoG4xvnSKf2kSKbihZVO4JRG1TTMejs7CmNRYlWgAL66pQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.3.0.tgz",
+ "integrity": "sha512-NKKjWzR6LIGL3sXBrWDw9sDS9cxx42/DkysaNqJEeOWE8Kix5gpak0bc00OfDVEO4oyXSyz8+aRaqKoBD1yo7A==",
"license": "MIT",
"dependencies": {
- "@shikijs/core": "4.2.0",
- "@shikijs/engine-javascript": "4.2.0",
- "@shikijs/engine-oniguruma": "4.2.0",
- "@shikijs/langs": "4.2.0",
- "@shikijs/themes": "4.2.0",
- "@shikijs/types": "4.2.0",
+ "@shikijs/core": "4.3.0",
+ "@shikijs/engine-javascript": "4.3.0",
+ "@shikijs/engine-oniguruma": "4.3.0",
+ "@shikijs/langs": "4.3.0",
+ "@shikijs/themes": "4.3.0",
+ "@shikijs/types": "4.3.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
},
@@ -9804,66 +10044,6 @@
"node": ">=10"
}
},
- "node_modules/terser-webpack-plugin": {
- "version": "5.6.1",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.6.1.tgz",
- "integrity": "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ==",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.25",
- "jest-worker": "^27.4.5",
- "schema-utils": "^4.3.0",
- "terser": "^5.31.1"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.1.0"
- },
- "peerDependenciesMeta": {
- "@minify-html/node": {
- "optional": true
- },
- "@swc/core": {
- "optional": true
- },
- "@swc/css": {
- "optional": true
- },
- "@swc/html": {
- "optional": true
- },
- "clean-css": {
- "optional": true
- },
- "cssnano": {
- "optional": true
- },
- "csso": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- },
- "html-minifier-terser": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "postcss": {
- "optional": true
- },
- "uglify-js": {
- "optional": true
- }
- }
- },
"node_modules/terser/node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
@@ -10498,9 +10678,9 @@
}
},
"node_modules/webpack": {
- "version": "5.107.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.2.tgz",
- "integrity": "sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ==",
+ "version": "5.108.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.108.0.tgz",
+ "integrity": "sha512-Ln1JuYGPRTXcHECapSFSvACtHmWEN5sQqFJeLLGQ0057S7qzT2eXUz0MZUedtmIrNy3nJgnITSubIYKGED9jSQ==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.8",
@@ -10512,19 +10692,18 @@
"acorn-import-phases": "^1.0.3",
"browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.22.0",
+ "enhanced-resolve": "^5.22.2",
"es-module-lexer": "^2.1.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
- "glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
"loader-runner": "^4.3.2",
"mime-db": "^1.54.0",
+ "minimizer-webpack-plugin": "^5.6.1",
"neo-async": "^2.6.2",
"schema-utils": "^4.3.3",
"tapable": "^2.3.0",
- "terser-webpack-plugin": "^5.5.0",
- "watchpack": "^2.5.1",
+ "watchpack": "^2.5.2",
"webpack-sources": "^3.5.0"
},
"bin": {
@@ -10553,9 +10732,9 @@
}
},
"node_modules/webpack/node_modules/enhanced-resolve": {
- "version": "5.24.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.0.tgz",
- "integrity": "sha512-SkE2t82KlkkxQRVMVLAGKxLfORGQfrkx5dkj+vlgXRVNEdPc4eZcR+J/Fvj8C+yKSFH5L0q3NFlyufOVQnCcYQ==",
+ "version": "5.24.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.1.tgz",
+ "integrity": "sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
diff --git a/package.json b/package.json
index b3745f55..27e4431f 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"prepare": "husky"
},
"dependencies": {
- "@node-core/doc-kit": "^1.3.10",
+ "@node-core/doc-kit": "^1.4.0",
"@tailwindcss/node": "^4.3.0",
"classnames": "^2.5.1",
"gray-matter": "^4.0.3",
diff --git a/pages/index.md b/pages/index.md
index e4d427d2..ee33540f 100644
--- a/pages/index.md
+++ b/pages/index.md
@@ -1,3 +1,56 @@
---
layout: home
+mdx: true
---
+
+
+
+
+```javascript
+// webpack.config.js
+const path = require('path');
+
+module.exports = {
+ entry: './src/index.js',
+ output: {
+ filename: 'bundle.js',
+ path: path.resolve(__dirname, 'dist'),
+ },
+ mode: 'production',
+};
+```
+
+```javascript
+// webpack.config.mjs
+import path from 'path';
+
+export default {
+ entry: './src/index.js',
+ output: {
+ filename: 'bundle.js',
+ path: path.resolve(import.meta.dirname, 'dist'),
+ },
+ mode: 'production',
+};
+```
+
+```typescript
+// webpack.config.ts
+import path from 'path';
+import { Configuration } from 'webpack';
+
+const config: Configuration = {
+ entry: './src/index.ts',
+ output: {
+ filename: 'bundle.js',
+ path: path.resolve(__dirname, 'dist'),
+ },
+ mode: 'production',
+};
+
+export default config;
+```
+
+
+
+
diff --git a/scripts/html/doc-kit.config.mjs b/scripts/html/doc-kit.config.mjs
index 7f999134..db50d58f 100644
--- a/scripts/html/doc-kit.config.mjs
+++ b/scripts/html/doc-kit.config.mjs
@@ -67,6 +67,12 @@ export default {
},
],
},
+ components: {
+ Hero: '#theme/Hero',
+ ConfigSection: '#theme/ConfigSection',
+ FeaturesSection: '#theme/FeaturesSection',
+ HomeSponsorSection: '#theme/HomeSponsorSection',
+ },
imports: {
'#theme/local/site': VERSION
? join(ROOT, INPUT_DIR, 'site.json')
@@ -81,6 +87,20 @@ export default {
'#theme/Navigation': join(ROOT, 'components/NavBar.jsx'),
'#theme/Footer': join(ROOT, 'components/Footer/index.jsx'),
'#theme/Logo': join(ROOT, 'components/Icons/Webpack.jsx'),
+
+ '#theme/Hero': join(ROOT, 'components/HomePage/Hero/index.jsx'),
+ '#theme/ConfigSection': join(
+ ROOT,
+ 'components/HomePage/ConfigSection/index.jsx'
+ ),
+ '#theme/FeaturesSection': join(
+ ROOT,
+ 'components/HomePage/FeaturesSection/index.jsx'
+ ),
+ '#theme/HomeSponsorSection': join(
+ ROOT,
+ 'components/HomePage/HomeSponsorSection/index.jsx'
+ ),
},
lightningcss: {
resolver: {