Skip to content

Commit 7286fa1

Browse files
committed
checkpoint
1 parent affbbe9 commit 7286fa1

31 files changed

+1263
-704
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
"shiki": "^1.4.0",
8888
"tailwind-merge": "^1.14.0",
8989
"three": "^0.182.0",
90+
"troika-three-text": "^0.52.4",
9091
"unified": "^11.0.5",
9192
"unist-util-visit": "^5.0.0",
9293
"uploadthing": "^7.7.4",

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/AuthenticatedUserMenu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function AuthenticatedUserMenu({
5353
</Link>
5454
</DropdownItem>
5555
<DropdownItem asChild>
56-
<Link to="/showcase/mine" className="flex items-center gap-2">
56+
<Link to="/account/submissions" className="flex items-center gap-2">
5757
<Sparkles className="w-4 h-4" />
5858
<span>My Showcases</span>
5959
</Link>

src/components/MyShowcases.tsx

Lines changed: 0 additions & 221 deletions
This file was deleted.

src/components/Navbar.tsx

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ export function Navbar({ children }: { children: React.ReactNode }) {
308308
},
309309
})
310310

311-
const linkClasses = `flex items-center justify-between group px-2 py-1 rounded-lg hover:bg-gray-500/10 font-black`
311+
const linkClasses = `flex items-center justify-between gap-2 group px-2 py-1 rounded-lg hover:bg-gray-500/10 font-black`
312312

313313
const items = (
314314
<div className="md:flex gap-2 [&>*]:flex-1 lg:block">
@@ -344,7 +344,13 @@ export function Navbar({ children }: { children: React.ReactNode }) {
344344
<div key={i}>
345345
{library.to?.startsWith('http') ? (
346346
<a href={library.to} className={linkClasses}>
347-
<span className={library.textStyle}>{name}</span>
347+
<span
348+
className={twMerge(
349+
'w-3 h-3 rounded-sm border border-black/20 dark:border-white/20',
350+
library.bgStyle,
351+
)}
352+
/>
353+
{name}
348354
</a>
349355
) : (
350356
<Collapsible defaultOpen={isActive}>
@@ -357,12 +363,18 @@ export function Navbar({ children }: { children: React.ReactNode }) {
357363
isActive ? 'bg-gray-500/10 dark:bg-gray-500/30' : '',
358364
)}
359365
>
366+
<span
367+
className={twMerge(
368+
'w-3 h-3 rounded-sm border border-black/20 dark:border-white/20',
369+
library.bgStyle,
370+
)}
371+
/>
360372
<span
361373
style={{
362374
viewTransitionName: `library-name-${library.id}`,
363375
}}
364376
className={twMerge(
365-
library.textStyle,
377+
'flex-1 text-left',
366378
isActive ? 'font-bold' : '',
367379
)}
368380
>

src/components/ShowcaseCard.tsx

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Link } from '@tanstack/react-router'
22
import { twMerge } from 'tailwind-merge'
3-
import { ExternalLink, ThumbsUp, ThumbsDown } from 'lucide-react'
3+
import { ExternalLink, ThumbsUp, ThumbsDown, Code } from 'lucide-react'
44
import { libraries, type LibraryId } from '~/libraries'
55
import type { Showcase } from '~/db/types'
66

@@ -71,17 +71,31 @@ export function ShowcaseCard({
7171
</div>
7272
</Link>
7373

74-
{/* External link button - separate from card link */}
75-
<a
76-
href={showcase.url}
77-
target="_blank"
78-
rel="noopener noreferrer"
79-
onClick={(e) => e.stopPropagation()}
80-
className="absolute top-3 right-3 p-2 rounded-full bg-white/90 dark:bg-gray-800/90 shadow-sm hover:bg-white dark:hover:bg-gray-700 transition-colors"
81-
title="Visit site"
82-
>
83-
<ExternalLink className="w-4 h-4 text-gray-600 dark:text-gray-300" />
84-
</a>
74+
{/* Action buttons - separate from card link */}
75+
<div className="absolute top-3 right-3 flex gap-2">
76+
{showcase.sourceUrl && (
77+
<a
78+
href={showcase.sourceUrl}
79+
target="_blank"
80+
rel="noopener noreferrer"
81+
onClick={(e) => e.stopPropagation()}
82+
className="p-2 rounded-full bg-white/90 dark:bg-gray-800/90 shadow-sm hover:bg-white dark:hover:bg-gray-700 transition-colors"
83+
title="View source code"
84+
>
85+
<Code className="w-4 h-4 text-gray-600 dark:text-gray-300" />
86+
</a>
87+
)}
88+
<a
89+
href={showcase.url}
90+
target="_blank"
91+
rel="noopener noreferrer"
92+
onClick={(e) => e.stopPropagation()}
93+
className="p-2 rounded-full bg-white/90 dark:bg-gray-800/90 shadow-sm hover:bg-white dark:hover:bg-gray-700 transition-colors"
94+
title="Visit site"
95+
>
96+
<ExternalLink className="w-4 h-4 text-gray-600 dark:text-gray-300" />
97+
</a>
98+
</div>
8599

86100
{/* Footer with libraries and voting */}
87101
<div className="px-4 pb-4 mt-auto">

src/components/ShowcaseDetail.tsx

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
ThumbsUp,
88
ThumbsDown,
99
Sparkles,
10+
Code,
1011
} from 'lucide-react'
1112
import { Button } from './Button'
1213
import { twMerge } from 'tailwind-merge'
@@ -258,16 +259,30 @@ export function ShowcaseDetail({ showcaseId }: ShowcaseDetailProps) {
258259
</p>
259260
</div>
260261
</div>
261-
<Button
262-
as="a"
263-
href={showcase.url}
264-
target="_blank"
265-
rel="noopener noreferrer"
266-
className="px-4 py-2 text-sm bg-gray-900 dark:bg-white text-white dark:text-gray-900 border-gray-900 dark:border-white hover:bg-gray-700 dark:hover:bg-gray-200 shrink-0"
267-
>
268-
Visit Site
269-
<ExternalLink className="w-4 h-4" />
270-
</Button>
262+
<div className="flex gap-2 shrink-0">
263+
{showcase.sourceUrl && (
264+
<Button
265+
as="a"
266+
href={showcase.sourceUrl}
267+
target="_blank"
268+
rel="noopener noreferrer"
269+
className="px-4 py-2 text-sm"
270+
>
271+
View Source
272+
<Code className="w-4 h-4" />
273+
</Button>
274+
)}
275+
<Button
276+
as="a"
277+
href={showcase.url}
278+
target="_blank"
279+
rel="noopener noreferrer"
280+
className="px-4 py-2 text-sm bg-gray-900 dark:bg-white text-white dark:text-gray-900 border-gray-900 dark:border-white hover:bg-gray-700 dark:hover:bg-gray-200"
281+
>
282+
Visit Site
283+
<ExternalLink className="w-4 h-4" />
284+
</Button>
285+
</div>
271286
</div>
272287

273288
{/* Description */}

0 commit comments

Comments
 (0)