diff --git a/packages/wow-ui/panda.config.ts b/packages/wow-ui/panda.config.ts index 9d15fe01..a5316864 100644 --- a/packages/wow-ui/panda.config.ts +++ b/packages/wow-ui/panda.config.ts @@ -32,7 +32,4 @@ export default defineConfig({ }, }, outdir: "styled-system", - conditions: { - hover: "&[aria-pressed=false]:not(:disabled):hover", - }, }); diff --git a/packages/wow-ui/src/components/Button/Button.stories.tsx b/packages/wow-ui/src/components/Button/Button.stories.tsx index face7ea1..64928847 100644 --- a/packages/wow-ui/src/components/Button/Button.stories.tsx +++ b/packages/wow-ui/src/components/Button/Button.stories.tsx @@ -65,46 +65,6 @@ const meta = { options: ["solid", "outline"], }, }, - onKeyDown: { - description: - "버튼에 포커스 된 상태에서 엔터 키 또는 스페이스 바를 누르고 있는 동안 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onKeyUp: { - description: - "버튼에 포커스 된 상태에서 엔터 키 또는 스페이스 바를 뗐을 때 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onMouseLeave: { - description: - "버튼의 영역에서 마우스가 벗어났을 때 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onPointerDown: { - description: - "버튼에 포커스 된 상태에서 마우스 또는 터치로 누르고 있는 동안 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onPointerUp: { - description: - "버튼에 포커스 된 상태에서 마우스 또는 터치를 뗐을 때 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, style: { description: "버튼의 커스텀 스타일을 나타냅니다.", table: { diff --git a/packages/wow-ui/src/components/Button/index.tsx b/packages/wow-ui/src/components/Button/index.tsx index 93138017..d6e32a30 100644 --- a/packages/wow-ui/src/components/Button/index.tsx +++ b/packages/wow-ui/src/components/Button/index.tsx @@ -5,7 +5,6 @@ import { styled } from "@styled-system/jsx"; import type { CSSProperties, ElementType, ReactNode } from "react"; import { forwardRef } from "react"; -import useButton from "@/hooks/useButton"; import type { PolymorphicComponentProps, PolymorphicComponentPropsWithRef, @@ -21,11 +20,6 @@ import type { * @param {"lg" | "sm"} [size] - 버튼의 크기. * @param {"solid" | "outline" | "sub"} [variant] - 버튼의 종류. * @param {ReactNode} [icon] - 버튼의 좌측에 들어갈 아이콘. - * @param {() => void} [onKeyUp] - 버튼에 포커스 된 상태에서 엔터 키 또는 스페이스 바를 뗐을 때 동작할 이벤트. - * @param {() => void} [onKeyDown] - 버튼에 포커스 된 상태에서 엔터 키 또는 스페이스 바를 누르고 있는 동안 동작할 이벤트. - * @param {() => void} [onMouseLeave] - 버튼의 영역에서 마우스가 벗어났을 때 동작할 이벤트. - * @param {() => void} [onPointerDown] - 버튼에 포커스 된 상태에서 마우스 또는 터치로 누르고 있는 동안 동작할 이벤트. - * @param {() => void} [onPointerUp] - 버튼에 포커스 된 상태에서 마우스 또는 터치를 뗐을 때 동작할 이벤트. * @param {CSSProperties} [style] - 버튼의 커스텀 스타일. * @param {string} [className] - 버튼에 전달하는 커스텀 클래스. * @param {ComponentPropsWithoutRef} rest 렌더링된 요소 또는 컴포넌트에 전달할 추가 props. @@ -67,48 +61,21 @@ const Button: ButtonComponent & { displayName?: string } = forwardRef( size = "lg", variant = "solid", icon, - onKeyUp, - onKeyDown, - onMouseLeave, - onPointerDown, - onPointerUp, ...rest }: ButtonProps, ref?: PolymorphicRef ) => { const Component = asProp || "button"; - const { - pressed, - handleKeyDown, - handleKeyUp, - handlePointerDown, - handlePointerUp, - handleMouseLeave, - } = useButton({ - disabled, - onMouseLeave, - onKeyUp, - onKeyDown, - onPointerDown, - onPointerUp, - }); - return ( @@ -157,7 +124,7 @@ const ButtonStyle = cva({ _hover: { shadow: "blue", }, - _pressed: { + _active: { background: "bluePressed", }, }, @@ -178,7 +145,7 @@ const ButtonStyle = cva({ borderColor: "blueHover", color: "blueHover", }, - _pressed: { + _active: { borderColor: "bluePressed", background: "blueBackgroundPressed", color: "bluePressed", @@ -195,7 +162,7 @@ const ButtonStyle = cva({ _hover: { shadow: "blue", }, - _pressed: { + _active: { background: "blueDisabled", }, }, @@ -213,7 +180,7 @@ const ButtonStyle = cva({ borderColor: "textBlack", color: "textBlack", }, - _pressed: { + _active: { borderColor: "outline", background: "monoBackgroundPressed", color: "textBlack", diff --git a/packages/wow-ui/src/components/TextButton/TextButton.stories.tsx b/packages/wow-ui/src/components/TextButton/TextButton.stories.tsx index 9e38c491..71ccfc18 100644 --- a/packages/wow-ui/src/components/TextButton/TextButton.stories.tsx +++ b/packages/wow-ui/src/components/TextButton/TextButton.stories.tsx @@ -47,46 +47,6 @@ const meta = { options: ["lg", "sm"], }, }, - onKeyDown: { - description: - "텍스트 버튼에 포커스 된 상태에서 엔터 키 또는 스페이스 바를 누르고 있는 동안 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onKeyUp: { - description: - "텍스트 버튼에 포커스 된 상태에서 엔터 키 또는 스페이스 바를 뗐을 때 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onMouseLeave: { - description: - "텍스트 버튼의 영역에서 마우스가 벗어났을 때 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onPointerDown: { - description: - "텍스트 버튼에 포커스 된 상태에서 마우스 또는 터치로 누르고 있는 동안 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, - onPointerUp: { - description: - "텍스트 버튼에 포커스 된 상태에서 마우스 또는 터치를 뗐을 때 동작할 이벤트를 나타냅니다.", - table: { - type: { summary: "() => void" }, - }, - control: false, - }, style: { description: "텍스트 버튼의 커스텀 스타일을 나타냅니다.", table: { diff --git a/packages/wow-ui/src/components/TextButton/index.tsx b/packages/wow-ui/src/components/TextButton/index.tsx index a2db2421..b5b43ab0 100644 --- a/packages/wow-ui/src/components/TextButton/index.tsx +++ b/packages/wow-ui/src/components/TextButton/index.tsx @@ -5,7 +5,6 @@ import { styled } from "@styled-system/jsx"; import type { CSSProperties, ElementType, ReactNode } from "react"; import { forwardRef } from "react"; -import useButton from "@/hooks/useButton"; import type { PolymorphicComponentProps, PolymorphicComponentPropsWithRef, @@ -18,10 +17,6 @@ import type { * @param {string} text - 텍스트 버튼의 라벨. * @param {boolean} [disabled] - 텍스트 버튼이 비활성화되어 있는지 여부. * @param {"lg" | "sm"} [size] - 텍스트 버튼의 크기. - * @param {() => void} [onKeyDown] - 텍스트 버튼에 포커스 된 상태에서 엔터 키 또는 스페이스 바를 누르고 있는 동안 동작할 이벤트. - * @param {() => void} [onMouseLeave] - 텍스트 버튼의 영역에서 마우스가 벗어났을 때 동작할 이벤트. - * @param {() => void} [onPointerDown] - 텍스트 버튼에 포커스 된 상태에서 마우스 또는 터치로 누르고 있는 동안 동작할 이벤트. - * @param {() => void} [onPointerUp] - 텍스트 버튼에 포커스 된 상태에서 마우스 또는 터치를 뗐을 때 동작할 이벤트. * @param {CSSProperties} [style] - 텍스트 버튼의 커스텀 스타일. * @param {string} [className] - 텍스트 버튼에 전달하는 커스텀 클래스. * @param {ComponentPropsWithoutRef} rest 렌더링된 요소 또는 컴포넌트에 전달할 추가 props. @@ -32,11 +27,6 @@ export interface CustomButtonProps { text: string; disabled?: boolean; size?: "lg" | "sm"; - onKeyUp?: () => void; - onKeyDown?: () => void; - onMouseLeave?: () => void; - onPointerDown?: () => void; - onPointerUp?: () => void; style?: CSSProperties; className?: string; } @@ -52,50 +42,17 @@ type ButtonComponent = ( const TextButton: ButtonComponent & { displayName?: string } = forwardRef( ( - { - asProp, - text, - disabled = false, - size = "lg", - onKeyUp, - onKeyDown, - onMouseLeave, - onPointerDown, - onPointerUp, - ...rest - }: ButtonProps, + { asProp, text, disabled = false, size = "lg", ...rest }: ButtonProps, ref?: PolymorphicRef ) => { const Component = asProp || "button"; - const { - pressed, - handleKeyDown, - handleKeyUp, - handlePointerDown, - handlePointerUp, - handleMouseLeave, - } = useButton({ - disabled, - onKeyUp, - onKeyDown, - onMouseLeave, - onPointerDown, - onPointerUp, - }); - return ( void; - onKeyUp?: () => void; - onKeyDown?: () => void; - onPointerDown?: () => void; - onPointerUp?: () => void; -} - -const useButton = ({ - disabled = false, - onMouseLeave, - onKeyUp, - onKeyDown, - onPointerDown, - onPointerUp, -}: UseButtonProps) => { - const [pressed, setPressed] = useState(false); - - const handleMouseLeave = useCallback(() => { - if (!disabled) setPressed(false); - onMouseLeave?.(); - }, [setPressed, disabled, onMouseLeave]); - - const handlePointerDown = useCallback(() => { - if (!disabled) setPressed(true); - onPointerDown?.(); - }, [setPressed, disabled, onPointerDown]); - - const handlePointerUp = useCallback(() => { - if (!disabled) setPressed(false); - onPointerUp?.(); - }, [setPressed, disabled, onPointerUp]); - - const handleKeyDown = useCallback( - (event: KeyboardEvent) => { - if (event.key === " " || event.key === "Enter") { - setPressed(true); - onKeyDown?.(); - } - }, - [setPressed, onKeyDown] - ); - - const handleKeyUp = useCallback( - (event: KeyboardEvent) => { - if (event.key === " " || event.key === "Enter") { - setPressed(false); - onKeyUp?.(); - } - }, - [setPressed, onKeyUp] - ); - - return { - pressed, - handleKeyDown, - handleKeyUp, - handleMouseLeave, - handlePointerDown, - handlePointerUp, - }; -}; - -export default useButton;