From 51cfd7a3c84b0e7492828459d30cfb03abac7fcf Mon Sep 17 00:00:00 2001 From: jwinterm Date: Fri, 16 Jan 2026 10:42:49 -0500 Subject: [PATCH] refactor: adjust nebula target, fix initial visibility, and update bento images --- .../components/landing/dynamic-background.tsx | 7 ------ .../src/components/portfolio/bento-grid.tsx | 16 ++++++------- packages/ui/src/procedural/nebula-field.tsx | 24 ++++++++++++++----- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/apps/web/src/components/landing/dynamic-background.tsx b/apps/web/src/components/landing/dynamic-background.tsx index 1339d9a..ded89dc 100644 --- a/apps/web/src/components/landing/dynamic-background.tsx +++ b/apps/web/src/components/landing/dynamic-background.tsx @@ -6,13 +6,6 @@ import { useEffect, useState } from "react"; export function DynamicBackground() { const { theme } = useTheme(); - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - }, []); - - if (!mounted) return null; return ( {

r/CryptoCurrency

Governance dashboard for 10M+ members. Real-time DAO metrics.

-
+
r/CryptoCurrency
@@ -27,12 +27,12 @@ export const PortfolioGrid = () => {

Occupy Wallets

High-fidelity gallery for fiscal graffiti.

-
+
Occupy Wallets
@@ -47,12 +47,12 @@ export const PortfolioGrid = () => {
  • Wowne.ro (WASM)
  • -
    +
    Privacy Labs
    @@ -64,12 +64,12 @@ export const PortfolioGrid = () => {

    MoonPlace

    Collaborative pixel canvas engine.

    -
    +
    MoonPlace
    diff --git a/packages/ui/src/procedural/nebula-field.tsx b/packages/ui/src/procedural/nebula-field.tsx index 6b6c201..1a7f741 100644 --- a/packages/ui/src/procedural/nebula-field.tsx +++ b/packages/ui/src/procedural/nebula-field.tsx @@ -24,11 +24,11 @@ const StreamLine = ({ d, themeMode, onHit, width }: StreamLineProps) => { useEffect(() => { let isMounted = true; const animate = async () => { - // Staggered start delay (0-4s) - await new Promise(resolve => setTimeout(resolve, Math.random() * 4000)); + // Shorter start delay (0-2s) so it feels more reactive on load + await new Promise(resolve => setTimeout(resolve, Math.random() * 2000)); while (isMounted) { - const duration = 10 + Math.random() * 8; // Slow streamers + const duration = 8 + Math.random() * 6; // slightly faster but still slow // Ensure starting state is definitely 0 controls.set({ pathLength: 0, pathOffset: 0, opacity: 0 }); @@ -91,7 +91,7 @@ export const NebulaField = ({ className, density = 8, themeMode = 'dark' }: Nebu // Configuration for convergence point const targetX = 25; - const targetY = 20; + const targetY = 30; // Lowered to hit center of computer better const paths = useMemo(() => { return Array.from({ length: density }).map(() => { @@ -118,6 +118,18 @@ export const NebulaField = ({ className, density = 8, themeMode = 'dark' }: Nebu setMounted(true); }, []); + // Initial animation for the computer icon + useEffect(() => { + if (mounted) { + monitorControls.set({ opacity: 0, scale: 0.5 }); + monitorControls.start({ + opacity: themeMode === 'light' ? 0.4 : 0.6, + scale: 1, + transition: { duration: 2, ease: "easeOut" } + }); + } + }, [mounted, themeMode, monitorControls]); + const handleHit = useCallback(() => { const colors = [ "text-emerald-500", "text-blue-500", "text-purple-500", @@ -142,7 +154,7 @@ export const NebulaField = ({ className, density = 8, themeMode = 'dark' }: Nebu
    ))}