These are a series of highly detailed & crafted animations for Weather Icons to use in any smarthome project or any web application using React.
I've designed these to work with the Home Assistant & my other project ha-component-kit but they can be used in any React project.
Each state will render a different SVG, to swap out the svg it's as simple as changing the attribute on the SVG.
Highly configurable animations & styles - very structured so it's easy to make changes if need be.
The SVG construction is based of SVG symbols so it's really easy to compose another "state" if you want to add another one.
As you can probably tell, A lot of time has gone into this! I'd really appreciate a small donation as it will help me validate that my time is well spent and will guarantee future additional changes :) Buy me a coffee!
Simply install the package, and then import into your react project.
npm install weather-icons-animated -D
Application usage:
import { WeatherSvg } from "weather-icons-animated";
export function App() {
return <WeatherSvg state="sunny" />
}
By default, the svg's will scale to fit the parent div, however you can specify a width/height as a prop like so:
<WeatherSvg state="sunny" width={100} height={100} />
Or you can re-style with emotion:
import { WeatherSvg as _WeatherSvg } from "./WeatherSvg";
import styled from "@emotion/styled";
const WeatherSvg = styled(_WeatherSvg)`
width: 200px;
height: 200px;
`;
export function App() {
return <WeatherSvg state="sunny" />;
}
Along with supporting every other svg property, you can also specify a night
prop, which in some states will change the sun
to a moon
.
import { WeatherSvg } from "./WeatherSvg";
export function App() {
return <WeatherSvg state="partly-cloudy" night />;
}
To run locally, simply run npm install && npm run dev
to spin up the local server with the fully demo.
By default the svg will render at a 200x200 viewport, but you can pass in a width/height
prop to change this.
The SVG's are currently styled with emotion, which makes it very easy to make further changes to the SVG's.
There's full typescript intellisense on the available state's the SVG animations support, here's a simple example of using the component:
import { WeatherSvg } from "weather-icons-animated";
function App() {
return (
<WeatherSvg state="sunny" />
)
}
export default App
It supports the following weather "states":
- sunny
- clear-night
- partlycloudy
- cloudy
- fog
- hail
- rainy
- snowy
- snowy-rainy
- pouring
- lightning
- lightning-rainy
- windy
- windy-variant