({ activeTab, onTabChange }: MobileBottomNavProps)
| 12 | ]; |
| 13 | |
| 14 | const MobileBottomNav = ({ activeTab, onTabChange }: MobileBottomNavProps) => { |
| 15 | return ( |
| 16 | <div className="fixed bottom-3 left-4 right-4 z-50 flex items-center justify-around h-14 rounded-2xl bg-card/80 backdrop-blur-xl border border-border/60 shadow-lg shadow-black/20 safe-area-bottom"> |
| 17 | {tabs.map(({ id, icon: Icon, label }) => ( |
| 18 | <button |
| 19 | key={id} |
| 20 | onClick={() => onTabChange(id)} |
| 21 | className={`flex flex-col items-center justify-center gap-0.5 flex-1 h-full transition-all duration-200 ${ |
| 22 | activeTab === id |
| 23 | ? "text-primary" |
| 24 | : "text-muted-foreground" |
| 25 | }`} |
| 26 | > |
| 27 | <div className={`p-1 rounded-xl transition-all duration-200 ${activeTab === id ? "bg-primary/15" : ""}`}> |
| 28 | <Icon className="w-5 h-5" /> |
| 29 | </div> |
| 30 | <span className="text-[10px] font-medium">{label}</span> |
| 31 | </button> |
| 32 | ))} |
| 33 | </div> |
| 34 | ); |
| 35 | }; |
| 36 | |
| 37 | export default MobileBottomNav; |
nothing calls this directly
no outgoing calls
no test coverage detected