ATlast — you'll never need to find your favorites on another platform again. Find your favs in the ATmosphere.
atproto
1import { PLATFORMS } from "../config/platforms";
2
3interface PlatformSelectorProps {
4 onPlatformSelect: (platform: string) => void;
5}
6
7export default function PlatformSelector({
8 onPlatformSelect,
9}: PlatformSelectorProps) {
10 return (
11 <div className="grid grid-cols-2 md:grid-cols-4 gap-3">
12 {Object.entries(PLATFORMS).map(([key, p]) => {
13 const PlatformIcon = p.icon;
14 const isEnabled = p.enabled;
15 return (
16 <button
17 key={key}
18 onClick={() => isEnabled && onPlatformSelect(key)}
19 disabled={!isEnabled}
20 className={`relative p-4 rounded-xl border-2 transition-all ${
21 isEnabled
22 ? "bg-purple-100/20 dark:bg-slate-900/50 hover:bg-purple-100/40 dark:hover:bg-slate-900/70 border-orange-500/50 dark:border-amber-400/50 hover:border-amber-400 dark:hover:border-amber-400/80 hover:shadow-lg cursor-pointer"
23 : "border-cyan-500/30 dark:border-purple-500/30 opacity-50 cursor-not-allowed bg-slate-100/30 dark:bg-slate-900/30"
24 }`}
25 title={isEnabled ? `Upload ${p.name} data` : "Coming soon"}
26 >
27 <PlatformIcon
28 className={`w-6 h-6 mx-auto mb-2 ${isEnabled ? "text-purple-750 dark:text-cyan-250" : "text-purple-750/50 dark:text-cyan-250/50"}`}
29 />
30 <div className="text-sm font-medium text-center text-purple-900 dark:text-cyan-100">
31 {p.name}
32 </div>
33 {!isEnabled && (
34 <div className="absolute top-2 right-2">
35 <span className="text-xs bg-purple-100 dark:bg-cyan-900 text-purple-600 dark:text-cyan-400 px-2 py-0.5 rounded-full">
36 Soon
37 </span>
38 </div>
39 )}
40 </button>
41 );
42 })}
43 </div>
44 );
45}