Collection of React components with fancy styles and effects
Provides interactive components utilizing animations and visual effects
@fewings/fancy-react
is a React component library with enhanced animations and interactions. Based on the Motion library, it provides smooth and visually interesting UI elements.
Currently available components:
-
AnimateNumber
: Applies animations when numbers change for smooth transitions.
# npm
npm install @fewings/fancy-react motion
# yarn
yarn add @fewings/fancy-react motion
# pnpm
pnpm add @fewings/fancy-react motion
⚠️ This package depends on themotion
library.
The AnimateNumber component applies a smooth animation effect when numeric values change. It enhances user experience when numbers increase or decrease.
import { AnimateNumber } from "@fewings/fancy-react/AnimateNumber";
function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<AnimateNumber value={count} />
<button onClick={() => setCount(count + 1)}>Increase</button>
<button onClick={() => setCount(count - 1)}>Decrease</button>
</div>
);
}
<AnimateNumber
value={count}
countDur={0.8} // Number counting animation duration (seconds)
sizeDur={0.5} // Width change animation duration (seconds)
/>
You can display numbers in your desired format:
<AnimateNumber value={price} format={(value) => `$${value.toLocaleString()}`} />
You can style it like a regular div element:
<AnimateNumber
value={score}
style={{
fontSize: "2rem",
fontWeight: "bold",
color: "#2563eb",
}}
/>
Property | Type | Default | Description |
---|---|---|---|
value |
number |
Required | Numeric value to display |
countDur |
number |
0.5 |
Number counting animation duration (sec) |
sizeDur |
number |
0.3 |
Width change animation duration (sec) |
format |
(value: number) => string |
(v) => \ ${v}`` |
Function to format the number |
Additionally, the component supports all standard properties of a div
element.
The AnimateNumber component works internally as follows:
- Detects transitions when a number changes from a previous value to a new one.
- Animates each digit of the number individually.
- Applies appropriate animation effects based on the direction when numbers increase or decrease.
- Applies smooth sizing animations when width changes are needed.
Contributions are always welcome! If you have suggestions, bug reports, or feature requests, please open an issue or submit a pull request to the GitHub repository.