Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
react-spinners
Advanced tools
The react-spinners npm package provides a collection of loading spinner components for React applications. These spinners are customizable and can be used to indicate loading states in your application.
ClipLoader
The ClipLoader is a simple circular spinner. You can customize its color, loading state, and size.
import { ClipLoader } from 'react-spinners';
function App() {
return (
<div className="App">
<ClipLoader color={"#123abc"} loading={true} size={150} />
</div>
);
}
BeatLoader
The BeatLoader consists of multiple dots that bounce. You can customize its color, loading state, size, and margin between dots.
import { BeatLoader } from 'react-spinners';
function App() {
return (
<div className="App">
<BeatLoader color={"#123abc"} loading={true} size={15} margin={2} />
</div>
);
}
BarLoader
The BarLoader is a horizontal bar that animates to indicate loading. You can customize its color, loading state, width, and height.
import { BarLoader } from 'react-spinners';
function App() {
return (
<div className="App">
<BarLoader color={"#123abc"} loading={true} width={100} height={4} />
</div>
);
}
react-loader-spinner provides a variety of SVG-based loading indicators for React applications. It offers more types of spinners compared to react-spinners and allows for more detailed customization of each spinner.
react-loading is another package that offers a collection of loading indicators for React. It is simpler and has fewer customization options compared to react-spinners, but it is lightweight and easy to use.
react-content-loader allows you to create SVG loading placeholders that mimic the content being loaded. It is more focused on skeleton screens rather than traditional spinners, providing a different approach to indicating loading states.
A collection of loading spinners with React.js based on Halogen.
This package is bootstraped using react-npm-boilerplate
With Yarn:
yarn add react-spinners
With npm:
npm install --save react-spinners
Each loader has their own default properties. You can overwrite the defaults by passing props into the loaders.
Each loader accepts a loading
prop as a boolean. The loader will render null
if loading
is false
.
import { useState, CSSProperties } from "react";
import ClipLoader from "react-spinners/ClipLoader";
const override: CSSProperties = {
display: "block",
margin: "0 auto",
borderColor: "red",
};
function App() {
let [loading, setLoading] = useState(true);
let [color, setColor] = useState("#ffffff");
return (
<div className="sweet-loading">
<button onClick={() => setLoading(!loading)}>Toggle Loader</button>
<input value={color} onChange={(input) => setColor(input.target.value)} placeholder="Color of the loader" />
<ClipLoader
color={color}
loading={loading}
cssOverride={override}
size={150}
aria-label="Loading Spinner"
data-testid="loader"
/>
</div>
);
}
export default App;
import React from "react";
import ClipLoader from "react-spinners/ClipLoader";
const override: React.CSSProperties = {
display: "block",
margin: "0 auto",
borderColor: "red",
};
class AwesomeComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
loading: true,
};
}
render() {
return (
<div className="sweet-loading">
<ClipLoader
cssOverride={override}
size={150}
color={"#123abc"}
loading={this.state.loading}
speedMultiplier={1.5}
aria-label="Loading Spinner"
data-testid="loader"
/>
</div>
);
}
}
Common default props for all loaders:
loading: true;
color: "#000000";
cssOverride: {}
speedMultiplier: 1;
All valid HTML props such as aria-*
and data-*
props are fully supported.
color
propcolor
prop accepts a color hash in the format of #XXXXXX
or #XXX
. It also accepts basic colors listed below:
maroon, red, orange, yellow, olive, green, purple, white, fuchsia, lime, teal, aqua, blue, navy, black, gray, silver
cssOverride
propThe cssOverride
prop is an object of camelCase styles used to create inline styles on the loaders. Any html css property is valid here.
size
, height
, width
, and radius
propsThe input to these props can be number or string.
px
.px
.The table below has the default values for each loader.
Loader | size | height | width | radius | margin |
---|---|---|---|---|---|
BarLoader | 4 | 100 | |||
BeatLoader | 15 | 2 | |||
BounceLoader | 60 | ||||
CircleLoader | 50 | ||||
ClimbingBoxLoader | 15 | ||||
ClipLoader | 35 | ||||
ClockLoader | 50 | ||||
DotLoader | 60 | 2 | |||
FadeLoader | 15 | 5 | 2 | 2 | |
GridLoader | 15 | ||||
HashLoader | 50 | 2 | |||
MoonLoader | 60 | 2 | |||
PacmanLoader | 25 | 2 | |||
PropagateLoader | 15 | ||||
PuffLoader | 60 | ||||
PulseLoader | 15 | 2 | |||
RingLoader | 60 | 2 | |||
RiseLoader | 15 | 2 | |||
RotateLoader | 15 | 2 | |||
ScaleLoader | 35 | 4 | 2 | 2 | |
SyncLoader | 15 | 2 |
FAQs
A collection of react loading spinners
The npm package react-spinners receives a total of 346,265 weekly downloads. As such, react-spinners popularity was classified as popular.
We found that react-spinners demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.