design changes for profile activity
Build Images and Deploy / Update-PROD-Stack (push) Successful in 1m22s

This commit is contained in:
2026-03-19 02:04:49 -04:00
parent 249909f3de
commit fdb234641f
2 changed files with 20 additions and 18 deletions
+19 -17
View File
@@ -3,6 +3,7 @@ import { getServerSession } from 'next-auth'
import { authOptions } from '@/lib/auth' import { authOptions } from '@/lib/auth'
import { notFound } from 'next/navigation' import { notFound } from 'next/navigation'
import { formatCurrency, formatNumber, pnlColor, formatPnl } from '@/lib/utils' import { formatCurrency, formatNumber, pnlColor, formatPnl } from '@/lib/utils'
import { formatDistanceToNow } from 'date-fns'
import { getBalanceTier } from '@/lib/pricing' import { getBalanceTier } from '@/lib/pricing'
import Link from 'next/link' import Link from 'next/link'
import { TrendingUp, TrendingDown, Coins, Building2 } from 'lucide-react' import { TrendingUp, TrendingDown, Coins, Building2 } from 'lucide-react'
@@ -248,10 +249,11 @@ export default async function ProfilePage({ params }: Props) {
const isLottery = t.type === 'LOTTERY_WIN' const isLottery = t.type === 'LOTTERY_WIN'
const isLiquidation = t.type === 'LIQUIDATE_LONG' || t.type === 'LIQUIDATE_SHORT' const isLiquidation = t.type === 'LIQUIDATE_LONG' || t.type === 'LIQUIDATE_SHORT'
return ( return (
<div key={t.id} className="flex items-center justify-between px-4 py-3 text-sm"> <div key={t.id} className="px-4 py-3 text-sm space-y-1.5">
<div className="flex items-center gap-3"> {/* Primary row: badge · hashtag/label · total */}
<div className="flex items-center gap-2">
<span <span
className={`text-xs font-medium px-2 py-0.5 rounded ${ className={`text-xs font-medium px-2 py-0.5 rounded shrink-0 ${
isLiquidation isLiquidation
? 'bg-orange-500/15 text-orange-400' ? 'bg-orange-500/15 text-orange-400'
: isLottery : isLottery
@@ -264,30 +266,30 @@ export default async function ProfilePage({ params }: Props) {
{isLiquidation ? 'LIQUIDATED' : t.type.replace(/_/g, ' ')} {isLiquidation ? 'LIQUIDATED' : t.type.replace(/_/g, ' ')}
</span> </span>
{isLottery ? ( {isLottery ? (
<span className="text-amber-300">Lucky Dip</span> <span className="text-amber-300 font-medium flex-1 min-w-0">Lucky Dip</span>
) : ( ) : (
<Link <Link
href={`/hashtag/${t.hashtag!.tag}`} href={`/hashtag/${t.hashtag!.tag}`}
className="hover:text-indigo-300" className="text-indigo-300 hover:text-indigo-200 font-medium truncate flex-1 min-w-0"
> >
#{t.hashtag!.displayTag} #{t.hashtag!.displayTag}
</Link> </Link>
)} )}
<span className="shrink-0 font-medium tabular-nums">
{formatCurrency(isLottery ? t.profit : t.total)}
</span>
</div> </div>
<div className="text-right"> {/* Secondary row: time (left) · shares @ price (right) */}
{isLottery ? ( <div className="flex items-center justify-between text-xs text-slate-500">
<p className="text-emerald-400 font-medium">{formatCurrency(t.profit)}</p> <span>{formatDistanceToNow(t.createdAt, { addSuffix: true })}</span>
) : ( {!isLottery && (
<> <span className="tabular-nums ml-3">{formatNumber(t.shares)} sh @ {formatCurrency(t.price)}</span>
<p>{formatNumber(t.shares)} sh @ {formatCurrency(t.price)}</p>
{(t.type === 'SELL_LONG' || t.type === 'SELL_SHORT' || isLiquidation) && (
<p className={`text-xs ${pnlColor(t.profit)}`}>
{formatPnl(t.profit)}
</p>
)}
</>
)} )}
</div> </div>
{/* PnL: sell and liquidation trades */}
{(t.type === 'SELL_LONG' || t.type === 'SELL_SHORT' || isLiquidation) && (
<div className={`text-xs text-right ${pnlColor(t.profit)}`}>{formatPnl(t.profit)}</div>
)}
</div> </div>
) )
})} })}
+1 -1
View File
File diff suppressed because one or more lines are too long