Skip to content

Commit e4e1944

Browse files
committed
more
1 parent 170adc4 commit e4e1944

10 files changed

Lines changed: 143 additions & 64 deletions

File tree

media/brand.sketch

-102 KB
Binary file not shown.

src/blog/announcing-tanstack-start-v1.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ We’re fortunate to build alongside an incredible lineup of partners whose supp
6363

6464
### Special thanks to Cloudflare and Netlify
6565

66-
Their collaboration is a pivotal force driving the open web forward. Explore their announcement to see how we’re building the modern web together: [Cloudflare, Astro, and TanStack: building the modern web together](https://blog.cloudflare.com/cloudflare-astro-tanstack).
66+
Their collaboration is a pivotal force driving the open web forward. Explore their announcements to see how we’re building the modern web together: [Cloudflare, Astro, and TanStack: building the modern web together](https://blog.cloudflare.com/cloudflare-astro-tanstack) and [Supporting an Open Web with Netlify + Cloudflare](https://www.netlify.com/blog/supporting-an-open-web-with-netlify-cloudflare/).
6767

6868
## Your feedback counts
6969

src/components/PartnersGrid.tsx

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import * as React from 'react'
2+
import { partners as allPartners } from '~/utils/partners'
3+
4+
type PartnerItem = (typeof allPartners)[number]
5+
6+
type PartnersGridProps = {
7+
partnersList?: PartnerItem[]
8+
}
9+
10+
export function PartnersGrid({ partnersList }: PartnersGridProps) {
11+
const items = (partnersList ?? allPartners).filter(
12+
(partner) => partner.status === 'active'
13+
)
14+
15+
return (
16+
<div className={`flex flex-wrap gap-6 justify-center relative`}>
17+
{items.map((partner) => {
18+
return (
19+
<a
20+
key={partner.name}
21+
href={partner.href}
22+
target="_blank"
23+
rel="noreferrer"
24+
className="bg-white/80 shadow-xl shadow-gray-500/20 rounded-lg dark:border border-gray-500/20 dark:bg-black/40 dark:shadow-none
25+
flex grow-1 justify-center p-8 hover:scale-[1.05] transition-all duration-100 ease-out"
26+
>
27+
<div
28+
className="z-0 row-start-1 col-start-1 flex items-center justify-center transition-all duration-200"
29+
style={{
30+
width: Math.max(Math.round(100 + 300 * partner.score), 150),
31+
}}
32+
>
33+
{partner.homepageImg}
34+
</div>
35+
</a>
36+
)
37+
})}
38+
</div>
39+
)
40+
}

src/components/PartnersSection.tsx

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as React from 'react'
22
import { Link } from '@tanstack/react-router'
33
import { partners } from '~/utils/partners'
4+
import { PartnersGrid } from './PartnersGrid'
45
import { PartnershipCallout } from './PartnershipCallout'
56
import { LibraryId } from '~/libraries'
67

@@ -32,37 +33,7 @@ export function PartnersSection({
3233
<h3 className="text-center text-3xl leading-8 font-extrabold tracking-tight sm:text-4xl sm:leading-10 lg:leading-none mt-8">
3334
{title}
3435
</h3>
35-
<div className={`flex flex-wrap gap-6 justify-center relative`}>
36-
{partners
37-
.filter((partner) => partner.status === 'active')
38-
.map((partner) => {
39-
return (
40-
<a
41-
key={partner.name}
42-
href={partner.href}
43-
target="_blank"
44-
rel="noreferrer"
45-
className="bg-white/80 shadow-xl shadow-gray-500/20 rounded-lg dark:border border-gray-500/20 dark:bg-black/40 dark:shadow-none
46-
overflow-hidden flex grow-1 justify-center p-8 hover:scale-[1.05] transition-all duration-100 ease-out"
47-
>
48-
<div
49-
className="z-0 row-start-1 col-start-1 flex items-center justify-center transition-all duration-200"
50-
style={{
51-
width: Math.max(
52-
Math.round(100 + 300 * partner.score),
53-
150
54-
),
55-
}}
56-
>
57-
{partner.homepageImg}
58-
</div>
59-
{/* <div className="z-10 row-start-1 col-start-1 max-w-full p-4 text-sm flex flex-col gap-4 items-start justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-200 bg-white/70 dark:bg-gray-800/80">
60-
{partner.content}
61-
</div> */}
62-
</a>
63-
)
64-
})}
65-
</div>
36+
<PartnersGrid />
6637
<PartnershipCallout libraryId={libraryId} />
6738
{showPreviousLink ? (
6839
<div className="text-center mt-6">

src/routeTree.gen.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { createServerRootRoute } from '@tanstack/react-start/server'
1717

1818
import { Route as rootRouteImport } from './routes/__root'
1919
import { Route as SponsorsEmbedRouteImport } from './routes/sponsors-embed'
20+
import { Route as PartnersEmbedRouteImport } from './routes/partners-embed'
2021
import { Route as MerchRouteImport } from './routes/merch'
2122
import { Route as BuilderRouteImport } from './routes/builder'
2223
import { Route as AdminRouteRouteImport } from './routes/admin/route'
@@ -75,6 +76,11 @@ const SponsorsEmbedRoute = SponsorsEmbedRouteImport.update({
7576
path: '/sponsors-embed',
7677
getParentRoute: () => rootRouteImport,
7778
} as any)
79+
const PartnersEmbedRoute = PartnersEmbedRouteImport.update({
80+
id: '/partners-embed',
81+
path: '/partners-embed',
82+
getParentRoute: () => rootRouteImport,
83+
} as any)
7884
const MerchRoute = MerchRouteImport.update({
7985
id: '/merch',
8086
path: '/merch',
@@ -352,6 +358,7 @@ export interface FileRoutesByFullPath {
352358
'/admin': typeof AdminRouteRouteWithChildren
353359
'/builder': typeof BuilderRoute
354360
'/merch': typeof MerchRoute
361+
'/partners-embed': typeof PartnersEmbedRoute
355362
'/sponsors-embed': typeof SponsorsEmbedRoute
356363
'/$libraryId/$version': typeof LibraryIdVersionRouteWithChildren
357364
'/account': typeof LibrariesAccountRoute
@@ -399,6 +406,7 @@ export interface FileRoutesByFullPath {
399406
export interface FileRoutesByTo {
400407
'/builder': typeof BuilderRoute
401408
'/merch': typeof MerchRoute
409+
'/partners-embed': typeof PartnersEmbedRoute
402410
'/sponsors-embed': typeof SponsorsEmbedRoute
403411
'/$libraryId/$version': typeof LibraryIdVersionRouteWithChildren
404412
'/account': typeof LibrariesAccountRoute
@@ -448,6 +456,7 @@ export interface FileRoutesById {
448456
'/admin': typeof AdminRouteRouteWithChildren
449457
'/builder': typeof BuilderRoute
450458
'/merch': typeof MerchRoute
459+
'/partners-embed': typeof PartnersEmbedRoute
451460
'/sponsors-embed': typeof SponsorsEmbedRoute
452461
'/$libraryId/$version': typeof LibraryIdVersionRouteWithChildren
453462
'/_libraries/account': typeof LibrariesAccountRoute
@@ -499,6 +508,7 @@ export interface FileRouteTypes {
499508
| '/admin'
500509
| '/builder'
501510
| '/merch'
511+
| '/partners-embed'
502512
| '/sponsors-embed'
503513
| '/$libraryId/$version'
504514
| '/account'
@@ -546,6 +556,7 @@ export interface FileRouteTypes {
546556
to:
547557
| '/builder'
548558
| '/merch'
559+
| '/partners-embed'
549560
| '/sponsors-embed'
550561
| '/$libraryId/$version'
551562
| '/account'
@@ -594,6 +605,7 @@ export interface FileRouteTypes {
594605
| '/admin'
595606
| '/builder'
596607
| '/merch'
608+
| '/partners-embed'
597609
| '/sponsors-embed'
598610
| '/$libraryId/$version'
599611
| '/_libraries/account'
@@ -645,6 +657,7 @@ export interface RootRouteChildren {
645657
AdminRouteRoute: typeof AdminRouteRouteWithChildren
646658
BuilderRoute: typeof BuilderRoute
647659
MerchRoute: typeof MerchRoute
660+
PartnersEmbedRoute: typeof PartnersEmbedRoute
648661
SponsorsEmbedRoute: typeof SponsorsEmbedRoute
649662
StatsIndexRoute: typeof StatsIndexRoute
650663
StatsNpmIndexRoute: typeof StatsNpmIndexRoute
@@ -726,6 +739,13 @@ declare module '@tanstack/react-router' {
726739
preLoaderRoute: typeof MerchRouteImport
727740
parentRoute: typeof rootRouteImport
728741
}
742+
'/partners-embed': {
743+
id: '/partners-embed'
744+
path: '/partners-embed'
745+
fullPath: '/partners-embed'
746+
preLoaderRoute: typeof PartnersEmbedRouteImport
747+
parentRoute: typeof rootRouteImport
748+
}
729749
'/sponsors-embed': {
730750
id: '/sponsors-embed'
731751
path: '/sponsors-embed'
@@ -1087,6 +1107,13 @@ declare module '@tanstack/react-start/server' {
10871107
preLoaderRoute: unknown
10881108
parentRoute: typeof rootServerRouteImport
10891109
}
1110+
'/partners-embed': {
1111+
id: '/partners-embed'
1112+
path: '/partners-embed'
1113+
fullPath: '/partners-embed'
1114+
preLoaderRoute: unknown
1115+
parentRoute: typeof rootServerRouteImport
1116+
}
10901117
'/sponsors-embed': {
10911118
id: '/sponsors-embed'
10921119
path: '/sponsors-embed'
@@ -1497,6 +1524,23 @@ declare module './routes/merch' {
14971524
unknown
14981525
>
14991526
}
1527+
declare module './routes/partners-embed' {
1528+
const createFileRoute: CreateFileRoute<
1529+
'/partners-embed',
1530+
FileRoutesByPath['/partners-embed']['parentRoute'],
1531+
FileRoutesByPath['/partners-embed']['id'],
1532+
FileRoutesByPath['/partners-embed']['path'],
1533+
FileRoutesByPath['/partners-embed']['fullPath']
1534+
>
1535+
1536+
const createServerFileRoute: CreateServerFileRoute<
1537+
ServerFileRoutesByPath['/partners-embed']['parentRoute'],
1538+
ServerFileRoutesByPath['/partners-embed']['id'],
1539+
ServerFileRoutesByPath['/partners-embed']['path'],
1540+
ServerFileRoutesByPath['/partners-embed']['fullPath'],
1541+
unknown
1542+
>
1543+
}
15001544
declare module './routes/sponsors-embed' {
15011545
const createFileRoute: CreateFileRoute<
15021546
'/sponsors-embed',
@@ -2428,6 +2472,7 @@ const rootRouteChildren: RootRouteChildren = {
24282472
AdminRouteRoute: AdminRouteRouteWithChildren,
24292473
BuilderRoute: BuilderRoute,
24302474
MerchRoute: MerchRoute,
2475+
PartnersEmbedRoute: PartnersEmbedRoute,
24312476
SponsorsEmbedRoute: SponsorsEmbedRoute,
24322477
StatsIndexRoute: StatsIndexRoute,
24332478
StatsNpmIndexRoute: StatsNpmIndexRoute,

src/router.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,6 @@ declare module '@tanstack/react-router' {
8686
interface StaticDataRouteOption {
8787
baseParent?: boolean
8888
Title?: () => any
89+
showNavbar?: boolean
8990
}
9091
}

src/routes/__root.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,10 @@ function HtmlWrapper({ children }: { children: React.ReactNode }) {
211211

212212
const showDevtools = canShowLoading && isRouterPage
213213

214+
const hideNavbar = useMatches({
215+
select: (s) => s.some((d) => d.staticData?.showNavbar === false),
216+
})
217+
214218
return (
215219
<html lang="en" suppressHydrationWarning>
216220
<head>
@@ -224,7 +228,7 @@ function HtmlWrapper({ children }: { children: React.ReactNode }) {
224228
<ToastProvider>
225229
<BackgroundGradient />
226230
<React.Suspense fallback={null}>
227-
<Navbar>{children}</Navbar>
231+
{hideNavbar ? children : <Navbar>{children}</Navbar>}
228232
</React.Suspense>
229233
{showDevtools ? (
230234
<TanStackRouterDevtoolsInProd position="bottom-right" />

src/routes/_libraries/index.tsx

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { useMutation } from '~/hooks/useMutation'
1111
import { librariesByGroup, librariesGroupNamesMap, Library } from '~/libraries'
1212
import bytesImage from '~/images/bytes.svg'
1313
import { partners } from '../../utils/partners'
14+
import { PartnersGrid } from '~/components/PartnersGrid'
1415
import OpenSourceStats from '~/components/OpenSourceStats'
1516
// Using public asset URLs for splash images
1617
import { BrandContextMenu } from '~/components/BrandContextMenu'
@@ -292,37 +293,7 @@ function Index() {
292293

293294
<div className="px-4 lg:max-w-(--breakpoint-lg) md:mx-auto">
294295
<h3 className={`text-4xl font-light mb-6`}>Partners</h3>
295-
<div className={`flex flex-wrap gap-6 justify-center`}>
296-
{partners
297-
.filter((partner) => partner.status === 'active')
298-
.map((partner) => {
299-
return (
300-
<a
301-
key={partner.name}
302-
href={partner.href}
303-
target="_blank"
304-
rel="noreferrer"
305-
className="bg-white/80 shadow-xl shadow-gray-500/20 rounded-lg dark:border border-gray-500/20 dark:bg-black/40 dark:shadow-none
306-
flex grow-1 justify-center p-8 hover:scale-[1.05] transition-all duration-100 ease-out"
307-
>
308-
<div
309-
className="z-0 row-start-1 col-start-1 flex items-center justify-center transition-all duration-200"
310-
style={{
311-
width: Math.max(
312-
Math.round(100 + 300 * partner.score),
313-
150
314-
),
315-
}}
316-
>
317-
{partner.homepageImg}
318-
</div>
319-
{/* <div className="z-10 row-start-1 col-start-1 max-w-full p-4 text-sm flex flex-col gap-4 items-start justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-200 bg-white/70 dark:bg-gray-800/80">
320-
{partner.content}
321-
</div> */}
322-
</a>
323-
)
324-
})}
325-
</div>
296+
<PartnersGrid />
326297
<div className="text-center mt-6">
327298
<Link
328299
to="/partners"

src/routes/partners-embed.tsx

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { partners } from '~/utils/partners'
2+
import { PartnersGrid } from '~/components/PartnersGrid'
3+
4+
const cacheHeaders = {
5+
'Cache-Control': 'max-age=300, s-maxage=3600, stale-while-revalidate',
6+
}
7+
8+
export const Route = createFileRoute({
9+
staleTime: Infinity,
10+
headers: () => {
11+
// Cache the entire HTML response for 5 minutes
12+
return cacheHeaders
13+
},
14+
staticData: {
15+
baseParent: true,
16+
showNavbar: false,
17+
},
18+
component: PartnersEmbed,
19+
})
20+
21+
function PartnersEmbed() {
22+
const activePartners = partners.filter(
23+
(partner) => partner.status === 'active'
24+
)
25+
26+
return (
27+
<>
28+
<div
29+
className={`min-h-screen w-screen flex items-start justify-center overflow-hidden`}
30+
>
31+
<style
32+
dangerouslySetInnerHTML={{
33+
__html: `
34+
html, body {
35+
background: transparent !important;
36+
}
37+
`,
38+
}}
39+
/>
40+
<div className="px-4 w-full">
41+
<PartnersGrid partnersList={activePartners} />
42+
</div>
43+
</div>
44+
</>
45+
)
46+
}

src/routes/sponsors-embed.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ export const Route = createFileRoute({
1414
},
1515
staticData: {
1616
baseParent: true,
17+
showNavbar: false,
1718
},
1819
component: SponsorsEmbed,
1920
})

0 commit comments

Comments
 (0)