Skip to content

Commit e0f9ce4

Browse files
Minor homepage UI improvements (#388)
* fix(ui): improve badges layout * fix(ui): improve spacing and hover effects for library cards * fix(ui): enhance layout and spacing for better readability and visual appeal * remove the first `hr` and reduce the margin on the library parent title * remove 'new' for router --------- Co-authored-by: Sean Cassiere <[email protected]>
1 parent 966ca6b commit e0f9ce4

File tree

2 files changed

+29
-28
lines changed

2 files changed

+29
-28
lines changed

app/libraries/router.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const routerProject = {
2424
ogImage: 'https://github.com/tanstack/router/raw/main/media/header.png',
2525
bgStyle: 'bg-emerald-500',
2626
textStyle: textStyles,
27-
badge: 'new',
27+
badge: undefined,
2828
repo,
2929
latestBranch: 'main',
3030
latestVersion: 'v1',

app/routes/_libraries/index.tsx

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -139,18 +139,18 @@ function Index() {
139139
</p>
140140
</div>
141141
</div>
142-
<div className="h-8" />
142+
<div className="my-16" />
143143
<div className="w-fit mx-auto px-4">
144144
<OpenSourceStats />
145145
</div>
146-
<div className="h-12" />
146+
<div className="my-16" />
147147
<div className="px-4 lg:max-w-screen-lg md:mx-auto">
148148
<h3 className={`text-4xl font-light`}>Open Source Libraries</h3>
149149

150150
{Object.entries(librariesByGroup).map(
151151
([groupName, groupLibraries]: [string, Library[]]) => (
152152
<div key={groupName} className="mt-8">
153-
<h4 className={`text-2xl font-medium capitalize mb-4`}>
153+
<h4 className={`text-2xl font-medium capitalize mb-6`}>
154154
{
155155
librariesGroupNamesMap[
156156
groupName as keyof typeof librariesGroupNamesMap
@@ -159,7 +159,7 @@ function Index() {
159159
</h4>
160160
{/* Library Cards */}
161161
<div
162-
className={`grid grid-cols-1 gap-4 gap-y-8 justify-center
162+
className={`grid grid-cols-1 gap-6 gap-y-8 justify-center
163163
sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-3`}
164164
>
165165
{groupLibraries.map((library, i: number) => {
@@ -169,7 +169,7 @@ function Index() {
169169
to={library.to ?? '#'}
170170
params
171171
className={twMerge(
172-
`border-2 border-transparent rounded-xl shadow-md p-6 transition-all duration-200
172+
`border-2 border-transparent rounded-xl shadow-md p-8 transition-all duration-300
173173
bg-white/90 dark:bg-black/40 backdrop-blur-sm
174174
dark:border-gray-800/50`,
175175
'hover:shadow-lg',
@@ -226,9 +226,9 @@ function Index() {
226226

227227
{/* Foreground content that appears on hover */}
228228
<div
229-
className="absolute inset-0 z-10 bg-white/95 dark:bg-black/95 p-6
230-
flex flex-col justify-center opacity-0 group-hover:opacity-100
231-
transition-opacity duration-200"
229+
className="absolute inset-0 z-30 bg-white/95 dark:bg-black/95 p-6
230+
backdrop-blur-sm flex flex-col justify-center opacity-0 group-hover:opacity-100
231+
transition-opacity duration-300"
232232
>
233233
<div
234234
className={`text-sm text-gray-800 dark:text-gray-200 leading-relaxed`}
@@ -264,16 +264,16 @@ function Index() {
264264
>
265265
<div
266266
className={twMerge(
267-
`w-20 h-20 rounded-full translate-x-1/2 -translate-y-1/2`,
267+
`w-[100px] h-[100px] rounded-full translate-x-1/2 -translate-y-1/2`,
268268
library.bgStyle
269269
)}
270270
/>
271271
<span
272272
className={twMerge(
273-
'inline-block transform rotate-45 uppercase text-white font-black italic animate-pulse absolute top-3 right-1',
273+
'inline-block transform rotate-45 uppercase text-white font-black italic animate-pulse text-xs',
274274
library.badge.length > 4
275-
? 'text-[10px]'
276-
: 'text-xs'
275+
? 'absolute top-[16px] right-[-2px]'
276+
: 'absolute top-[14px] right-[5px]'
277277
)}
278278
>
279279
{library.badge}
@@ -288,9 +288,9 @@ function Index() {
288288
)
289289
)}
290290
</div>
291-
<div className="h-12" />
291+
<hr className="my-16 border-gray-200 dark:border-gray-500/10" />
292292
<div className="px-4 lg:max-w-screen-lg md:mx-auto">
293-
<h3 className={`text-4xl font-light mb-4`}>Partners</h3>
293+
<h3 className={`text-4xl font-light mb-6`}>Partners</h3>
294294
<div className={`grid grid-cols-1 gap-6 sm:grid-cols-2`}>
295295
{partners.map((partner) => {
296296
return (
@@ -301,20 +301,20 @@ function Index() {
301301
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 group overflow-hidden grid"
302302
rel="noreferrer"
303303
>
304-
<div className="z-0 row-start-1 col-start-1 flex items-center justify-center group-hover:blur-sm transition-all duration-200">
304+
<div className="z-0 row-start-1 col-start-1 flex items-center justify-center group-hover:blur-md transition-all duration-200 p-4">
305305
{partner.homepageImg}
306306
</div>
307-
<div className="z-10 row-start-1 col-start-1 max-w-full p-4 text-sm flex flex-col gap-4 items-start opacity-0 group-hover:opacity-100 transition-opacity duration-200 bg-white/70 dark:bg-gray-800/70">
307+
<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">
308308
{partner.content}
309309
</div>
310310
</a>
311311
)
312312
})}
313313
</div>
314314
</div>
315-
<div className="h-20" />
315+
<hr className="my-16 border-gray-200 dark:border-gray-500/10" />
316316
<div className={`lg:max-w-screen-lg px-4 mx-auto`}>
317-
<h3 className={`text-4xl font-light`}>Courses</h3>
317+
<h3 className={`text-4xl font-light mb-6`}>Courses</h3>
318318
<div className={`mt-4 grid grid-cols-1 gap-4`}>
319319
{courses.map((course) => (
320320
<a
@@ -346,24 +346,25 @@ function Index() {
346346
))}
347347
</div>
348348
</div>
349-
<div className="h-12" />
349+
<hr className="my-16 border-gray-200 dark:border-gray-500/10" />
350350
<div className={`lg:max-w-screen-lg px-4 mx-auto`}>
351351
<h3 className={`text-4xl font-light`}>OSS Sponsors</h3>
352-
<div className="h-4" />
352+
<div className="h-6" />
353353
<div
354354
style={{
355355
aspectRatio: '1/1',
356356
}}
357+
className="max-w-2xl mx-auto"
357358
>
358359
<Await
359360
promise={sponsorsPromise}
360-
fallback={<CgSpinner className="text-2xl animate-spin" />}
361+
fallback={<CgSpinner className="text-2xl animate-spin mx-auto" />}
361362
children={(sponsors) => {
362363
return <SponsorPack sponsors={sponsors} />
363364
}}
364365
/>
365366
</div>
366-
<div className={`h-6`} />
367+
<div className={`h-8`} />
367368
<div className={`text-center`}>
368369
<div>
369370
<a
@@ -384,29 +385,29 @@ function Index() {
384385
</p>
385386
</div>
386387
</div>
387-
<div className="h-12" />
388+
<hr className="my-16 border-gray-200 dark:border-gray-500/10" />
388389
<div className={`lg:max-[400px] px-4 mx-auto`}>
389-
<div className="flex flex-col gap-4">
390+
<div className="flex flex-col gap-4 items-center">
390391
<div className="shadow-lg rounded-lg overflow-hidden bg-white dark:bg-gray-800 dark:text-white max-w-[250px] mx-auto">
391392
<Carbon />
392393
</div>
393394
<span
394395
className="text-[.7rem] bg-gray-500 bg-opacity-10 py-1 px-2 rounded text-gray-500
395-
dark:bg-opacity-20 self-center"
396+
dark:bg-opacity-20 self-center text-center"
396397
>
397398
This ad helps us be happy about our invested time and not burn out
398399
and rage-quit OSS. Yay money! 😉
399400
</span>
400401
</div>
401402
</div>
402-
<div className="h-12" />
403+
<hr className="my-16 border-gray-200 dark:border-gray-500/10" />
403404
<div className="px-4 mx-auto max-w-screen-lg">
404405
<div
405406
className={`
406407
rounded-md p-4 grid gap-6
407408
bg-discord text-white overflow-hidden relative
408409
shadow-xl shadow-indigo-700/30
409-
sm:p-8 sm:grid-cols-3`}
410+
sm:p-8 sm:grid-cols-3 items-center`}
410411
>
411412
<div
412413
className={`absolute transform opacity-10 z-0

0 commit comments

Comments
 (0)