ATlast — you'll never need to find your favorites on another platform again. Find your favs in the ATmosphere.
atproto

little ui fixes

Changed files
+27 -23
src
+1
src/App.tsx
··· 221 221 onNavigate={setCurrentStep} 222 222 searchProgress={searchProgress} 223 223 currentStep={currentStep} 224 + sourcePlatform={currentPlatform} 224 225 /> 225 226 )} 226 227
+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
··· 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
··· 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>