@idbrnd/design-system 1.5.4 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -301,10 +301,14 @@ function CheckBoxExample() {
301
301
 
302
302
  return (
303
303
  <>
304
- <CheckBox checked={checked} onChange={(value) => setChecked(value)} />
304
+ <CheckBox checked={checked} onChange={(value) => setChecked(value)}>
305
+ 알림 받기
306
+ </CheckBox>
305
307
 
306
308
  {/* indeterminate: checked와 함께 사용 */}
307
- <CheckBox checked={true} indeterminate onChange={() => {}} />
309
+ <CheckBox checked={true} indeterminate onChange={() => {}}>
310
+ 부분 선택
311
+ </CheckBox>
308
312
 
309
313
  {/* variant / size / density */}
310
314
  <CheckBox
@@ -313,9 +317,13 @@ function CheckBoxExample() {
313
317
  density="compact"
314
318
  checked
315
319
  onChange={() => {}}
316
- />
320
+ >
321
+ 소형 옵션
322
+ </CheckBox>
317
323
 
318
- <CheckBox checked disabled />
324
+ <CheckBox checked disabled>
325
+ 비활성 옵션
326
+ </CheckBox>
319
327
  </>
320
328
  );
321
329
  }
@@ -326,6 +334,7 @@ function CheckBoxExample() {
326
334
  | `checked` | `boolean` | — | **(필수)** 체크 상태 |
327
335
  | `onChange` | `(checked: boolean) => void` | — | 변경 핸들러 |
328
336
  | `indeterminate` | `boolean` | `false` | `checked={true}`와 함께 사용 시 대시(–) 아이콘 표시 |
337
+ | `children` | `ReactNode` | — | 체크박스 우측에 렌더링할 라벨/콘텐츠 |
329
338
  | `variant` | `"primary"` \| `"assistive"` | `"primary"` | 색상 변형 |
330
339
  | `size` | `"medium"` \| `"small"` | `"medium"` | 크기 |
331
340
  | `density` | `"default"` \| `"compact"` | `"default"` | wrapper 밀도 |
@@ -336,6 +345,7 @@ function CheckBoxExample() {
336
345
 
337
346
  - `indeterminate={true}`는 `checked={true}`일 때만 대시 아이콘을 표시합니다.
338
347
  - `density="compact"`은 wrapper 크기만 줄이며, 아이콘은 `size` 기준으로 그대로 표시됩니다.
348
+ - `children`을 전달하면 라벨 영역까지 함께 클릭되어 체크/해제됩니다.
339
349
 
340
350
  ### Radio
341
351
 
@@ -351,18 +361,15 @@ function RadioGroupExample() {
351
361
  return (
352
362
  <>
353
363
  {["A", "B", "C"].map((v) => (
354
- <label
364
+ <Radio
355
365
  key={v}
356
- style={{ display: "flex", alignItems: "center", gap: 6 }}
366
+ name="group"
367
+ value={v}
368
+ checked={selected === v}
369
+ onChange={(isChecked) => isChecked && setSelected(v)}
357
370
  >
358
- <Radio
359
- name="group"
360
- value={v}
361
- checked={selected === v}
362
- onChange={(isChecked) => isChecked && setSelected(v)}
363
- />
364
371
  Option {v}
365
- </label>
372
+ </Radio>
366
373
  ))}
367
374
  </>
368
375
  );
@@ -375,6 +382,7 @@ function RadioGroupExample() {
375
382
  | `onChange` | `(checked: boolean) => void` | — | 변경 핸들러 |
376
383
  | `name` | `string` | — | input name 속성 |
377
384
  | `value` | `string` | — | input value 속성 |
385
+ | `children` | `ReactNode` | — | 라디오 우측에 렌더링할 라벨/콘텐츠 |
378
386
  | `variant` | `"primary"` \| `"assistive"` | `"primary"` | 색상 변형 |
379
387
  | `size` | `"medium"` \| `"small"` | `"medium"` | 크기 |
380
388
  | `density` | `"default"` \| `"compact"` | `"default"` | wrapper 밀도 |
@@ -385,6 +393,7 @@ function RadioGroupExample() {
385
393
 
386
394
  - `name`이 같아도 자동으로 하나만 선택되지 않습니다. `checked={selected === value}` 비교로 직접 제어해야 합니다.
387
395
  - `onChange`는 클릭 시 `true`가 전달됩니다. `isChecked && setSelected(v)` 패턴으로 true일 때만 state를 변경합니다.
396
+ - `children`을 전달하면 라벨 영역까지 함께 클릭되어 선택/해제됩니다.
388
397
 
389
398
  ### ToggleSwitch
390
399
 
@@ -1,4 +1,4 @@
1
- import { type CSSProperties, type InputHTMLAttributes } from "react";
1
+ import { type CSSProperties, type InputHTMLAttributes, type ReactNode } from "react";
2
2
  export type CheckBoxVariant = "primary" | "assistive";
3
3
  export type CheckBoxSize = "medium" | "small";
4
4
  export type CheckBoxDensity = "default" | "compact";
@@ -9,7 +9,8 @@ export interface CheckBoxProps extends Omit<InputHTMLAttributes<HTMLInputElement
9
9
  customStyle?: CSSProperties;
10
10
  checked?: boolean;
11
11
  indeterminate?: boolean;
12
+ children?: ReactNode;
12
13
  onChange?: (checked: boolean) => void;
13
14
  }
14
- declare function CheckBox({ variant, size, density, disabled, customStyle, className, checked, indeterminate, onChange, ...rest }: CheckBoxProps): import("react/jsx-runtime").JSX.Element;
15
+ declare function CheckBox({ variant, size, density, disabled, customStyle, className, checked, indeterminate, children, onChange, ...rest }: CheckBoxProps): import("react/jsx-runtime").JSX.Element;
15
16
  export default CheckBox;
@@ -1,4 +1,4 @@
1
- import { type CSSProperties, type InputHTMLAttributes } from "react";
1
+ import { type CSSProperties, type InputHTMLAttributes, type ReactNode } from "react";
2
2
  export type RadioVariant = "primary" | "assistive";
3
3
  export type RadioSize = "medium" | "small";
4
4
  export type RadioDensity = "default" | "compact";
@@ -7,7 +7,8 @@ export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
7
7
  size?: RadioSize;
8
8
  density?: RadioDensity;
9
9
  customStyle?: CSSProperties;
10
+ children?: ReactNode;
10
11
  onChange?: (checked: boolean) => void;
11
12
  }
12
- declare function Radio({ variant, size, density, disabled, checked, customStyle, className, onChange, ...rest }: RadioProps): import("react/jsx-runtime").JSX.Element;
13
+ declare function Radio({ variant, size, density, disabled, checked, customStyle, className, children, onChange, ...rest }: RadioProps): import("react/jsx-runtime").JSX.Element;
13
14
  export default Radio;