cli-loaders logocli-loaders

percent

000

Examples

Standard Initialization


// Import the loader initializer
import { initLoader } from 'cli-loaders';

// Start the loader
initLoader('percent', 50);

Custom Initializationv2.0



// Import the custom loader initializer
import { initCustomLoader } from 'cli-loaders';

initCustomLoader(YOUR_CUSTOM_SPEED, YOUR_CUSTOM_KEYFRAMES);
// Example: initCustomLoader(100, ["000","001","002","003","004","005","006","007","008","009","010","011","012","013","014","015","016","017","018","019","020","021","022","023","024","025","026","027","028","029","030","031","032","033","034","035","036","037","038","039","040","041","042","043","044","045","046","047","048","049","050","051","052","053","054","055","056","057","058","059","060","061","062","063","064","065","066","067","068","069","070","071","072","073","074","075","076","077","078","079","080","081","082","083","084","085","086","087","088","089","090","091","092","093","094","095","096","097","098","099","100",]);

Zero Dependency Initialization



const initLoader = () => {
// Set keyframes
const keyframes = ["000","001","002","003","004","005","006","007","008","009","010","011","012","013","014","015","016","017","018","019","020","021","022","023","024","025","026","027","028","029","030","031","032","033","034","035","036","037","038","039","040","041","042","043","044","045","046","047","048","049","050","051","052","053","054","055","056","057","058","059","060","061","062","063","064","065","066","067","068","069","070","071","072","073","074","075","076","077","078","079","080","081","082","083","084","085","086","087","088","089","090","091","092","093","094","095","096","097","098","099","100"];
// Set speed in milliseconds
const speed = 50;
// Start at the first keyframe
let index = 0;
// Set interval to change keyframes
setInterval(() => {
process.stdout.write("\r" + keyframes[index]);
index = (index + 1) % keyframes.length;
}, speed);
};
// Start the loader
initLoader();

Usage in Next.js

components/LoaderComponent.tsx


"use client";

import React, { useEffect, useState } from 'react';

type LoaderComponentProps = {
speed: number;
keyframes: string[];
};

export const LoaderComponent: React.FC<LoaderComponentProps> = ({ speed, keyframes }) => {
const [currentFrame, setCurrentFrame] = useState(keyframes[0]);

useEffect(() => {
let index = 0;

const interval = setInterval(() => {
setCurrentFrame(keyframes[index]);
index = (index + 1) % keyframes.length;
}, speed);

return () => clearInterval(interval);
}, [keyframes, speed]);

return (
<div className='relative text-4xl font-mono flex flex-col justify-center items-center overflow-hidden'>{currentFrame}</div>
)
}

page.tsx



import { LoaderComponent } from '@/components/LoaderComponent';

export default function Page() {
const keyframes = ["000","001","002","003","004","005","006","007","008","009","010","011","012","013","014","015","016","017","018","019","020","021","022","023","024","025","026","027","028","029","030","031","032","033","034","035","036","037","038","039","040","041","042","043","044","045","046","047","048","049","050","051","052","053","054","055","056","057","058","059","060","061","062","063","064","065","066","067","068","069","070","071","072","073","074","075","076","077","078","079","080","081","082","083","084","085","086","087","088","089","090","091","092","093","094","095","096","097","098","099","100"];
const speed = 50;

return <LoaderComponent keyframes={keyframes} speed={speed} />

}

Share Loader