import React, { useState } from 'react' import { useParams, useNavigate } from 'react-router-dom' import { BookOpen, Heart, Users, Calendar, MessageCircle, Eye } from 'lucide-react' import { useAuthStore } from '../../store/authStore' import { useStoryStore } from '../../store/storyStore' import { Avatar } from '../../components/ui/Avatar' import { RoleBadge, StatusBadge } from '../../components/ui/Badge' import { StoryCard } from '../../components/ui/StoryCard' import { GenreBadge } from '../../components/ui/Badge' type Tab = 'stories' | 'about' export const ProfilePage: React.FC = () => { const { username } = useParams<{ username: string }>() const navigate = useNavigate() const { allUsers, currentUser } = useAuthStore() const { stories, comments } = useStoryStore() const [tab, setTab] = useState('stories') const user = allUsers.find(u => u.username === username) if (!user) { return (

User not found

) } const userStories = stories.filter(s => s.user_id === user.user_id && s.status === 'published') const totalLikes = userStories.reduce((acc, s) => acc + s.total_likes, 0) const totalViews = userStories.reduce((acc, s) => acc + s.total_views, 0) const userComments = comments.filter(c => c.user_id === user.user_id) const allGenres = [...new Set(userStories.flatMap(s => s.genres))] return (
{/* Profile header */}
{/* Cover */}
{/* Avatar + info */}
{currentUser?.user_id === user.user_id && ( )}
{/* User info */}

{user.name} {user.surname}

@{user.username}

{user.bio &&

{user.bio}

}
Joined {new Date(user.created_at).toLocaleDateString('en-US', { month: 'long', year: 'numeric' })} {user.follower_count} followers ยท {user.following_count} following
{/* Stats */}
{[ { icon: , value: userStories.length, label: 'Stories' }, { icon: , value: totalLikes.toLocaleString(), label: 'Likes' }, { icon: , value: totalViews.toLocaleString(), label: 'Views' }, { icon: , value: userComments.length, label: 'Comments' }, ].map(s => (
{s.icon}

{s.value}

{s.label}

))}
{/* Tabs */}
{(['stories', 'about'] as Tab[]).map(t => ( ))}
{/* Tab content */} {tab === 'stories' ? (
{userStories.length === 0 ? (

No published stories yet.

) : (
{userStories.map(story => ( ))}
)}
) : (

About

{user.bio || 'No bio provided.'}

{allGenres.length > 0 && (

Writes In

{allGenres.map(g => )}
)}

Stats

Role
Member since {new Date(user.created_at).toLocaleDateString()}
Published stories {userStories.length}
)}
) }