@idbrnd/design-system 3.0.1 → 3.0.3

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
@@ -1,6 +1,6 @@
1
1
  # @idbrnd/design-system
2
2
 
3
- ![Version](https://img.shields.io/badge/version-3.0.1-4B5FE1?style=flat-square)
3
+ ![Version](https://img.shields.io/badge/version-3.0.3-4B5FE1?style=flat-square)
4
4
  ![React](https://img.shields.io/badge/React-18.3.1-61DAFB?style=flat-square&logo=react&logoColor=white)
5
5
  ![Vite](https://img.shields.io/badge/Vite-7.3.0-646CFF?style=flat-square&logo=vite&logoColor=white)
6
6
  ![TypeScript](https://img.shields.io/badge/TypeScript-5.9.3-3178C6?style=flat-square&logo=typescript&logoColor=white)
@@ -94,12 +94,13 @@ import { FillButton } from "@idbrnd/design-system";
94
94
 
95
95
  | Prop | 타입 | 기본값 | 설명 |
96
96
  | ------------- | -------------------------------------------------- | ----------- | ------------------ |
97
- | `variant` | `"primary"` \| `"assistive"` \| `"error"` | `"primary"` | 색상 변형 |
98
- | `size` | `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
99
- | `widthType` | `"hug"` \| `"fixed"` \| `"fill"` | `"hug"` | 너비 방식 |
100
- | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
101
- | `disabled` | `boolean` | `false` | 비활성화 |
102
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
97
+ | `variant` | `"primary"` \| `"assistive"` \| `"error"` | `"primary"` | 색상 변형 |
98
+ | `size` | `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
99
+ | `widthType` | `"fixed"` \| `"flexible"` | `"flexible"` | 너비 방식 |
100
+ | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
101
+ | `disabled` | `boolean` | `false` | 비활성화 |
102
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
103
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
103
104
 
104
105
  ### OutlineButton
105
106
 
@@ -113,12 +114,13 @@ import { OutlineButton } from "@idbrnd/design-system";
113
114
 
114
115
  | Prop | 타입 | 기본값 | 설명 |
115
116
  | ------------- | ---------------------------------------------------------- | ------------- | ------------------ |
116
- | `variant` | `"primary"` \| `"secondary"` \| `"assistive"` \| `"error"` | `"assistive"` | 색상 변형 |
117
- | `size` | `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
118
- | `widthType` | `"hug"` \| `"fixed"` \| `"fill"` | `"hug"` | 너비 방식 |
119
- | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
120
- | `disabled` | `boolean` | `false` | 비활성화 |
121
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
117
+ | `variant` | `"primary"` \| `"assistive"` \| `"secondary"` | `"primary"` | 색상 변형 |
118
+ | `size` | `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
119
+ | `widthType` | `"fixed"` \| `"flexible"` | `"flexible"` | 너비 방식 |
120
+ | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
121
+ | `disabled` | `boolean` | `false` | 비활성화 |
122
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
123
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
122
124
 
123
125
  ### TextButton
124
126
 
@@ -131,12 +133,13 @@ import { TextButton } from "@idbrnd/design-system";
131
133
 
132
134
  | Prop | 타입 | 기본값 | 설명 |
133
135
  | ------------- | ----------------------------------------- | ------------- | ------------------ |
134
- | `variant` | `"primary"` \| `"assistive"` \| `"error"` | `"assistive"` | 색상 변형 |
135
- | `size` | `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
136
- | `widthType` | `"hug"` \| `"fixed"` \| `"fill"` | `"hug"` | 너비 방식 |
137
- | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
138
- | `disabled` | `boolean` | `false` | 비활성화 |
139
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
136
+ | `variant` | `"primary"` \| `"assistive"` \| `"secondary"` | `"primary"` | 색상 변형 |
137
+ | `size` | `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
138
+ | `widthType` | `"fixed"` \| `"flexible"` | `"flexible"` | 너비 방식 |
139
+ | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
140
+ | `disabled` | `boolean` | `false` | 비활성화 |
141
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
142
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
140
143
 
141
144
  ### WeakButton
142
145
 
@@ -149,12 +152,13 @@ import { WeakButton } from "@idbrnd/design-system";
149
152
 
150
153
  | Prop | 타입 | 기본값 | 설명 |
151
154
  | ------------- | -------------------------------------------------- | ------------- | ------------------ |
152
- | `variant` | `"primary"` \| `"assistive"` \| `"error"` | `"assistive"` | 색상 변형 |
153
- | `size` | `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
154
- | `widthType` | `"hug"` \| `"fixed"` \| `"fill"` | `"hug"` | 너비 방식 |
155
- | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
156
- | `disabled` | `boolean` | `false` | 비활성화 |
157
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
155
+ | `variant` | `"primary"` \| `"assistive"` \| `"error"` | `"primary"` | 색상 변형 |
156
+ | `size` | `"xsmall"` \| `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
157
+ | `widthType` | `"fixed"` \| `"flexible"` | `"flexible"` | 너비 방식 |
158
+ | `loading` | `boolean` | `false` | 로딩 스피너 표시 |
159
+ | `disabled` | `boolean` | `false` | 비활성화 |
160
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
161
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
158
162
 
159
163
  ---
160
164
 
@@ -175,6 +179,7 @@ import { BasicIconButton } from "@idbrnd/design-system";
175
179
  | `size` | `"medium"` \| `"large"` | `"medium"` | 아이콘 크기 (large: 24×24, medium: 20×20) |
176
180
  | `touchArea` | `"default"` \| `"compact"` | `"default"` | 인터랙션 적용 범위. large는 default(44×44)/compact(36×36) 모두 지원, medium은 default(32×32)만 지원 |
177
181
  | `disabled` | `boolean` | `false` | 비활성화 |
182
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
178
183
  | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
179
184
 
180
185
  ### FillIconButton
@@ -188,25 +193,27 @@ import { FillIconButton } from "@idbrnd/design-system";
188
193
 
189
194
  | Prop | 타입 | 기본값 | 설명 |
190
195
  | ------------- | --------------------------------------- | ----------- | ------------------ |
191
- | `variant` | `"primary"` \| `"basic"` \| `"overlay"` | `"primary"` | 색상 변형 |
192
- | `size` | `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
193
- | `disabled` | `boolean` | `false` | 비활성화 |
194
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
196
+ | `variant` | `"basic"` \| `"overlay"` \| `"primary"` | `"basic"` | 색상 변형 |
197
+ | `size` | `"medium"` \| `"large"` | `"medium"` | 크기 |
198
+ | `disabled` | `boolean` | `false` | 비활성화 |
199
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
200
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
195
201
 
196
202
  ### OutlineIconButton
197
203
 
198
204
  ```tsx
199
205
  import { OutlineIconButton } from "@idbrnd/design-system";
200
206
 
201
- <OutlineIconButton size="large"><EditIcon /></OutlineIconButton>
202
- <OutlineIconButton disabled><EditIcon /></OutlineIconButton>
207
+ <OutlineIconButton size="large"><WriteIcon /></OutlineIconButton>
208
+ <OutlineIconButton disabled><WriteIcon /></OutlineIconButton>
203
209
  ```
204
210
 
205
211
  | Prop | 타입 | 기본값 | 설명 |
206
212
  | ------------- | ------------------------------------ | ---------- | ------------------ |
207
- | `size` | `"small"` \| `"medium"` \| `"large"` | `"medium"` | 크기 |
208
- | `disabled` | `boolean` | `false` | 비활성화 |
209
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
213
+ | `size` | `"medium"` \| `"large"` | `"medium"` | 크기 |
214
+ | `disabled` | `boolean` | `false` | 비활성화 |
215
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
216
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
210
217
 
211
218
  ---
212
219
 
@@ -326,7 +333,7 @@ function SearchExample() {
326
333
  | -------------- | ----------------------------------------------------- | ----------- | -------------------------------------------------------------------- |
327
334
  | `value` | `string` | — | **(필수)** 입력값 |
328
335
  | `onChange` | `ChangeEventHandler` | — | **(필수)** 변경 핸들러 |
329
- | `onSearch` | `(value: string) => void` | — | 검색 실행 콜백 |
336
+ | `onSearch` | `(value: string) => void` | — | **(필수)** 검색 실행 콜백 |
330
337
  | `onClear` | `() => void` | — | 삭제 버튼 클릭 콜백. 미지정 시 기본 동작 사용 |
331
338
  | `size` | `"default"` \| `"small"` | `"default"` | 크기 |
332
339
  | `variant` | `"default"` \| `"onTyping"` \| `"typed"` \| `"error"` | — | 상태 변형. `errorMessage`가 있으면 `error`가 우선 적용 |
@@ -503,11 +510,12 @@ showToast({ variant: "basic", message: "알림 메시지입니다." });
503
510
  dismissToast();
504
511
  ```
505
512
 
506
- | 옵션 | 타입 | 설명 |
507
- | ---------- | ----------------------------------------- | ------------------------ |
508
- | `message` | `string` | **(필수)** 표시할 메시지 |
509
- | `variant` | `"basic"` \| `"positive"` \| `"negative"` | 색상 변형 |
510
- | `duration` | `number` | 자동 닫힘 시간(ms) |
513
+ | 옵션 | 타입 | 설명 |
514
+ | ------------- | ----------------------------------------- | ------------------------------- |
515
+ | `message` | `ReactNode` | **(필수)** 표시할 메시지 |
516
+ | `variant` | `"basic"` \| `"positive"` \| `"negative"` | 색상 변형 (기본값 `"basic"`) |
517
+ | `icon` | `ReactNode` | 사용자 지정 아이콘. 미지정 시 variant 기본 아이콘 사용 |
518
+ | `customStyle` | `CSSProperties` | 추가 인라인 스타일 |
511
519
 
512
520
  ### Snackbar
513
521
 
@@ -530,14 +538,16 @@ showSnackbar({ variant: "loading", heading: "처리 중..." });
530
538
  dismissSnackbar();
531
539
  ```
532
540
 
533
- | 옵션 | 타입 | 설명 |
534
- | --------------- | ------------------------ | ---------------------- |
535
- | `heading` | `string` | **(필수)** 제목 텍스트 |
536
- | `variant` | `"basic"` \| `"loading"` | 색상 변형 |
537
- | `description` | `string` | 본문 텍스트 |
538
- | `actionLabel` | `string` | 액션 버튼 레이블 |
539
- | `onActionClick` | `() => void` | 액션 버튼 클릭 콜백 |
540
- | `closeButton` | `boolean` | 닫기 버튼 표시 여부 |
541
+ | 옵션 | 타입 | 설명 |
542
+ | --------------- | ------------------------ | --------------------------------------------- |
543
+ | `variant` | `"basic"` \| `"loading"` | 색상 변형 (기본값 `"basic"`) |
544
+ | `heading` | `ReactNode` | 제목 텍스트 |
545
+ | `description` | `ReactNode` | 본문 텍스트 |
546
+ | `icon` | `ReactNode` | 사용자 지정 아이콘. 전달 시 loading 스피너보다 우선 |
547
+ | `actionLabel` | `ReactNode` | 액션 버튼 레이블 |
548
+ | `onActionClick` | `() => void` | 액션 버튼 클릭 콜백 |
549
+ | `closeButton` | `boolean` | 닫기 버튼 표시 여부 |
550
+ | `customStyle` | `CSSProperties` | 추가 인라인 스타일 |
541
551
 
542
552
  ### PushBadge
543
553
 
@@ -551,11 +561,12 @@ import { PushBadge } from "@idbrnd/design-system";
551
561
  <PushBadge variant="info" />
552
562
  ```
553
563
 
554
- | Prop | 타입 | 기본값 | 설명 |
555
- | ------------- | --------------------------------- | ------ | --------------------------------- |
556
- | `variant` | `"dot"` \| `"number"` \| `"info"` | — | **(필수)** 표시 형태 |
557
- | `count` | `number` | — | `variant="number"` 시 표시할 숫자 |
558
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
564
+ | Prop | 타입 | 기본값 | 설명 |
565
+ | ------------- | --------------------------------- | ---------- | ------------------------------------------- |
566
+ | `variant` | `"dot"` \| `"number"` \| `"info"` | `"number"` | 표시 형태 |
567
+ | `count` | `number` | `1` | `variant="number"` 시 표시할 숫자 |
568
+ | `maxCount` | `number` | `999` | `count`가 초과하면 `{maxCount}+`로 표시 |
569
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
559
570
 
560
571
  ### Tooltip
561
572
 
@@ -590,7 +601,7 @@ import { Tooltip } from "@idbrnd/design-system";
590
601
 
591
602
  ```tsx
592
603
  <Tooltip content="필수 입력 항목입니다" trigger="always" position="right">
593
- <InfoIcon />
604
+ <CircleInfoIcon />
594
605
  </Tooltip>
595
606
  ```
596
607
 
@@ -676,7 +687,7 @@ function SelectExample() {
676
687
  content={true}
677
688
  align="center"
678
689
  options={optionsWithIcons}
679
- value={selected}
690
+ selectedValue={selected}
680
691
  onSelect={setSelected}
681
692
  />
682
693
  ```
@@ -689,7 +700,7 @@ function SelectExample() {
689
700
  variant="error"
690
701
  description="항목을 선택해주세요."
691
702
  options={options}
692
- value={selected}
703
+ selectedValue={selected}
693
704
  onSelect={setSelected}
694
705
  />
695
706
  ```
@@ -751,7 +762,7 @@ import { Dropdown, OutlineButton } from "@idbrnd/design-system";
751
762
  import type { DropdownOption } from "@idbrnd/design-system";
752
763
 
753
764
  const options: DropdownOption[] = [
754
- { label: "수정", value: "edit", icon: <EditIcon /> },
765
+ { label: "수정", value: "edit", icon: <WriteIcon /> },
755
766
  { label: "복제", value: "duplicate", icon: <CopyIcon /> },
756
767
  { label: "삭제", value: "delete", icon: <TrashIcon /> },
757
768
  ];
@@ -1753,7 +1764,7 @@ import { Spinner, CustomSpinner, Clip, FadeSpinner } from "@idbrnd/design-system
1753
1764
 
1754
1765
  ## 아이콘
1755
1766
 
1756
- 피그마에서 추출한 SVG 아이콘이 React 컴포넌트로 제공됩니다. 현재 **179개** 아이콘이 포함되어 있습니다.
1767
+ 피그마에서 추출한 SVG 아이콘이 React 컴포넌트로 제공됩니다. 현재 **194개** 아이콘이 포함되어 있습니다.
1757
1768
 
1758
1769
  ### 개별 컴포넌트 import (권장)
1759
1770
 
@@ -1826,6 +1837,7 @@ const icon: IconName = "search";
1826
1837
  | `dashboard-layer` | `DashboardLayerIcon` |
1827
1838
  | `dashboard-heart-pulse` | `DashboardHeartPulseIcon` |
1828
1839
  | `dashboard-live-monitor` | `DashboardLiveMonitorIcon` |
1840
+ | `dashboard-graph` | `DashboardGraphIcon` |
1829
1841
 
1830
1842
  ---
1831
1843
 
@@ -0,0 +1,3 @@
1
+ import type { IconProps } from "../Icon.types";
2
+ declare const LinkIcon: ({ size, color, style, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default LinkIcon;
@@ -0,0 +1,3 @@
1
+ import type { IconProps } from "../Icon.types";
2
+ declare const MapIcon: ({ size, color, style, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default MapIcon;
@@ -0,0 +1,3 @@
1
+ import type { IconProps } from "../Icon.types";
2
+ declare const UnlinkIcon: ({ size, color, style, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default UnlinkIcon;
@@ -0,0 +1,3 @@
1
+ import type { IconProps } from "../Icon.types";
2
+ declare const UnplugFillIcon: ({ size, color, style, ...props }: IconProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default UnplugFillIcon;
@@ -130,10 +130,12 @@ export { default as IntervalLeftRightIcon } from "./IntervalLeftRightIcon";
130
130
  export { default as IntervalUpDownIcon } from "./IntervalUpDownIcon";
131
131
  export { default as LineHorizontalIcon } from "./LineHorizontalIcon";
132
132
  export { default as LineHorizontalThickIcon } from "./LineHorizontalThickIcon";
133
+ export { default as LinkIcon } from "./LinkIcon";
133
134
  export { default as LoadingIcon } from "./LoadingIcon";
134
135
  export { default as LockFillIcon } from "./LockFillIcon";
135
136
  export { default as LockIcon } from "./LockIcon";
136
137
  export { default as LogoutIcon } from "./LogoutIcon";
138
+ export { default as MapIcon } from "./MapIcon";
137
139
  export { default as MapPinnedIcon } from "./MapPinnedIcon";
138
140
  export { default as MenuIcon } from "./MenuIcon";
139
141
  export { default as MenuThickIcon } from "./MenuThickIcon";
@@ -183,6 +185,8 @@ export { default as TriangleFillIcon } from "./TriangleFillIcon";
183
185
  export { default as TriangleIcon } from "./TriangleIcon";
184
186
  export { default as TuneIcon } from "./TuneIcon";
185
187
  export { default as TvMinimalIcon } from "./TvMinimalIcon";
188
+ export { default as UnlinkIcon } from "./UnlinkIcon";
189
+ export { default as UnplugFillIcon } from "./UnplugFillIcon";
186
190
  export { default as UnplugIcon } from "./UnplugIcon";
187
191
  export { default as UnsmileIcon } from "./UnsmileIcon";
188
192
  export { default as VideoIcon } from "./VideoIcon";
@@ -131,10 +131,12 @@ export declare const iconMap: {
131
131
  readonly "interval-up-down": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
132
132
  readonly "line-horizontal": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
133
133
  readonly "line-horizontal-thick": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
134
+ readonly link: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
134
135
  readonly loading: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
135
136
  readonly "lock-fill": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
136
137
  readonly lock: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
137
138
  readonly logout: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
139
+ readonly map: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
138
140
  readonly "map-pinned": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
139
141
  readonly menu: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
140
142
  readonly "menu-thick": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
@@ -184,6 +186,8 @@ export declare const iconMap: {
184
186
  readonly triangle: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
185
187
  readonly tune: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
186
188
  readonly "tv-minimal": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
189
+ readonly unlink: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
190
+ readonly "unplug-fill": ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
187
191
  readonly unplug: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
188
192
  readonly unsmile: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;
189
193
  readonly video: ({ size, color, style, ...props }: import("./Icon.types").IconProps) => import("react/jsx-runtime").JSX.Element;