• Stars
    star
    116
  • Rank 294,397 (Top 6 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 3 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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

There are two ways to Typewriter:

1. Component

import React from 'react'
import { Typewriter } from 'react-simple-typewriter'

const MyComponent = () => {
  return (
    <div className='App'>
      <Typewriter {/* Props */} />
    </div>
  )
}

Component Props

Prop Type Options Description Default
words array Required Array of strings holding the words ['Hello', '...']
typeSpeed number Optional Character typing speed in Milliseconds 80
deleteSpeed number Optional Character deleting speed in Milliseconds 50
delaySpeed number Optional Delay time between the words in Milliseconds 1500
loop number | boolean Optional Control how many times to run. 0 | false to run infinitely 1
cursor boolean Optional Show / Hide a cursor false
cursorStyle ReactNode Optional Change the cursor style available if cursor is enabled |
cursorBlinking boolean Optional Enable cursor blinking animation true
onLoopDone function Optional Callback function that is triggered when loops are completed. available if loop is > 0 -
onType function Optional Callback function that is triggered while typing with typed words count passed -
onDelay function Optional Callback function that is triggered on typing delay -
onDelete function Optional Callback function that is triggered while deleting -

Usage Example

import React from 'react'
import { Typewriter } from 'react-simple-typewriter'

const MyComponent = () => {

  const handleType = (count: number) => {
    // access word count number
    console.log(count)}
  }

  const handleDone = () => {
    console.log(`Done after 5 loops!`)
  }

  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
            words={['Eat', 'Sleep', 'Code', 'Repeat!']}
            loop={5}
            cursor
            cursorStyle='_'
            typeSpeed={70}
            deleteSpeed={50}
            delaySpeed={1000}
            onLoopDone={handleDone}
            onType={handleType}
          />
        </span>
      </h1>
    </div>
  )
}

2. Hook

BREAKING CHANGES v5.0.0 Hook now returns text along with some useful flags:

Prop Type Description
isType boolean Check if currently typing
isDelete boolean Check if currently deleting
isDelay boolean Check if currently on delay
isDone boolean Check if all running loops are done
import { useTypewriter } from 'react-simple-typewriter'

const MyComponent = () => {
  /**
   * @returns
   * text: [string] typed text
   * NEW helper: {} helper flags
   */
  const [text, helper] = useTypewriter({
    /* Config */
  })

  /* Hook helper */
  const { isType, isDelete, isDelay, isDone } = helper

  return (
    <div className='App'>
      <span>{text}</span>
    </div>
  )
}

Hook Config

Prop Type Options Description Default
words array Required Array of strings holding the words ['Hello', '...']
typeSpeed number Optional Character typing speed in Milliseconds 80
deleteSpeed number Optional Character deleting speed in Milliseconds 50
delaySpeed number Optional Delay time between the words in Milliseconds 1500
loop number | boolean Optional Control how many times to run. 0 | false to run infinitely 1
onLoopDone function Optional Callback function that is triggered when loops are completed. available if loop is > 0 -
onType function Optional Callback function that is triggered while typing -
onDelete function Optional Callback function that is triggered while deleting -
onDelay function Optional Callback function that is triggered on typing delay -

Hook Usage Example

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

const MyComponent = () => {
  const [text] = useTypewriter({
    words: ['Hello', 'From', 'Typewriter', 'Hook!'],
    loop: 0
  })

  return (
    <div className='App'>
      <span>{text}</span>
    </div>
  )
}

Hook with Cursor

If you like to have the Cursor effect, you can import it as a separate Component

import React from 'react'
import { useTypewriter, Cursor } from 'react-simple-typewriter'

const MyComponent = () => {
  const [text] = useTypewriter({
    words: ['Hello', 'From', 'Typewriter', 'Hook!'],
    loop: 3,
    onLoopDone: () => console.log(`loop completed after 3 runs.`)
  })

  return (
    <div className='App'>
      <span>{text}</span>
      <Cursor cursorColor='red' />
    </div>
  )
}

Cursor Component Props

Prop Type Options Description Default
cursorStyle ReactNode Optional Change cursor style |
cursorColor String Optional Change cursor color inherit
cursorBlinking Boolean Optional disable cursor blinking animation true


Edit react-simple-typewriter

License

MIT Β© awran5

More Repositories

1

react-floating-whatsapp

Simple react component for adding a floating WhatsApp button to your project.
TypeScript
58
star
2

react-simple-star-rating

A simple react component for adding a star rating to your project.
TypeScript
55
star
3

esbuild-create-react-app

A minimal replacement for create-react-app using a truly blazing fast esbuild bundler. Up and running in less than 1 minute with almost zero configuration needed.
JavaScript
28
star
4

react-material-ui-step-form

React Material UI multi steps form with basic form validation logic.
TypeScript
23
star
5

react-typing-speed-test-game

1 minute Typing speed test game built with React. Test your typing speed online and find out how fast can you type in real world.
JavaScript
21
star
6

CMB2-conditional-logic

A small jQuery plugin for handling conditional logic fields for CMB2.
JavaScript
14
star
7

speedTyping

One-minute speed Typing test - Native JavaScript
HTML
11
star
8

react-one-minute-speed-typing-test-ts

A simple one-minute React app for testing your typing speed.
TypeScript
8
star
9

esbuild-react-app-ts-template

This is a Typescript template for esbuild-create-react-app project
TypeScript
5
star
10

react-simple-offcanvas

React component for adding a hidden sidebars to your project. Simply this is a Bootstrap 5 Offcanvas component but without installing any dependencies.
TypeScript
4
star
11

react-simple-before-after

A simple yet powerful react component for adding a nice before after image slider to your project.
TypeScript
4
star
12

react-simple-tabs-component

A simple react component for adding accessible easy-to-use Tabs to your project.
TypeScript
3
star
13

esbuild-react-app-js-template

This is a JavaScript template for esbuild-create-react-app project
JavaScript
3
star
14

react-simple-scroll-up

A minimal lightweight react component for adding a nice scroll up (back to top) button with onScroll progress.
TypeScript
3
star
15

PasswordKeeper

Free password generator/manager tool build with React allows you to create and store a strong random passwords and access from anywhere.
TypeScript
2
star
16

custom-qr-code-styling

Generate a modern, styled and branded QR Code for Free! Build with React, based on QR Code Styling JS library,
TypeScript
2
star
17

WP-CMB2-conditional-logic

A lightweight WordPress plugin for adding conditional logic fields to CMB2 plugin.
JavaScript
2
star
18

react-firestore-crud-app-ts

A simple CRUD (Create, Read, Update and Delete) React App using Hooks, Cloud Firestore and Bootstrap for the UI.
TypeScript
2
star
19

react-firebase-dashboard

Simple Google authentication sign-in page build with React and firebase.
TypeScript
2
star
20

react-bootstrap-accordion

A simple react component for adding a nice vertically collapsing accordions based on bootstrap 5 Accordion.
TypeScript
1
star
21

react-markdown-parser

Simple Markdown Editor build with React and Remarkable library.
TypeScript
1
star
22

sidebar-navigation-toggle-react-fontAwesome

sidebar navigation example using react and react-fontawesome
HTML
1
star
23

conditional-script

Native JavaScript ES6 script lets you conditionally show/hide DOM elements based on user input
JavaScript
1
star
24

react-hooks-firebase-starter-project

JavaScript
1
star
25

typewriting

Lightweight JavaScript plugin for adding nice, customizable Typewriting effect using custom HTML5 attributes.
JavaScript
1
star