+1
src/App.tsx
+1
src/App.tsx
+9
-7
src/components/SearchResultCard.tsx
+9
-7
src/components/SearchResultCard.tsx
···
28
28
<div className="bg-white dark:bg-gray-800 rounded-2xl shadow-sm overflow-hidden">
29
29
{/* Source User */}
30
30
<div className="px-4 py-3 bg-gray-50 dark:bg-gray-900 border-b border-gray-200 dark:border-gray-700">
31
-
<div className="flex items-center justify-between">
31
+
<div className="flex items-start justify-between gap-2">
32
32
<div className="flex-1 min-w-0">
33
-
<div className="font-bold text-gray-900 dark:text-gray-100 truncate">
34
-
@{result.sourceUser.username}
35
-
</div>
36
-
<div className="text-xs text-gray-500 dark:text-gray-400">
37
-
{platform.name}
33
+
<div className="flex flex-wrap items-baseline gap-x-2 gap-y-1">
34
+
<span className="font-bold text-gray-900 dark:text-gray-100 truncate">
35
+
@{result.sourceUser.username}
36
+
</span>
37
+
<span className="text-xs text-gray-500 dark:text-gray-400 whitespace-nowrap">
38
+
from {platform.name}
39
+
</span>
38
40
</div>
39
41
</div>
40
-
<div className={`text-xs px-2 py-1 rounded-full ${platform.accentBg} text-white whitespace-nowrap ml-2`}>
42
+
<div className={`text-xs px-2 py-1 rounded-full ${platform.accentBg} text-white whitespace-nowrap flex-shrink-0`}>
41
43
{result.atprotoMatches.length} {result.atprotoMatches.length === 1 ? 'match' : 'matches'}
42
44
</div>
43
45
</div>
+13
-12
src/pages/Home.tsx
+13
-12
src/pages/Home.tsx
···
157
157
<button
158
158
key={upload.uploadId}
159
159
onClick={() => onLoadUpload(upload.uploadId)}
160
-
className="w-full flex items-center space-x-4 p-4 bg-gray-50 dark:bg-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 rounded-xl transition-colors text-left"
160
+
className="w-full flex items-start space-x-4 p-4 bg-gray-50 dark:bg-gray-700 hover:bg-gray-100 dark:hover:bg-gray-600 rounded-xl transition-colors text-left"
161
161
>
162
162
<div className={`w-12 h-12 bg-gradient-to-r ${getPlatformColor(upload.sourcePlatform)} rounded-xl flex items-center justify-center flex-shrink-0`}>
163
163
<Upload className="w-6 h-6 text-white" />
164
164
</div>
165
165
<div className="flex-1 min-w-0">
166
-
<div className="font-semibold text-gray-900 dark:text-gray-100 capitalize mb-1">
167
-
{upload.sourcePlatform}
168
-
</div>
169
-
<div className="flex items-center space-x-2">
170
-
<span className="text-xs px-2 py-0.5 bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300 rounded-full whitespace-nowrap">
171
-
{upload.matchedUsers} {upload.matchedUsers === 1 ? 'match' : 'matches'}
172
-
</span>
166
+
<div className="flex flex-wrap items-start justify-between gap-x-4 gap-y-2 mb-1">
167
+
<div className="font-semibold text-gray-900 dark:text-gray-100 capitalize">
168
+
{upload.sourcePlatform}
169
+
</div>
170
+
<div className="flex items-center gap-2 flex-shrink-0">
171
+
<span className="text-xs px-2 py-0.5 bg-green-100 dark:bg-green-900 text-green-700 dark:text-green-300 rounded-full whitespace-nowrap">
172
+
{upload.matchedUsers} {upload.matchedUsers === 1 ? 'match' : 'matches'}
173
+
</span>
174
+
<div className="text-sm text-gray-500 dark:text-gray-400 whitespace-nowrap">
175
+
{Math.round((upload.matchedUsers / upload.totalUsers) * 100)}%
176
+
</div>
177
+
</div>
173
178
</div>
174
179
<div className="text-sm text-gray-600 dark:text-gray-400">
175
180
{upload.totalUsers} users • {formatDate(upload.createdAt)}
176
181
</div>
177
-
</div>
178
-
<div className="text-right text-sm text-gray-500 dark:text-gray-400">
179
-
<div className="font-medium">{Math.round((upload.matchedUsers / upload.totalUsers) * 100)}%</div>
180
-
<div className="text-xs">match rate</div>
181
182
</div>
182
183
</button>
183
184
))}
+4
-4
src/pages/Loading.tsx
+4
-4
src/pages/Loading.tsx
···
22
22
onNavigate: (step: 'home' | 'login') => void;
23
23
searchProgress: SearchProgress;
24
24
currentStep: string;
25
+
sourcePlatform: string;
25
26
}
26
27
27
-
export default function LoadingPage({ session, onLogout, onNavigate, searchProgress, currentStep }: LoadingPageProps) {
28
-
// Default to TikTok styling for loading state
29
-
const platform = PLATFORMS.tiktok;
28
+
export default function LoadingPage({ session, onLogout, onNavigate, searchProgress, currentStep, sourcePlatform }: LoadingPageProps) {
29
+
const platform = PLATFORMS[sourcePlatform] || PLATFORMS.tiktok;
30
30
const PlatformIcon = platform.icon;
31
31
32
32
return (
···
45
45
<div>
46
46
<h2 className="text-xl font-bold">Finding Your People</h2>
47
47
<p className="text-white/90 text-sm">
48
-
Searching the ATmosphere...
48
+
Searching the ATmosphere for {platform.name} follows...
49
49
</p>
50
50
</div>
51
51
</div>