5.2.2 • Published 2 years ago

nextjs-simple-typewriter v5.2.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

NextJs Simple Typewriter

NPM JavaScript Style Guidenpm bundle sizeGitHub

a fork of react-simple-typewriter using 'use client' directive.

A simple react component for adding a nice typewriter effect to your project. In nextJS 13.4, an error is caused because hooks are not allowed on server-side code. this package fixes that and runs the code client-side. Enjoy

npm

npm i nextjs-simple-typewriter

Yarn

yarn add nextjs-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

PropTypeOptionsDescriptionDefault
wordsarrayRequiredArray of strings holding the words['Hello', '...']
typeSpeednumberOptionalCharacter typing speed in Milliseconds80
deleteSpeednumberOptionalCharacter deleting speed in Milliseconds50
delaySpeednumberOptionalDelay time between the words in Milliseconds1500
loopnumber | booleanOptionalControl how many times to run. 0 \| false to run infinitely1
cursorbooleanOptionalShow / Hide a cursorfalse
cursorStyleReactNodeOptionalChange the cursor style available if cursor is enabled\|
cursorBlinkingbooleanOptionalEnable cursor blinking animation\|
onLoopDonefunctionOptionalCallback function that is triggered when loops are completed. available if loop is > 0-
onTypefunctionOptionalCallback function that is triggered while typing with typed words count passed-
onDelayfunctionOptionalCallback function that is triggered on typing delay-
onDeletefunctionOptionalCallback 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:

PropTypeDescription
isTypebooleanCheck if currently typing
isDeletebooleanCheck if currently deleting
isDelaybooleanCheck if currently on delay
isDonebooleanCheck 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

PropTypeOptionsDescriptionDefault
wordsarrayRequiredArray of strings holding the words['Hello', '...']
typeSpeednumberOptionalCharacter typing speed in Milliseconds80
deleteSpeednumberOptionalCharacter deleting speed in Milliseconds50
delaySpeednumberOptionalDelay time between the words in Milliseconds1500
loopnumber | booleanOptionalControl how many times to run. 0 \| false to run infinitely1
onLoopDonefunctionOptionalCallback function that is triggered when loops are completed. available if loop is > 0-
onTypefunctionOptionalCallback function that is triggered while typing-
onDeletefunctionOptionalCallback function that is triggered while deleting-
onDelayfunctionOptionalCallback 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

PropTypeOptionsDescriptionDefault
cursorStyleReactNodeOptionalChange cursor style\|
cursorColorStringOptionalChange cursor colorinherit
cursorBlinkingBooleanOptionaldisable cursor blinking animationtrue

Demo

Edit react-simple-typewriter

License

MIT © SoloReverse

5.2.2

2 years ago

5.2.1

2 years ago

5.2.0

2 years ago

5.1.5

2 years ago

5.1.3

2 years ago

5.1.1

2 years ago