File size: 1,626 Bytes
1904e4c
978caa8
1904e4c
 
 
 
978caa8
1904e4c
 
 
 
978caa8
1904e4c
 
978caa8
1904e4c
978caa8
 
 
 
 
 
 
1904e4c
 
978caa8
 
1904e4c
 
 
978caa8
 
 
1904e4c
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

import { Brain } from "lucide-react";
import { useState, useEffect } from "react";

export const ThinkingAnimation = () => {
  const [dots, setDots] = useState(0);

  useEffect(() => {
    const interval = setInterval(() => {
      setDots((prev) => (prev + 1) % 4);
    }, 400);

    return () => clearInterval(interval);
  }, []);

  return (
    <div className="flex items-center gap-2 px-4 py-1">
      <div className="thinking-brain-svg relative flex items-center justify-center">
        <Brain className="h-4 w-4 text-financial-accent" />
        <div className="thinking-waves-enhanced flex items-center justify-center absolute inset-0">
          <span className="block absolute border-4 border-financial-accent/20 bg-financial-accent/20 rounded-full animate-[ripple_1.5s_ease-out_infinite]"></span>
          <span className="block absolute border-4 border-financial-accent/30 bg-financial-accent/20 rounded-full animate-[ripple_1.5s_ease-out_0.4s_infinite]"></span>
          <span className="block absolute border-4 border-financial-accent/40 bg-financial-accent/20 rounded-full animate-[ripple_1.5s_ease-out_0.8s_infinite]"></span>
        </div>
      </div>

      <span className="text-sm font-medium text-financial-accent flex items-center">
        Thinking
        <span className="thinking-dots-container ml-2">
          {Array(3).fill(0).map((_, i) => (
            <span
              key={i}
              className={`thinking-dot ${i <= dots ? 'thinking-dot-active bg-financial-accent' : 'bg-financial-accent/30'}`}
            ></span>
          ))}
        </span>
      </span>
    </div>
  );
};