From 4838df315931bb883f704ec3e1abe2685f296cdf Mon Sep 17 00:00:00 2001
From: HsiangNianian <admin@jyunko.cn>
Date: Sat, 22 Apr 2023 19:52:26 +0800
Subject: 😀
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 docs/components/pages/pack-home/PackBenchmarks.tsx | 97 ++++++++++++++++++++++
 1 file changed, 97 insertions(+)
 create mode 100644 docs/components/pages/pack-home/PackBenchmarks.tsx

(limited to 'docs/components/pages/pack-home/PackBenchmarks.tsx')

diff --git a/docs/components/pages/pack-home/PackBenchmarks.tsx b/docs/components/pages/pack-home/PackBenchmarks.tsx
new file mode 100644
index 0000000..9bd1db8
--- /dev/null
+++ b/docs/components/pages/pack-home/PackBenchmarks.tsx
@@ -0,0 +1,97 @@
+import { useState } from "react";
+import { FadeIn } from "../home-shared/FadeIn";
+import { SectionHeader, SectionSubtext } from "../home-shared/Headings";
+import { BenchmarksGraph } from "./PackBenchmarksGraph";
+import { PackBenchmarksPicker } from "./PackBenchmarksPicker";
+import { PackBenchmarkTabs } from "./PackBenchmarkTabs";
+
+export type BenchmarkNumberOfModules = "1000" | "5000" | "10000" | "30000";
+export type BenchmarkCategory =
+  | "cold"
+  | "from_cache"
+  | "file_change"
+  | "code_build"
+  | "build_from_cache";
+export interface BenchmarkData {
+  next13: number;
+  next12: number;
+  vite: number;
+  next11: number;
+}
+
+export interface BenchmarkBar {
+  label: string;
+  key: keyof BenchmarkData;
+  turbo?: true;
+  swc?: true;
+}
+
+export const DEFAULT_BARS: BenchmarkBar[] = [
+  {
+    key: "next13",
+    label: "Next.js 13",
+    turbo: true,
+  },
+  {
+    key: "next12",
+    label: "Next.js 12",
+  },
+  {
+    key: "vite",
+    label: "Vite",
+    swc: true,
+  },
+  {
+    key: "next11",
+    label: "Next.js 11",
+  },
+];
+export const HMR_BARS: BenchmarkBar[] = [
+  {
+    key: "next13",
+    label: "Next.js 13",
+    turbo: true,
+  },
+  {
+    key: "vite",
+    label: "Vite",
+    swc: true,
+  },
+  {
+    key: "next12",
+    label: "Next.js 12",
+  },
+  {
+    key: "next11",
+    label: "Next.js 11",
+  },
+];
+
+export function PackBenchmarks() {
+  const [numberOfModules, setNumberOfModules] =
+    useState<BenchmarkNumberOfModules>("1000");
+  const [category, setCategory] = useState<BenchmarkCategory>("cold");
+
+  return (
+    <FadeIn className="relative flex flex-col items-center justify-center w-full gap-10 py-16 font-sans md:py-24 lg:py-32">
+      <div className="flex flex-col items-center gap-5 md:gap-6">
+        <SectionHeader>Faster Than Fast</SectionHeader>
+        <SectionSubtext>
+          Crafted by the creators of Webpack, Turbopack delivers unparalleled
+          performance at scale.
+        </SectionSubtext>
+      </div>
+      <div className="flex flex-col items-center w-full">
+        <PackBenchmarkTabs onTabChange={setCategory} />
+        <BenchmarksGraph
+          category={category}
+          numberOfModules={numberOfModules}
+          bars={DEFAULT_BARS}
+        />
+      </div>
+      <PackBenchmarksPicker
+        setNumberOfModules={setNumberOfModules}
+      ></PackBenchmarksPicker>
+    </FadeIn>
+  );
+}
-- 
cgit v1.2.3-70-g09d2

