fix: improve graph spacing, mobile layout, and Telegram viewport

- Increase FA2 scalingRatio to 10 and decrease gravity to 0.5 for
  better node spacing (less cluttered graph)
- Use 100dvh instead of 100vh for Telegram Mini App viewport compat
- Hide legend on mobile to prevent overlay collision
- Move controls to bottom-right on mobile, bottom-center on desktop
- Make stats single-column on mobile for compact layout
This commit is contained in:
Fringg
2026-03-19 08:20:38 +03:00
parent 0f756d633d
commit 818557f57d
3 changed files with 10 additions and 9 deletions

View File

@@ -31,7 +31,7 @@ export function ReferralNetwork() {
return ( return (
<div <div
id="referral-network-container" id="referral-network-container"
className="relative flex h-[calc(100vh-64px)] flex-col overflow-hidden bg-[#0a0a0f]" className="relative flex h-[calc(100dvh-64px)] flex-col overflow-hidden bg-[#0a0a0f]"
> >
{/* Top bar */} {/* Top bar */}
<div className="relative z-20 flex shrink-0 items-center gap-3 border-b border-dark-700/50 bg-dark-900/90 px-4 py-3 backdrop-blur-md"> <div className="relative z-20 flex shrink-0 items-center gap-3 border-b border-dark-700/50 bg-dark-900/90 px-4 py-3 backdrop-blur-md">
@@ -86,13 +86,13 @@ export function ReferralNetwork() {
<NetworkStats data={networkData} /> <NetworkStats data={networkData} />
</div> </div>
{/* Bottom-right: legend */} {/* Bottom-right: legend (hidden on mobile to avoid overlap) */}
<div className="absolute bottom-4 right-4 z-10"> <div className="absolute bottom-4 right-4 z-10 hidden sm:block">
<NetworkLegend /> <NetworkLegend />
</div> </div>
{/* Bottom-center: controls */} {/* Bottom-right on mobile, bottom-center on desktop: controls */}
<div className="absolute bottom-4 left-1/2 z-10 -translate-x-1/2"> <div className="absolute bottom-4 right-4 z-10 sm:left-1/2 sm:right-auto sm:-translate-x-1/2">
<NetworkControls /> <NetworkControls />
</div> </div>
</> </>

View File

@@ -236,9 +236,10 @@ export function NetworkGraph({ data, className }: NetworkGraphProps) {
if (graph.order > 0) { if (graph.order > 0) {
const supervisor = new FA2LayoutSupervisor(graph, { const supervisor = new FA2LayoutSupervisor(graph, {
settings: { settings: {
gravity: 1, gravity: 0.5,
scalingRatio: 2, scalingRatio: 10,
barnesHutOptimize: true, barnesHutOptimize: true,
slowDown: 2,
}, },
}); });
fa2Ref.current = supervisor; fa2Ref.current = supervisor;

View File

@@ -31,9 +31,9 @@ export function NetworkStats({ data, className }: NetworkStatsProps) {
return ( return (
<div <div
className={`rounded-xl border border-dark-700/50 bg-dark-900/80 p-3 backdrop-blur-md ${className ?? ''}`} className={`rounded-xl border border-dark-700/50 bg-dark-900/80 p-2 backdrop-blur-md sm:p-3 ${className ?? ''}`}
> >
<div className="grid grid-cols-2 gap-3"> <div className="grid grid-cols-1 gap-1.5 sm:grid-cols-2 sm:gap-3">
{stats.map((stat) => ( {stats.map((stat) => (
<div key={stat.label}> <div key={stat.label}>
<p className="text-[10px] font-medium uppercase tracking-wider text-dark-500"> <p className="text-[10px] font-medium uppercase tracking-wider text-dark-500">