diff --git a/apps/wow-docs/app/page.tsx b/apps/wow-docs/app/page.tsx
index d45e09b4..282a6da3 100644
--- a/apps/wow-docs/app/page.tsx
+++ b/apps/wow-docs/app/page.tsx
@@ -22,10 +22,10 @@ const Home = () => {
-
-
-
-
+
+
+
+
diff --git a/packages/wow-ui/src/components/Checkbox/Checkbox.stories.tsx b/packages/wow-ui/src/components/Checkbox/Checkbox.stories.tsx
index b69cb803..c53e3e0d 100644
--- a/packages/wow-ui/src/components/Checkbox/Checkbox.stories.tsx
+++ b/packages/wow-ui/src/components/Checkbox/Checkbox.stories.tsx
@@ -41,11 +41,10 @@ const meta = {
type: "boolean",
},
},
- children: {
+ label: {
description: "체크박스 오른쪽이나 위쪽에 들어갈 텍스트입니다.",
table: {
type: { summary: "ReactNode" },
- defaultValue: { summary: null },
},
control: false,
},
@@ -53,7 +52,6 @@ const meta = {
description: "외부 활성 상태가 변경될 때 호출되는 함수입니다.",
table: {
type: { summary: "() => void" },
- defaultValue: { summary: null },
control: {
type: "function",
},
@@ -63,10 +61,6 @@ const meta = {
description: "체크박스 클릭 시 호출되는 함수입니다.",
table: {
type: { summary: "() => void" },
- defaultValue: { summary: null },
- control: {
- type: "function",
- },
},
},
onKeyDown: {
@@ -74,30 +68,18 @@ const meta = {
"체크박스에 포커스 됐을 때 엔터 키 또는 스페이스 바를 눌렀을 때 호출되는 함수입니다.",
table: {
type: { summary: "() => void" },
- defaultValue: { summary: null },
- control: {
- type: "function",
- },
},
},
onMouseEnter: {
description: "마우스가 체크박스 위로 진입할 때 호출되는 함수입니다.",
table: {
type: { summary: "() => void" },
- defaultValue: { summary: null },
- },
- control: {
- type: "function",
},
},
onMouseLeave: {
description: "마우스가 체크박스에서 벗어날 때 호출되는 함수입니다.",
table: {
type: { summary: "() => void" },
- defaultValue: { summary: null },
- },
- control: {
- type: "function",
},
},
position: {
@@ -169,7 +151,7 @@ export const Disabled: Story = {
export const Vertical: Story = {
args: {
checked: true,
- children: "string",
+ label: "string",
position: "vertical",
value: "checkbox",
},
@@ -178,7 +160,7 @@ export const Vertical: Story = {
export const Horizontal: Story = {
args: {
checked: true,
- children: "string",
+ label: "string",
position: "horizontal",
value: "checkbox",
},
diff --git a/packages/wow-ui/src/components/Checkbox/Checkbox.test.tsx b/packages/wow-ui/src/components/Checkbox/Checkbox.test.tsx
index 0cd5c543..4d4b8006 100644
--- a/packages/wow-ui/src/components/Checkbox/Checkbox.test.tsx
+++ b/packages/wow-ui/src/components/Checkbox/Checkbox.test.tsx
@@ -7,11 +7,7 @@ import Checkbox from "./index";
describe("Checkbox component", () => {
const renderCheckbox = (props: Partial = {}): RenderResult => {
- return render(
-
- Text
-
- );
+ return render();
};
test("toggles checked state when clicked", async () => {
diff --git a/packages/wow-ui/src/components/Checkbox/index.tsx b/packages/wow-ui/src/components/Checkbox/index.tsx
index 48d5bf1a..65917a49 100644
--- a/packages/wow-ui/src/components/Checkbox/index.tsx
+++ b/packages/wow-ui/src/components/Checkbox/index.tsx
@@ -2,11 +2,7 @@
import { cva } from "@styled-system/css";
import { styled } from "@styled-system/jsx";
-import type {
- CSSProperties,
- InputHTMLAttributes,
- PropsWithChildren,
-} from "react";
+import type { CSSProperties, InputHTMLAttributes, ReactNode } from "react";
import { forwardRef, useId } from "react";
import { Check as CheckIcon } from "wowds-icons";
@@ -19,6 +15,7 @@ import { useCheckedState } from "@/hooks";
* @param {boolean} [disabled=false] 체크박스가 비활성화되어 있는지 여부.
* @param {boolean} [checked] 외부에서 제어할 활성 상태.
* @param {string} value 체크박스 값.
+ * @param {ReactNode} [label] 체크박스 오른쪽이나 위쪽에 들어갈 텍스트.
* @param {() => void} [onChange] 외부 활성 상태가 변경될 때 호출되는 함수.
* @param {() => void} [onClick] 체크박스 클릭 시 호출되는 함수.
* @param {() => void} [onKeyDown] 체크박스에 포커스 됐을 때 엔터 키 또는 스페이스 바를 눌렀을 때 호출되는 함수.
@@ -28,15 +25,15 @@ import { useCheckedState } from "@/hooks";
* @param {InputHTMLAttributes} [inputProps] 체크박스의 기본 input 요소에 전달할 추가 속성들.
* @param {CSSProperties} [style] 체크박스의 커스텀 스타일.
* @param {string} [className] 체크박스에 전달하는 커스텀 클래스.
- * @param {React.ReactNode} [children] 체크박스 오른쪽이나 위쪽에 들어갈 텍스트.
* @param {ComponentPropsWithoutRef} rest 렌더링된 요소 또는 컴포넌트에 전달할 추가 props.
* @param {ComponentPropsWithRef["ref"]} ref 렌더링된 요소 또는 컴포넌트에 연결할 ref.
*/
-export interface CheckboxProps extends PropsWithChildren {
+export interface CheckboxProps {
defaultChecked?: boolean;
disabled?: boolean;
checked?: boolean;
value?: string;
+ label?: ReactNode;
onChange?: () => void;
onClick?: () => void;
onKeyDown?: () => void;
@@ -57,7 +54,7 @@ const Checkbox = forwardRef(
value = "checkbox",
onClick,
onChange,
- children,
+ label,
position = "horizontal",
inputProps,
onKeyDown,
@@ -93,7 +90,7 @@ const Checkbox = forwardRef(
cursor={disabled ? "none" : "pointer"}
display="flex"
flexDirection={position === "vertical" ? "column-reverse" : "row"}
- gap={children ? "xs" : "0px"}
+ gap={label ? "xs" : "0px"}
htmlFor={id}
pointerEvents={disabled ? "none" : "auto"}
width="fit-content"
@@ -132,7 +129,7 @@ const Checkbox = forwardRef(
)}
- {children}
+ {label}
);
diff --git a/packages/wow-ui/src/components/MultiGroup/MultiGroup.test.tsx b/packages/wow-ui/src/components/MultiGroup/MultiGroup.test.tsx
index 2bde8262..722465c8 100644
--- a/packages/wow-ui/src/components/MultiGroup/MultiGroup.test.tsx
+++ b/packages/wow-ui/src/components/MultiGroup/MultiGroup.test.tsx
@@ -10,9 +10,9 @@ describe("multi group with checkbox", () => {
it("should render checkbox components with children", () => {
render(
-
-
-
+
+
+
);
const checkbox1 = screen.getByText("checkbox1");
@@ -27,9 +27,9 @@ describe("multi group with checkbox", () => {
it("should render checkbox components with its own state", () => {
const rendered = render(
-
-
-
+
+
+
);
const checkboxes = rendered.getAllByRole("checkbox");
diff --git a/packages/wow-ui/src/components/RadioGroup/RadioButton.tsx b/packages/wow-ui/src/components/RadioGroup/RadioButton.tsx
index 05c749d7..9d1f9106 100644
--- a/packages/wow-ui/src/components/RadioGroup/RadioButton.tsx
+++ b/packages/wow-ui/src/components/RadioGroup/RadioButton.tsx
@@ -2,7 +2,12 @@
import { cva } from "@styled-system/css/cva";
import { styled } from "@styled-system/jsx";
-import type { CSSProperties, InputHTMLAttributes, KeyboardEvent } from "react";
+import type {
+ CSSProperties,
+ InputHTMLAttributes,
+ KeyboardEvent,
+ ReactNode,
+} from "react";
import { forwardRef, useCallback, useContext, useState } from "react";
import RadioContext from "@/components/RadioGroup/RadioContext";
@@ -12,7 +17,7 @@ import RadioContext from "@/components/RadioGroup/RadioContext";
*
* @param {boolean} [disabled] - 라디오 버튼이 비활성화되어 있는지 여부.
* @param {string} value - 라디오 버튼의 값.
- * @param {string} [label] - 라디오 버튼의 라벨.
+ * @param {ReactNode} [label] - 라디오 버튼의 라벨.
* @param {CSSProperties} [style] - 라디오 버튼의 커스텀 스타일.
* @param {string} [className] - 라디오 버튼에 전달하는 커스텀 클래스.
* @param {InputHTMLAttributes} [inputProps] - 라디오 버튼의 기본 input 요소에 전달할 추가 속성들.
@@ -23,7 +28,7 @@ import RadioContext from "@/components/RadioGroup/RadioContext";
export interface RadioButtonProps {
disabled?: boolean;
value: string;
- label?: string;
+ label?: ReactNode;
style?: CSSProperties;
className?: string;
inputProps?: InputHTMLAttributes;
@@ -80,7 +85,7 @@ const RadioButton = forwardRef(