()
| 82 | } |
| 83 | |
| 84 | function HoldMessage() { |
| 85 | const language = useLanguage(); |
| 86 | |
| 87 | return ( |
| 88 | <div className="animate-[heightIn_500ms_4500ms_ease_both] py-2 text-tint-subtle"> |
| 89 | {tString(language, 'ai_chat_hold_message_1') |
| 90 | .split(' ') |
| 91 | .map((word, index) => ( |
| 92 | <span |
| 93 | key={index} |
| 94 | className="animate-fade-in-slow" |
| 95 | style={{ |
| 96 | animationDelay: `${5000 + index * 200}ms`, |
| 97 | }} |
| 98 | > |
| 99 | {word}{' '} |
| 100 | </span> |
| 101 | ))} |
| 102 | {tString(language, 'ai_chat_hold_message_2') |
| 103 | .split(' ') |
| 104 | .map((word, index) => ( |
| 105 | <span |
| 106 | key={index} |
| 107 | className="animate-fade-in-slow" |
| 108 | style={{ |
| 109 | animationDelay: `${10000 + index * 200}ms`, |
| 110 | }} |
| 111 | > |
| 112 | {word}{' '} |
| 113 | </span> |
| 114 | ))} |
| 115 | </div> |
| 116 | ); |
| 117 | } |
| 118 | |
| 119 | function LoadingSkeleton() { |
| 120 | return ( |
nothing calls this directly
no test coverage detected