Skip to content

Commit d87cfc8

Browse files
committed
Add meta
1 parent d1ee729 commit d87cfc8

File tree

1 file changed

+59
-51
lines changed

1 file changed

+59
-51
lines changed

app/routes/stats/npm/index.tsx

Lines changed: 59 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import * as React from 'react'
22
import { createFileRoute, Link } from '@tanstack/react-router'
33
import { z } from 'zod'
44
import {
5-
MdArrowBack,
65
MdClose,
76
MdLock,
87
MdLockOpen,
@@ -16,9 +15,66 @@ import { ParentSize } from '@visx/responsive'
1615
import { Tooltip } from '~/components/Tooltip'
1716
import * as d3 from 'd3'
1817
import { useCombobox } from 'downshift'
19-
import { FaAngleRight, FaArrowLeft, FaSpinner } from 'react-icons/fa'
18+
import { FaAngleRight, FaSpinner } from 'react-icons/fa'
2019
import { HexColorPicker } from 'react-colorful'
21-
import { getLibrary } from '~/libraries'
20+
import { seo } from '~/utils/seo'
21+
22+
export const Route = createFileRoute('/stats/npm/')({
23+
validateSearch: z.object({
24+
packages: z
25+
.array(
26+
z.object({
27+
packages: z.array(z.string()),
28+
color: z.string().nullable().optional(),
29+
})
30+
)
31+
.optional()
32+
.default([
33+
{
34+
packages: ['react'],
35+
color: '#4da6d1',
36+
},
37+
{
38+
packages: ['@tanstack/query-core', 'react-query'],
39+
color: '#ff4500',
40+
},
41+
]),
42+
range: z
43+
.enum([
44+
'7-days',
45+
'30-days',
46+
'90-days',
47+
'180-days',
48+
'365-days',
49+
'730-days',
50+
'1825-days',
51+
'all-time',
52+
])
53+
.optional()
54+
.default('365-days'),
55+
baseline: z.string().optional(),
56+
viewMode: z.enum(['absolute', 'relative']).optional(),
57+
binningOption: z.enum(['yearly', 'monthly', 'weekly', 'daily']).optional(),
58+
alignStartDates: z.boolean().optional().default(false),
59+
height: z.number().optional().default(400),
60+
}),
61+
loaderDeps: ({ search }) => ({
62+
packages: search.packages,
63+
range: search.range,
64+
}),
65+
loader: async ({ deps }) => {
66+
return deps
67+
},
68+
head: ({ loaderData }) => ({
69+
meta: seo({
70+
title: `NPM Download Stats by TanStack- ${loaderData.packages
71+
?.map((p) => p.packages)
72+
.join(' vs ')}`,
73+
description: `Explore and compare download statistics of one or more NPM packages over various time ranges. Analyze trends, growth patterns, and historical data to make informed decisions on package usage and popularity. `,
74+
}),
75+
}),
76+
component: RouteComponent,
77+
})
2278

2379
type NpmStats = {
2480
start: string
@@ -110,8 +166,6 @@ const defaultColors = [
110166
'#17becf', // cyan
111167
] as const
112168

113-
type PackageColor = (typeof defaultColors)[number]
114-
115169
function npmQueryOptions({
116170
packages,
117171
range,
@@ -731,52 +785,6 @@ function NpmStatsChart({
731785
)
732786
}
733787

734-
export const Route = createFileRoute('/stats/npm/')({
735-
validateSearch: z.object({
736-
packages: z
737-
.array(
738-
z.object({
739-
packages: z.array(z.string()),
740-
color: z.string().nullable().optional(),
741-
})
742-
)
743-
.optional()
744-
.default([
745-
{
746-
packages: ['react'],
747-
color: '#4da6d1',
748-
},
749-
{
750-
packages: ['@tanstack/query-core', 'react-query'],
751-
color: '#ff4500',
752-
},
753-
]),
754-
range: z
755-
.enum([
756-
'7-days',
757-
'30-days',
758-
'90-days',
759-
'180-days',
760-
'365-days',
761-
'730-days',
762-
'1825-days',
763-
'all-time',
764-
])
765-
.optional()
766-
.default('365-days'),
767-
baseline: z.string().optional(),
768-
viewMode: z.enum(['absolute', 'relative']).optional(),
769-
binningOption: z.enum(['yearly', 'monthly', 'weekly', 'daily']).optional(),
770-
alignStartDates: z.boolean().optional().default(false),
771-
height: z.number().optional().default(400),
772-
}),
773-
loaderDeps: ({ search }) => ({
774-
packages: search.packages,
775-
range: search.range,
776-
}),
777-
component: RouteComponent,
778-
})
779-
780788
function PackageSearch() {
781789
const [items, setItems] = React.useState<NpmPackage[]>([])
782790
const [isLoading, setIsLoading] = React.useState(false)

0 commit comments

Comments
 (0)