Skip to content

A simple react component for adding a nice typewriter effect to your project.

License

Notifications You must be signed in to change notification settings

nilportugues/react-simple-typewriter

 
 

Repository files navigation

React Simple Typewriter

A simple react component for adding a nice typewriter effect to your project.

NPM JavaScript Style Guidenpm bundle sizeGitHub

screenshot

Install

# npm
npm i react-simple-typewriter

# Yarn
yarn add react-simple-typewriter

Usage (Hook)

import { useTypewriter } from 'react-simple-typewriter'

const CustomSimpleTypewriter = () => {
  const text = useTypewriter({
    words: ['i', 'use', 'hooks!'],
    loop: true,
    onLoop: (loopCount) => console.log(`Hook completed loop ${loopCount}`),
    onDone: () => console.log('Done!')
  })

  return <span>{text}</span>
}

Hook Configuration

interface TypewriterConfig {
  words: string[]
  loop?: boolean = false
  typeSpeed?: number = 100
  deleteSpeed?: number = 50
  delaySpeed?: number = 1500
  onLoop?: (loopCount: number) => void = noop // only called if loop = true
  onDone?: () => void = noop // only called if loop = false
}

Usage (Component)

import React from 'react'

import Typewriter from 'react-simple-typewriter'
import 'react-simple-typewriter/dist/index.css'

export default function App() {
  return (
    <div className='App'>
      <h1
        style={{ paddingTop: '5rem', margin: 'auto 0', fontWeight: 'normal' }}
      >
        Life is simple{' '}
        <span style={{ color: 'red', fontWeight: 'bold' }}>
          {/* Style will be inherited from the parent element */}
          <Typewriter
            loop
            cursor
            cursorStyle='_'
            typeSpeed={70}
            deleteSpeed={50}
            delaySpeed={1000}
            words={['Eat', 'Sleep', 'Code', 'Repeat!']}
            onLoop={(loopCount) =>
              console.log(`Just completed loop ${loopCount}`)
            }
          />
        </span>
      </h1>
    </div>
  )
}

Available Props

Prop Type Description Default
loop Boolean Repeat the typing effect (true if present) false
cursor Boolean Show / Hide cursor (show if present) false
cursorStyle String Change the cursor style |
typeSpeed Integer Speed in Milliseconds 100
deleteSpeed Integer Word deleting speed in Milliseconds 50
delaySpeed Integer Delay after the word is written in Milliseconds 1500
words Array Array of strings holding the words -
onLoop (loopCount: Integer) => void Called when a loop is complete. loopCount is the total number of completed loops. Only called if loop = true noop
onDone () => void Called when typewriter is done. Only called if loop = false noop

License

MIT © awran5

About

A simple react component for adding a nice typewriter effect to your project.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 64.2%
  • HTML 22.8%
  • CSS 13.0%