diff --git a/packages/docs/src/components/ChartTabs.astro b/packages/docs/src/components/ChartTabs.astro
index 27be832..6f2057e 100644
--- a/packages/docs/src/components/ChartTabs.astro
+++ b/packages/docs/src/components/ChartTabs.astro
@@ -4,14 +4,17 @@ interface Props {
label: string
tab1Label: string
tab2Label: string
+ tab3Label?: string
}
-const { sectionId, label, tab1Label, tab2Label } = Astro.props
+const { sectionId, label, tab1Label, tab2Label, tab3Label } = Astro.props
const tab1Id = `${sectionId}-tab-1`
const tab2Id = `${sectionId}-tab-2`
+const tab3Id = `${sectionId}-tab-3`
const panel1Id = `${sectionId}-panel-1`
const panel2Id = `${sectionId}-panel-2`
+const panel3Id = `${sectionId}-panel-3`
---
@@ -36,6 +39,20 @@ const panel2Id = `${sectionId}-panel-2`
>
{tab2Label}
+ {
+ tab3Label && (
+
+ )
+ }
+ {
+ tab3Label && (
+
+
+
+ )
+ }
@@ -134,7 +164,7 @@ const panel2Id = `${sectionId}-panel-2`
const tabs = section.querySelectorAll('[role="tab"]')
const panels = section.querySelectorAll('[role="tabpanel"]')
- if (tabs.length !== 2 || panels.length !== 2) return
+ if (tabs.length === 0 || panels.length === 0) return
function setActive(index: number) {
tabs.forEach((tab, i) => {
diff --git a/packages/docs/src/components/ComparisonBarChart.astro b/packages/docs/src/components/ComparisonBarChart.astro
index 6f46cdb..85ad5ff 100644
--- a/packages/docs/src/components/ComparisonBarChart.astro
+++ b/packages/docs/src/components/ComparisonBarChart.astro
@@ -4,7 +4,7 @@ import type { ChartDatum } from '../lib/types'
interface Props {
title: string
data: ChartDatum[]
- valueFormat: 'count' | 'mb'
+ valueFormat: 'count' | 'mb' | 'kb' | 'ms'
}
const { title, data, valueFormat } = Astro.props
@@ -119,9 +119,14 @@ const chartPayload = JSON.stringify({ data, valueFormat })
{ width: number; height: number }
>()
- function formatValue(value: number, format: 'count' | 'mb'): string {
+ function formatValue(
+ value: number,
+ format: 'count' | 'mb' | 'kb' | 'ms',
+ ): string {
if (format === 'count') return String(Math.round(value))
- return `${value.toFixed(2)} MB`
+ if (format === 'mb') return `${value.toFixed(2)} MB`
+ if (format === 'kb') return `${value.toFixed(2)} KB`
+ return `${value.toFixed(2)} ms`
}
function setTooltipContent(
diff --git a/packages/docs/src/components/SSRBodySizeChart.astro b/packages/docs/src/components/SSRBodySizeChart.astro
new file mode 100644
index 0000000..2db0349
--- /dev/null
+++ b/packages/docs/src/components/SSRBodySizeChart.astro
@@ -0,0 +1,10 @@
+---
+import { ssrStats } from '../lib/collections'
+import ComparisonBarChart from './ComparisonBarChart.astro'
+
+const data = ssrStats
+ .filter((f) => f?.name != null && Number.isFinite(f.ssrBodySizeKb))
+ .map((f) => ({ name: f.name, value: f.ssrBodySizeKb }))
+---
+
+
diff --git a/packages/docs/src/components/SSRCharts.astro b/packages/docs/src/components/SSRCharts.astro
new file mode 100644
index 0000000..c26c14b
--- /dev/null
+++ b/packages/docs/src/components/SSRCharts.astro
@@ -0,0 +1,18 @@
+---
+import ChartTabs from './ChartTabs.astro'
+import SSRBodySizeChart from './SSRBodySizeChart.astro'
+import SSRLatencyChart from './SSRLatencyChart.astro'
+import SSROpsChart from './SSROpsChart.astro'
+---
+
+
+
+
+
+
diff --git a/packages/docs/src/components/SSRLatencyChart.astro b/packages/docs/src/components/SSRLatencyChart.astro
new file mode 100644
index 0000000..e0af9e6
--- /dev/null
+++ b/packages/docs/src/components/SSRLatencyChart.astro
@@ -0,0 +1,10 @@
+---
+import { ssrStats } from '../lib/collections'
+import ComparisonBarChart from './ComparisonBarChart.astro'
+
+const data = ssrStats
+ .filter((f) => f?.name != null && Number.isFinite(f.ssrAvgLatencyMs))
+ .map((f) => ({ name: f.name, value: f.ssrAvgLatencyMs }))
+---
+
+
diff --git a/packages/docs/src/components/SSROpsChart.astro b/packages/docs/src/components/SSROpsChart.astro
new file mode 100644
index 0000000..b0930a6
--- /dev/null
+++ b/packages/docs/src/components/SSROpsChart.astro
@@ -0,0 +1,10 @@
+---
+import { ssrStats } from '../lib/collections'
+import ComparisonBarChart from './ComparisonBarChart.astro'
+
+const data = ssrStats
+ .filter((f) => f?.name != null && Number.isFinite(f.ssrOpsPerSec))
+ .map((f) => ({ name: f.name, value: f.ssrOpsPerSec }))
+---
+
+
diff --git a/packages/docs/src/lib/types.ts b/packages/docs/src/lib/types.ts
index 19e7079..0f71cbb 100644
--- a/packages/docs/src/lib/types.ts
+++ b/packages/docs/src/lib/types.ts
@@ -5,5 +5,5 @@ export interface ChartDatum {
export interface ComparisonChartPayload {
data: ChartDatum[]
- valueFormat: 'count' | 'mb'
+ valueFormat: 'count' | 'mb' | 'kb' | 'ms'
}
diff --git a/packages/docs/src/pages/index.astro b/packages/docs/src/pages/index.astro
index ab5839d..465229c 100644
--- a/packages/docs/src/pages/index.astro
+++ b/packages/docs/src/pages/index.astro
@@ -5,6 +5,7 @@ import Description from '../components/Description.astro'
import DetailsLink from '../components/DetailsLink.astro'
import FocusedToggle from '../components/FocusedToggle.astro'
import PageHeader from '../components/PageHeader.astro'
+import SSRCharts from '../components/SSRCharts.astro'
import SSRStatsTable from '../components/SSRStatsTable.astro'
import Layout from '../layouts/Layout.astro'
---
@@ -43,6 +44,7 @@ import Layout from '../layouts/Layout.astro'
Runtime Performance
SSR Performance
+