react-css-spinners
                                
                                
                                
                                    react-css-spinners copied to clipboard
                            
                            
                            
                        CSS-only spinners for React
react-css-spinners

CSS-only spinners for React from loading.io
- :scissors: Zero dependencies
 - :collision: Written in TypeScript
 - :rocket: Tree-shaking baked in
 - :nail_care: No extra CSS imports
 
Demo
Browse components and explore their props with Storybook.
Quick Start
Install the package with npm
npm i react-css-spinners
or yarn - whichever you prefer
yarn add react-css-spinners
Import any spinner and customize it to your liking
import { Ellipsis } from 'react-css-spinners'
const Loader = props => (
  <>
    {/* Use defaults (color #fff, size 64px) */}
    <Ellipsis />
    {/* Pass props like color and size (more in demo) */}
    <Ellipsis color="#ffdf00" size={40} />
    {/* Pass a CSS class to get full control over styling */}
    <Ellipsis className="my-ellipsis" />
  </>
)
Complete info about props can be found in the demo.
Prerequisites
This library imports its styles through JavaScript. To make it work, you may need to tweak your config.
Create-React-App
No changes are required, as CRA already handles CSS. Feel free to skip this! :tada:
Webpack
First, you'd need css-loader to resolve CSS imports
npm i -D css-loader
Next, to render your styles, you can either
- extract CSS into an external file (e.g. 
style.css) and load it using<link>(withmini-css-extract-plugin) or - inject CSS into 
<style>tag(s) in<head>section at runtime (i.e. when JS is executing, withstyle-loader) 
Generally, you'd want to generate your CSS only once at build time, so we'll go with the former
npm i -D mini-css-extract-plugin
Lastly, add the following to your webpack.config.js
module: {
  rules: [
    {
      test: /\.css$/,
      use: [MiniCssExtractPlugin.loader, 'css-loader']
    }
  ]
},
plugins: [new MiniCssExtractPlugin()]
For more advanced options (caching, minification, etc.), see mini-css-extract-plugin docs.
Webpack with SSR
As with the config above, you'd need css-loader. Unfortunately, you can't use either mini-css-extract-plugin or style-loader with server-side rendering. One workaround would be to ignore CSS in server config and instead extract it out on the front-end. In your webpack.config.js
module.exports = [
  {
    module: {
      rules: [
        {
          test: /\.css$/,
          use: [MiniCssExtractPlugin.loader, 'css-loader']
        }
      ]
    },
    plugins: [new MiniCssExtractPlugin()]
  },
  {
    module: {
      target: 'node',
      rules: [
        {
          test: /\.css$/,
          loader: 'css-loader',
          options: {
            onlyLocals: true
          }
        }
      ]
    }
  }
]
There are a few other caveats, so it's best to check with a working SSR example. An alternative to this would be to use isomorphic-style-loader. There is also babel-plugin-css-modules-transform that can strip away require statements on CSS files (you'd need to include react-css-spinners under babel-loader).
Rollup
If you use Rollup, consider rollup-plugin-postcss. It exposes an extract option to extract your styles into a .css file. Alternatively, you could use rollup-plugin-scss or rollup-plugin-css-only which would do the same thing.
Parcel
Parcel comes with built-in support for .css files and @imports, so this library should work out of the box.
CDN
Be advised that it's recommended to use NPM for best performance and minimal CSS & JS footprint.
For development and debugging, use an unminified version
<link
  rel="stylesheet" crossorigin="anonymous"
  href="https://unpkg.com/react-css-spinners@latest/dist/style.css"
/>
<!-- Include react, react-dom, and prop-types development <script> tags above -->
<script crossorigin src="https://unpkg.com/react-css-spinners@latest/dist/bundle.js"></script>
In production, use a minified and optimized version
<link
  rel="stylesheet" crossorigin="anonymous"
  href="https://unpkg.com/react-css-spinners@latest/dist/style.min.css"
/>
<!-- Include react and react-dom production <script> tags above -->
<script crossorigin src="https://unpkg.com/react-css-spinners@latest/dist/bundle.min.js"></script>
Browser Support
To allow for customization, the library uses CSS variables which are supported on all major browsers except IE 11.
Examples
You will find further demos under /examples folder
- UMD via CDN
 - Create-React-App
 - Server-Side Rendering
 
Docs
Read about the rationale for the styling solution and build toolchain.
Copyright
CSS spinners from loading.io are used under CC0 license.