# Seed Design Breeze
> file: components/animate-number.mdx
---
# Seed Design Breeze Documentation
Source: https://seed-design.io/breeze/llms-full.txt
---
file: components/animate-number.mdx
# Animate Number
숫자를 부드럽게 애니메이션하는 유틸리티 컴포넌트
```tsx
import AnimateNumber from "seed-design/breeze/animate-number/animate-number";
import { ActionButton } from "seed-design/ui/action-button";
import { HStack } from "@seed-design/react";
import { useState } from "react";
export default function AnimateNumberPreview() {
const [value, setValue] = useState(1);
return (
setValue(value - 1)}>
-1
setValue(value + 1)}>
+1
);
}
```
## Installation
Dependency:
npm
pnpm
yarn
bun
```bash
npm install motion
```
```bash
pnpm add motion
```
```bash
yarn add motion
```
```bash
bun add motion
```
Snippet:
npm
pnpm
yarn
bun
```bash
npx @seed-design/cli@latest add breeze:animate-number
```
```bash
pnpm dlx @seed-design/cli@latest add breeze:animate-number
```
```bash
yarn dlx @seed-design/cli@latest add breeze:animate-number
```
```bash
bun x @seed-design/cli@latest add breeze:animate-number
```
## Configuration
animate-number 컴포넌트는 motion의 `m.` 컴포넌트를 사용합니다. lazy loading을 위해 프로젝트에 MotionProvider를 설정해야 합니다.
자세한 내용은 [Motion Lazy Motion 문서](https://motion.dev/docs/react-lazy-motion)를 참고하세요.
```tsx title="MotionProvider.tsx"
"use client";
import { LazyMotion } from "motion/react";
import type { ReactNode } from "react";
const loadFeatures = () => import("motion/react").then((res) => res.domAnimation);
export function MotionProvider({ children }: { children: ReactNode }) {
return {children};
}
```
```tsx title="index.tsx"
import { createRoot } from 'react-dom/client'
import App from './App.tsx'
import { MotionProvider } from './MotionProvider.tsx'
createRoot(document.getElementById('root')!).render(
)
```
## Props
{"표시할 숫자 값"}
>
},
fontSize: {
"type": "string | number | undefined",
"default": "48",
"required": false,
description: <>{"폰트 크기"}
>
},
fontWeight: {
"type": "Property.FontWeight | undefined",
"default": "\"bold\"",
"required": false,
description: <>{"폰트 굵기"}
>
},
color: {
"type": "string | undefined",
"default": "\"currentColor\"",
"required": false,
description: <>{"텍스트 색상"}
>
},
showComma: {
"type": "boolean | undefined",
"default": "false",
"required": false,
description: <>{"천 단위 구분 쉼표 표시"}
>
},
showGradient: {
"type": "boolean | undefined",
"default": "false",
"required": false,
description: <>{"위아래 그라디언트 마스크 표시"}
>
},
gradientHeight: {
"type": "number | undefined",
"default": "20",
"required": false,
description: <>{"그라디언트 마스크 높이 (px)"}
>
},
containerStyle: {
"type": "React.CSSProperties | undefined",
"default": undefined,
"required": false,
description: <>{"컨테이너 스타일"}
>
},
className: {
"type": "string | undefined",
"default": undefined,
"required": false,
description: <>{"추가 클래스명"}
>
}
}}
/>
## Examples
### Comma
```tsx
import AnimateNumber from "seed-design/breeze/animate-number/animate-number";
import { ActionButton } from "seed-design/ui/action-button";
import { useState } from "react";
export default function AnimateNumberComma() {
const [value, setValue] = useState(1234);
return (
setValue(Math.floor(Math.random() * 99999) + 1)}
>
랜덤 숫자 (1-99999)
);
}
```
### Gradient
```tsx
import AnimateNumber from "seed-design/breeze/animate-number/animate-number";
import { ActionButton } from "seed-design/ui/action-button";
import { useState } from "react";
export default function AnimateNumberGradient() {
const [value, setValue] = useState(999);
return (
setValue(Math.floor(Math.random() * 99999) + 1)}
>
랜덤 숫자 (1-99999)
);
}
```
### Custom Style
```tsx
import AnimateNumber from "seed-design/breeze/animate-number/animate-number";
import { ActionButton } from "seed-design/ui/action-button";
import { HStack } from "@seed-design/react";
import { useState } from "react";
export default function AnimateNumberCustomStyle() {
const [value, setValue] = useState(42);
return (
setValue(Math.floor(Math.random() * 99999) + 1)}
>
랜덤 숫자
);
}
```