# Action Button URL: /lynx/components/action-button Source: https://github.com/daangn/seed-design/blob/dev/docs/content/lynx/components/action-button.mdx 명확한 액션을 쉽게 수행할 수 있도록 돕는 기본 인터랙션 컴포넌트입니다. Lynx Engine 최소 버전: 3.6 사용 가능 버전: @seed-design/lynx-react@0.1.0, @seed-design/lynx-css@0.1.0 ## Installation - npm: npm install @seed-design/lynx-react @seed-design/lynx-css - pnpm: pnpm add @seed-design/lynx-react @seed-design/lynx-css - yarn: yarn add @seed-design/lynx-react @seed-design/lynx-css - bun: bun add @seed-design/lynx-react @seed-design/lynx-css Lynx `ActionButton`은 별도 `ui:action-button` snippet 없이 `@seed-design/lynx-react` 패키지에서 직접 제공합니다. ## Usage ## Preview ```tsx import "./styles"; import { root, useState } from "@lynx-js/react"; import { ActionButton, useSeedClassName, VStack } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); const [count, setCount] = useState(0); function handleTap() { "background only"; setCount((value) => value + 1); } return ( 버튼을 탭하면 상태가 바뀝니다. {count === 0 ? "탭해 보세요" : `${count}번 탭했어요`} {count === 0 ? "먼저 위 버튼을 탭하세요" : "활성화됨"} ); } root.render(); ``` ## Props ## Examples ### Brand Solid ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 ); } root.render(); ``` ### Neutral Solid ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 ); } root.render(); ``` ### Neutral Weak ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 ); } root.render(); ``` ### Critical Solid ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 ); } root.render(); ``` ### Brand Outline ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 ); } root.render(); ``` ### Neutral Outline ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 ); } root.render(); ``` ### Ghost Lynx에서는 기본 Ghost 스타일을 지원합니다. 웹의 `color`, `fontWeight` 사용자 지정은 지원하지 않습니다. ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( Ghost ); } root.render(); ``` ### Icon Only ```tsx import "./styles"; import IconPlusFill from "@karrotmarket/lynx-monochrome-icon/IconPlusFill"; import { root } from "@lynx-js/react"; import { ActionButton, Icon, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( } /> ); } root.render(); ``` 문서 미리보기에서는 아이콘 색상이 적용되지 않아요. 아이콘의 실제 색상은 QR 코드 탭에서 Lynx Explorer를 실행해 확인할 수 있어요. ### Prefix Icon ```tsx import "./styles"; import IconPlusFill from "@karrotmarket/lynx-monochrome-icon/IconPlusFill"; import { root } from "@lynx-js/react"; import { ActionButton, PrefixIcon, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( } /> 라벨 ); } root.render(); ``` 문서 미리보기에서는 아이콘 색상이 적용되지 않아요. 아이콘의 실제 색상은 QR 코드 탭에서 Lynx Explorer를 실행해 확인할 수 있어요. ### Suffix Icon ```tsx import "./styles"; import IconChevronRightFill from "@karrotmarket/lynx-monochrome-icon/IconChevronRightFill"; import { root } from "@lynx-js/react"; import { ActionButton, SuffixIcon, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 } /> ); } root.render(); ``` 문서 미리보기에서는 아이콘 색상이 적용되지 않아요. 아이콘의 실제 색상은 QR 코드 탭에서 Lynx Explorer를 실행해 확인할 수 있어요. ### Disabled ```tsx import "./styles"; import { root } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); return ( 라벨 ); } root.render(); ``` ### Loading ```tsx import "./styles"; import { root, useState } from "@lynx-js/react"; import { ActionButton, useSeedClassName } from "@seed-design/lynx-react"; function Root() { const seedClassName = useSeedClassName({ colorMode: "system" }); const [loading, setLoading] = useState(false); function handleTap() { "background only"; setLoading(true); setTimeout(() => setLoading(false), 2000); } return ( 시간이 걸리는 액션 ); } root.render(); ``` ## 웹 버전과의 차이 Lynx `ActionButton`은 React `ActionButton`과 다음과 같은 차이가 있습니다. - **이벤트 핸들링**: `onClick` 대신 `bindtap`을 사용합니다. - **렌더링 요소**: HTML `