You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
	
	
		
			
				
					
						
							|  |  |  | import styled from 'styled-components'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const StyledTypingContainer = styled.div`
 | 
					
						
							|  |  |  |   display: inline-flex; | 
					
						
							|  |  |  |   flex-direction: row; | 
					
						
							|  |  |  |   align-items: center; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   height: 8px; | 
					
						
							|  |  |  |   width: 38px; | 
					
						
							|  |  |  |   padding-inline-start: 1px; | 
					
						
							|  |  |  |   padding-inline-end: 1px; | 
					
						
							|  |  |  | `;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const StyledTypingDot = styled.div<{ index: number }>`
 | 
					
						
							|  |  |  |   border-radius: 50%; | 
					
						
							|  |  |  |   background-color: var(--text-secondary-color); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   height: 6px; | 
					
						
							|  |  |  |   width: 6px; | 
					
						
							|  |  |  |   opacity: 0.4; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @keyframes typing-animation-first { | 
					
						
							|  |  |  |     0% { | 
					
						
							|  |  |  |       opacity: 0.4; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     20% { | 
					
						
							|  |  |  |       transform: scale(1.3); | 
					
						
							|  |  |  |       opacity: 1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     40% { | 
					
						
							|  |  |  |       opacity: 0.4; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @keyframes typing-animation-second { | 
					
						
							|  |  |  |     10% { | 
					
						
							|  |  |  |       opacity: 0.4; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     30% { | 
					
						
							|  |  |  |       transform: scale(1.3); | 
					
						
							|  |  |  |       opacity: 1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     50% { | 
					
						
							|  |  |  |       opacity: 0.4; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   @keyframes typing-animation-third { | 
					
						
							|  |  |  |     20% { | 
					
						
							|  |  |  |       opacity: 0.4; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     40% { | 
					
						
							|  |  |  |       transform: scale(1.3); | 
					
						
							|  |  |  |       opacity: 1; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     60% { | 
					
						
							|  |  |  |       opacity: 0.4; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   animation: ${props => | 
					
						
							|  |  |  |       props.index === 0 | 
					
						
							|  |  |  |         ? 'typing-animation-first' | 
					
						
							|  |  |  |         : props.index === 1 | 
					
						
							|  |  |  |         ? 'typing-animation-second' | 
					
						
							|  |  |  |         : 'typing-animation-third'} | 
					
						
							|  |  |  |     1600ms ease infinite; | 
					
						
							|  |  |  | `;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const StyledSpacer = styled.div`
 | 
					
						
							|  |  |  |   flex-grow: 1; | 
					
						
							|  |  |  | `;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export const TypingAnimation = () => { | 
					
						
							|  |  |  |   return ( | 
					
						
							|  |  |  |     <StyledTypingContainer title={window.i18n('typingAlt')} aria-label={window.i18n('typingAlt')}> | 
					
						
							|  |  |  |       <StyledTypingDot index={0} /> | 
					
						
							|  |  |  |       <StyledSpacer /> | 
					
						
							|  |  |  |       <StyledTypingDot index={1} /> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       <StyledSpacer /> | 
					
						
							|  |  |  |       <StyledTypingDot index={2} /> | 
					
						
							|  |  |  |     </StyledTypingContainer> | 
					
						
							|  |  |  |   ); | 
					
						
							|  |  |  | }; |