@gfazioli/mantine-text-animate
Version:
The TextAnimate component allows you to animate text with various effects.
191 lines (132 loc) ⢠4.74 kB
Markdown
https://github.com/user-attachments/assets/8bbeb7ef-9e1f-46ab-a105-cdd1e0040780
---
<div align="center">
[](https://www.npmjs.com/package/@gfazioli/mantine-text-animate)
[](https://www.npmjs.com/package/@gfazioli/mantine-text-animate)
[](https://www.npmjs.com/package/@gfazioli/mantine-text-animate)

</div>
This component is created on top of the [Mantine](https://mantine.dev/) library.
[](https://mantine.dev/)
The `TextAnimate` component allows you to animate text with various effects.
Additionally, it provides other sub components such as `TextAnimate.TextTicker`, `TextAnimate.Typewriter`, `TextAnimate.NumberTicker`, and `TextAnimate.Spinner`.
You can also use three useful hooks: `useTextTicker`, `useTypewriter`, and `useNumberTicker`.
[](https://www.youtube.com/playlist?list=PL85tTROKkZrWyqCcmNCdWajpx05-cTal4)
[](https://gfazioli.github.io/mantine-text-animate/)
[](https://mantine-extensions.vercel.app/)
š You can find more components on the [Mantine Extensions Hub](https://mantine-extensions.vercel.app/) library.
```sh
npm install @gfazioli/mantine-text-animate
```
or
```sh
yarn add @gfazioli/mantine-text-animate
```
After installation import package styles at the root of your application:
```tsx
import '@gfazioli/mantine-text-animate/styles.css';
```
```tsx
import { TextAnimate } from '@gfazioli/mantine-text-animate';
function Demo() {
return (
<TextAnimate animate="in" animation="slideUp" by="character">
Mantine TextAnimate component
</TextAnimate>
);
}
```
https://github.com/user-attachments/assets/a665af0a-7845-4946-99e1-1c5802e16d46
```tsx
import { TextAnimate } from '@gfazioli/mantine-text-animate';
function Demo() {
return (
<TextAnimate.Typewriter value="Hello, World! Mantine Typewriter component" animate />
);
}
```
```tsx
import { useTypewriter } from '@gfazioli/mantine-text-animate'
function Demo() {
const { text, start, stop, reset, isTyping } = useTypewriter({
value: ['Hello', 'From', 'Mantine useTypewriter() hook'],
});
return (
<div>{text}</div>
);
}
```
https://github.com/user-attachments/assets/53266b12-86a6-4b4d-8da4-ec9caa22aef4
```tsx
import { TextAnimate } from '@gfazioli/mantine-text-animate';
function Demo() {
return (
<TextAnimate.Spinner>ā
SPINNING TEXT EXAMPLE ā
</TextAnimate.Spinner>
);
}
```
https://github.com/user-attachments/assets/31e08c53-0d59-42a5-bc16-98baedda91cd
```tsx
import { TextAnimate } from '@gfazioli/mantine-text-animate';
function Demo() {
return (
<TextAnimate.NumberTicker value={100} animate />
);
}
```
```tsx
import { useNumberTicker } from '@gfazioli/mantine-text-animate'
function Demo() {
const { text, isAnimating, start, stop, reset, displayValue } = useNumberTicker({
value: 64,
startValue: 0,
delay: 0,
decimalPlaces: 0,
speed: 0.2,
easing: 'ease-out',
animate: true,
});
return (
<div>{text}</div>
);
}
```
https://github.com/user-attachments/assets/eaa647a4-2523-4d33-8aec-b303c447ffbb
```tsx
import { TextAnimate } from '@gfazioli/mantine-text-animate';
function Demo() {
return (
<TextAnimate.TextTicker value="Hello, World! Mantine TextTicker component" animate />
);
}
```
```tsx
import { useTextTicker } from '@gfazioli/mantine-text-animate'
function Demo() {
const { text, isAnimating, start, stop, reset } = useTextTicker({
value: 'Mantine useTextTicker',
delay: 0,
speed: 0.2,
easing: 'ease-out',
animate: true,
});
return (
<div>{text}</div>
);
}
```