diff --git a/.gitignore b/.gitignore index f0ac920..3549e43 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # dependencies /node_modules +package-lock.json # next.js /.next/ diff --git a/components/studio/canvas/canvas-wave.tsx b/components/studio/canvas/canvas-wave.tsx index b735243..c7cdf77 100644 --- a/components/studio/canvas/canvas-wave.tsx +++ b/components/studio/canvas/canvas-wave.tsx @@ -153,8 +153,15 @@ export function CanvasWave({ isActive, className }: CanvasWaveProps) { // Group 1: Idle Dots (Batched for speed - 95% of dots) // Group 2: Active Dots (Individual for specific opacity/color - 5% of dots) + interface ActiveDot { + x: number + y: number + lift: number + size: number + opacity: number + } - const activeDots: any[] = [] + const activeDots: ActiveDot[] = [] // Begin batch for idle dots ctx.beginPath() diff --git a/components/studio/canvas/image-canvas.tsx b/components/studio/canvas/image-canvas.tsx index f830e98..d7798d2 100644 --- a/components/studio/canvas/image-canvas.tsx +++ b/components/studio/canvas/image-canvas.tsx @@ -26,13 +26,6 @@ import { CanvasWave } from "./canvas-wave" // Premium easing: Expo out for satisfying deceleration const EXPO_OUT = [0.22, 1, 0.36, 1] as const -const SPRING_REFINED = { - type: "spring", - stiffness: 300, - damping: 30, - mass: 0.8 -} as const - // Timing choreography (in ms) const TIMING = { iconMorph: 250, // Icon transition duration @@ -53,37 +46,6 @@ const containerVariants: Variants = { }, } -// Central hub transformation - refined glass morphism -const hubVariants: Variants = { - idle: { - scale: 1, - borderRadius: "24px", - boxShadow: "0 0 0 1px rgba(255,255,255,0.05), 0 4px 20px -4px rgba(0,0,0,0.1)", - }, - generating: { - scale: 0.92, - borderRadius: "50%", - boxShadow: "0 0 0 1px rgba(var(--color-primary), 0.2), 0 8px 40px -8px rgba(var(--color-primary), 0.3)", - }, -} - -// Icon transitions with blur -const iconVariants: Variants = { - initial: { opacity: 0, scale: 0.8, filter: "blur(8px)" }, - animate: { - opacity: 1, - scale: 1, - filter: "blur(0px)", - transition: { duration: TIMING.iconMorph / 1000, ease: EXPO_OUT } - }, - exit: { - opacity: 0, - scale: 0.9, - filter: "blur(6px)", - transition: { duration: 0.15 } - }, -} - // Text entrance with stagger const textContainerVariants: Variants = { initial: {}, diff --git a/components/studio/layout/studio-shell.tsx b/components/studio/layout/studio-shell.tsx index 75dfe2a..b656c74 100644 --- a/components/studio/layout/studio-shell.tsx +++ b/components/studio/layout/studio-shell.tsx @@ -19,7 +19,6 @@ import { Button } from "@/components/ui/button" import { ScrollArea } from "@/components/ui/scroll-area" -import { Sparkles } from "lucide-react" import { BatchActionButton } from "@/components/studio/batch/batch-action-button" // Studio Components