Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 48 additions & 5 deletions packages/docs/src/components/ComparisonBarChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,32 @@ interface Props {
title: string
data: ChartDatum[]
valueFormat: 'count' | 'mb' | 'kb' | 'ms' | 's'
unitLabel?: string
}

const { title, data, valueFormat } = Astro.props
const chartPayload = JSON.stringify({ data, valueFormat })
const defaultUnitLabels = {
count: 'count',
mb: 'MB',
kb: 'KB',
ms: 'ms',
s: 'seconds',
} as const

const {
title,
data,
valueFormat,
unitLabel = defaultUnitLabels[valueFormat],
} = Astro.props
const chartPayload = JSON.stringify({ data, valueFormat, unitLabel })
---

<div class="comparison-chart-container">
<div class="comparison-chart-header">
<h3 class="comparison-chart-title">{title}</h3>
<div class="comparison-chart-title-group">
<h3 class="comparison-chart-title">{title}</h3>
<span class="comparison-chart-unit">Unit: {unitLabel}</span>
</div>
<details class="sort-dropdown">
<summary class="sort-trigger">
<svg
Expand Down Expand Up @@ -88,6 +105,19 @@ const chartPayload = JSON.stringify({ data, valueFormat })
margin: 0;
}

.comparison-chart-title-group {
display: flex;
align-items: baseline;
gap: 0.6em;
flex-wrap: wrap;
}

.comparison-chart-unit {
color: var(--ft-muted);
font-size: 12px;
font-weight: 500;
}

.sort-dropdown {
position: relative;
}
Expand Down Expand Up @@ -266,6 +296,12 @@ const chartPayload = JSON.stringify({ data, valueFormat })
font-size: 12px;
}

.comparison-chart-wrapper :global(.comparison-y-axis-unit) {
fill: var(--ft-muted);
font-size: 12px;
font-weight: 600;
}

.comparison-chart-wrapper :global(.comparison-axis-domain) {
stroke: var(--ft-border);
}
Expand Down Expand Up @@ -341,7 +377,7 @@ const chartPayload = JSON.stringify({ data, valueFormat })
return
}

const { valueFormat } = payload
const { valueFormat, unitLabel } = payload
const rawData = payload.data
if (!rawData?.length) return

Expand Down Expand Up @@ -382,7 +418,7 @@ const chartPayload = JSON.stringify({ data, valueFormat })
d3.select(svg)
.append('desc')
.text(
`Bar chart comparing each framework by ${chartTitle}. See table for exact values.`,
`Bar chart comparing each framework by ${chartTitle}. Values are shown in ${unitLabel}. See table for exact values.`,
)

const gradientId = `comparisonBarGradient-${crypto.randomUUID()}`
Expand Down Expand Up @@ -449,6 +485,13 @@ const chartPayload = JSON.stringify({ data, valueFormat })
sel.selectAll('text').attr('class', 'comparison-y-axis-text'),
)

g.append('text')
.attr('class', 'comparison-y-axis-unit')
.attr('x', 0)
.attr('y', -8)
.attr('text-anchor', 'start')
.text(unitLabel)

g.append('g')
.attr('class', 'comparison-grid')
.call(
Expand Down
7 changes: 6 additions & 1 deletion packages/docs/src/components/DepsChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,9 @@ const data = validEntries.map((f) => ({
}))
---

<ComparisonBarChart title="Deps" data={data} valueFormat="count" />
<ComparisonBarChart
title="Deps"
data={data}
valueFormat="count"
unitLabel="dependencies"
/>
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ import ComparisonBarChart from './ComparisonBarChart.astro'
title="Duplicate Dependencies"
data={chartDuplicateDependencyData}
valueFormat="count"
unitLabel="duplicate dependencies"
/>
2 changes: 1 addition & 1 deletion packages/docs/src/components/MPAFCPChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import ComparisonBarChart from './ComparisonBarChart.astro'
---

<ComparisonBarChart
title="First Contentful Paint (ms)"
title="First Contentful Paint"
data={chartMPAFCPData}
valueFormat="ms"
/>
2 changes: 1 addition & 1 deletion packages/docs/src/components/MPAFPChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import ComparisonBarChart from './ComparisonBarChart.astro'
---

<ComparisonBarChart
title="First Paint (ms)"
title="First Paint"
data={chartMPAFPData}
valueFormat="ms"
/>
2 changes: 1 addition & 1 deletion packages/docs/src/components/MPAINPChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import ComparisonBarChart from './ComparisonBarChart.astro'
---

<ComparisonBarChart
title="Interaction to Next Paint (ms)"
title="Interaction to Next Paint"
data={chartMPAINPData}
valueFormat="ms"
/>
7 changes: 6 additions & 1 deletion packages/docs/src/components/ProdDepsChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,9 @@ const data = validEntries.map((f) => ({
}))
---

<ComparisonBarChart title="Prod Deps" data={data} valueFormat="count" />
<ComparisonBarChart
title="Prod Deps"
data={data}
valueFormat="count"
unitLabel="dependencies"
/>
2 changes: 1 addition & 1 deletion packages/docs/src/components/SPAFCPChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import ComparisonBarChart from './ComparisonBarChart.astro'
---

<ComparisonBarChart
title="First Contentful Paint (ms)"
title="First Contentful Paint"
data={chartSPAFCPData}
valueFormat="ms"
/>
2 changes: 1 addition & 1 deletion packages/docs/src/components/SPAFPChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import ComparisonBarChart from './ComparisonBarChart.astro'
---

<ComparisonBarChart
title="First Paint (ms)"
title="First Paint"
data={chartSPAFPData}
valueFormat="ms"
/>
2 changes: 1 addition & 1 deletion packages/docs/src/components/SPAINPChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import ComparisonBarChart from './ComparisonBarChart.astro'
---

<ComparisonBarChart
title="Interaction to Next Paint (ms)"
title="Interaction to Next Paint"
data={chartSPAINPData}
valueFormat="ms"
/>
7 changes: 6 additions & 1 deletion packages/docs/src/components/SSROpsChart.astro
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,9 @@ const data = ssrStats
.map((f) => ({ name: f.name, value: f.ssrOpsPerSec, focused: f.isFocused }))
---

<ComparisonBarChart title="Ops/sec" data={data} valueFormat="count" />
<ComparisonBarChart
title="SSR throughput"
data={data}
valueFormat="count"
unitLabel="ops/sec"
/>
1 change: 1 addition & 0 deletions packages/docs/src/lib/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ export interface ChartDatum {
export interface ComparisonChartPayload {
data: ChartDatum[]
valueFormat: 'count' | 'mb' | 'kb' | 'ms' | 's'
unitLabel: string
}
Loading