@idbrnd/design-system 3.0.4 → 3.1.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
@@ -1,6 +1,6 @@
1
1
  # @idbrnd/design-system
2
2
 
3
- ![Version](https://img.shields.io/badge/version-3.0.4-4B5FE1?style=flat-square)
3
+ ![Version](https://img.shields.io/badge/version-3.1.0-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)
@@ -92,15 +92,15 @@ import { FillButton } from "@idbrnd/design-system";
92
92
  <FillButton variant="primary" disabled>비활성화</FillButton>
93
93
  ```
94
94
 
95
- | Prop | 타입 | 기본값 | 설명 |
96
- | ------------- | -------------------------------------------------- | ----------- | ------------------ |
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` | 비활성화 |
95
+ | Prop | 타입 | 기본값 | 설명 |
96
+ | ------------------ | -------------------------------------------------- | ------------ | ------------------- |
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
102
  | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
103
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
103
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
104
104
 
105
105
  ### OutlineButton
106
106
 
@@ -112,15 +112,15 @@ import { OutlineButton } from "@idbrnd/design-system";
112
112
  <OutlineButton variant="assistive" loading>처리 중</OutlineButton>
113
113
  ```
114
114
 
115
- | Prop | 타입 | 기본값 | 설명 |
116
- | ------------- | ---------------------------------------------------------- | ------------- | ------------------ |
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` | — | 추가 인라인 스타일 |
115
+ | Prop | 타입 | 기본값 | 설명 |
116
+ | ------------------ | -------------------------------------------------- | ------------ | ------------------- |
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` | — | 추가 인라인 스타일 |
124
124
 
125
125
  ### TextButton
126
126
 
@@ -131,15 +131,15 @@ import { TextButton } from "@idbrnd/design-system";
131
131
  <TextButton variant="assistive" size="small">작은 버튼</TextButton>
132
132
  ```
133
133
 
134
- | Prop | 타입 | 기본값 | 설명 |
135
- | ------------- | ----------------------------------------- | ------------- | ------------------ |
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` | — | 추가 인라인 스타일 |
134
+ | Prop | 타입 | 기본값 | 설명 |
135
+ | ------------------ | -------------------------------------------------- | ------------ | ------------------- |
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` | — | 추가 인라인 스타일 |
143
143
 
144
144
  ### WeakButton
145
145
 
@@ -150,15 +150,15 @@ import { WeakButton } from "@idbrnd/design-system";
150
150
  <WeakButton variant="error" size="xsmall">삭제</WeakButton>
151
151
  ```
152
152
 
153
- | Prop | 타입 | 기본값 | 설명 |
154
- | ------------- | -------------------------------------------------- | ------------- | ------------------ |
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` | — | 추가 인라인 스타일 |
153
+ | Prop | 타입 | 기본값 | 설명 |
154
+ | ------------------ | -------------------------------------------------- | ------------ | ------------------- |
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` | — | 추가 인라인 스타일 |
162
162
 
163
163
  ---
164
164
 
@@ -174,13 +174,13 @@ import { BasicIconButton } from "@idbrnd/design-system";
174
174
  <BasicIconButton size="medium" disabled><SearchIcon /></BasicIconButton>
175
175
  ```
176
176
 
177
- | Prop | 타입 | 기본값 | 설명 |
178
- | ------------- | -------------------------- | ----------- | --------------------------------------------------------------------------------------------------- |
179
- | `size` | `"medium"` \| `"large"` | `"medium"` | 아이콘 크기 (large: 24×24, medium: 20×20) |
180
- | `touchArea` | `"default"` \| `"compact"` | `"default"` | 인터랙션 적용 범위. large는 default(44×44)/compact(36×36) 모두 지원, medium은 default(32×32)만 지원 |
181
- | `disabled` | `boolean` | `false` | 비활성화 |
182
- | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
183
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
177
+ | Prop | 타입 | 기본값 | 설명 |
178
+ | ------------------ | -------------------------- | ----------- | --------------------------------------------------------------------------------------------------- |
179
+ | `size` | `"medium"` \| `"large"` | `"medium"` | 아이콘 크기 (large: 24×24, medium: 20×20) |
180
+ | `touchArea` | `"default"` \| `"compact"` | `"default"` | 인터랙션 적용 범위. large는 default(44×44)/compact(36×36) 모두 지원, medium은 default(32×32)만 지원 |
181
+ | `disabled` | `boolean` | `false` | 비활성화 |
182
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
183
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
184
184
 
185
185
  ### FillIconButton
186
186
 
@@ -191,13 +191,13 @@ import { FillIconButton } from "@idbrnd/design-system";
191
191
  <FillIconButton variant="overlay"><PlusIcon /></FillIconButton>
192
192
  ```
193
193
 
194
- | Prop | 타입 | 기본값 | 설명 |
195
- | ------------- | --------------------------------------- | ----------- | ------------------ |
196
- | `variant` | `"basic"` \| `"overlay"` \| `"primary"` | `"basic"` | 색상 변형 |
197
- | `size` | `"medium"` \| `"large"` | `"medium"` | 크기 |
198
- | `disabled` | `boolean` | `false` | 비활성화 |
199
- | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
200
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
194
+ | Prop | 타입 | 기본값 | 설명 |
195
+ | ------------------ | --------------------------------------- | ---------- | ------------------- |
196
+ | `variant` | `"basic"` \| `"overlay"` \| `"primary"` | `"basic"` | 색상 변형 |
197
+ | `size` | `"medium"` \| `"large"` | `"medium"` | 크기 |
198
+ | `disabled` | `boolean` | `false` | 비활성화 |
199
+ | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
200
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
201
201
 
202
202
  ### OutlineIconButton
203
203
 
@@ -208,12 +208,12 @@ import { OutlineIconButton } from "@idbrnd/design-system";
208
208
  <OutlineIconButton disabled><WriteIcon /></OutlineIconButton>
209
209
  ```
210
210
 
211
- | Prop | 타입 | 기본값 | 설명 |
212
- | ------------- | ------------------------------------ | ---------- | ------------------ |
213
- | `size` | `"medium"` \| `"large"` | `"medium"` | 크기 |
214
- | `disabled` | `boolean` | `false` | 비활성화 |
211
+ | Prop | 타입 | 기본값 | 설명 |
212
+ | ------------------ | ----------------------- | ---------- | ------------------- |
213
+ | `size` | `"medium"` \| `"large"` | `"medium"` | 크기 |
214
+ | `disabled` | `boolean` | `false` | 비활성화 |
215
215
  | `keepFocusOnClick` | `boolean` | `false` | 클릭 후 포커스 유지 |
216
- | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
216
+ | `customStyle` | `CSSProperties` | — | 추가 인라인 스타일 |
217
217
 
218
218
  ---
219
219
 
@@ -510,12 +510,12 @@ showToast({ variant: "basic", message: "알림 메시지입니다." });
510
510
  dismissToast();
511
511
  ```
512
512
 
513
- | 옵션 | 타입 | 설명 |
514
- | ------------- | ----------------------------------------- | ------------------------------- |
515
- | `message` | `ReactNode` | **(필수)** 표시할 메시지 |
516
- | `variant` | `"basic"` \| `"positive"` \| `"negative"` | 색상 변형 (기본값 `"basic"`) |
513
+ | 옵션 | 타입 | 설명 |
514
+ | ------------- | ----------------------------------------- | ------------------------------------------------------ |
515
+ | `message` | `ReactNode` | **(필수)** 표시할 메시지 |
516
+ | `variant` | `"basic"` \| `"positive"` \| `"negative"` | 색상 변형 (기본값 `"basic"`) |
517
517
  | `icon` | `ReactNode` | 사용자 지정 아이콘. 미지정 시 variant 기본 아이콘 사용 |
518
- | `customStyle` | `CSSProperties` | 추가 인라인 스타일 |
518
+ | `customStyle` | `CSSProperties` | 추가 인라인 스타일 |
519
519
 
520
520
  ### Snackbar
521
521
 
@@ -538,16 +538,16 @@ showSnackbar({ variant: "loading", heading: "처리 중..." });
538
538
  dismissSnackbar();
539
539
  ```
540
540
 
541
- | 옵션 | 타입 | 설명 |
542
- | --------------- | ------------------------ | --------------------------------------------- |
543
- | `variant` | `"basic"` \| `"loading"` | 색상 변형 (기본값 `"basic"`) |
544
- | `heading` | `ReactNode` | 제목 텍스트 |
545
- | `description` | `ReactNode` | 본문 텍스트 |
541
+ | 옵션 | 타입 | 설명 |
542
+ | --------------- | ------------------------ | --------------------------------------------------- |
543
+ | `variant` | `"basic"` \| `"loading"` | 색상 변형 (기본값 `"basic"`) |
544
+ | `heading` | `ReactNode` | 제목 텍스트 |
545
+ | `description` | `ReactNode` | 본문 텍스트 |
546
546
  | `icon` | `ReactNode` | 사용자 지정 아이콘. 전달 시 loading 스피너보다 우선 |
547
- | `actionLabel` | `ReactNode` | 액션 버튼 레이블 |
548
- | `onActionClick` | `() => void` | 액션 버튼 클릭 콜백 |
549
- | `closeButton` | `boolean` | 닫기 버튼 표시 여부 |
550
- | `customStyle` | `CSSProperties` | 추가 인라인 스타일 |
547
+ | `actionLabel` | `ReactNode` | 액션 버튼 레이블 |
548
+ | `onActionClick` | `() => void` | 액션 버튼 클릭 콜백 |
549
+ | `closeButton` | `boolean` | 닫기 버튼 표시 여부 |
550
+ | `customStyle` | `CSSProperties` | 추가 인라인 스타일 |
551
551
 
552
552
  ### PushBadge
553
553
 
@@ -561,12 +561,12 @@ import { PushBadge } from "@idbrnd/design-system";
561
561
  <PushBadge variant="info" />
562
562
  ```
563
563
 
564
- | Prop | 타입 | 기본값 | 설명 |
565
- | ------------- | --------------------------------- | ---------- | ------------------------------------------- |
566
- | `variant` | `"dot"` \| `"number"` \| `"info"` | `"number"` | 표시 형태 |
567
- | `count` | `number` | `1` | `variant="number"` 시 표시할 숫자 |
568
- | `maxCount` | `number` | `999` | `count`가 초과하면 `{maxCount}+`로 표시 |
569
- | `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` | — | 추가 인라인 스타일 |
570
570
 
571
571
  ### Tooltip
572
572
 
@@ -0,0 +1,15 @@
1
+ import { type ButtonHTMLAttributes, type CSSProperties, type ReactNode } from 'react';
2
+ export type TertiaryButtonVariant = 'fill' | 'tinted' | 'gray' | 'primary';
3
+ export type TertiaryButtonSize = 'large' | 'medium' | 'small';
4
+ export interface TertiaryButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'style'> {
5
+ variant?: TertiaryButtonVariant;
6
+ size?: TertiaryButtonSize;
7
+ leadingIcon?: ReactNode;
8
+ trailingIcon?: ReactNode;
9
+ loading?: boolean;
10
+ keepFocusOnClick?: boolean;
11
+ customStyle?: CSSProperties;
12
+ children?: ReactNode;
13
+ }
14
+ declare function TertiaryButton({ variant, size, leadingIcon, trailingIcon, disabled, loading, keepFocusOnClick, customStyle, onClick, className, children, type, ...rest }: TertiaryButtonProps): import("react/jsx-runtime").JSX.Element;
15
+ export default TertiaryButton;
package/dist/index.d.ts CHANGED
@@ -2,10 +2,12 @@ import "./styles/variables.css";
2
2
  import "./styles/font-metrics.css";
3
3
  export { default as FillButton } from "./components/Button/Fill/FillButton";
4
4
  export { default as OutlineButton } from "./components/Button/Outline/OutlineButton";
5
+ export { default as TertiaryButton } from "./components/Button/Tertiary/TertiaryButton";
5
6
  export { default as TextButton } from "./components/Button/Text/TextButton";
6
7
  export { default as WeakButton } from "./components/Button/Weak/WeakButton";
7
8
  export type { FillButtonProps, FillButtonSize, FillButtonVariant, FillButtonWidthType, } from "./components/Button/Fill/FillButton";
8
9
  export type { OutlineButtonProps, OutlineButtonSize, OutlineButtonVariant, OutlineButtonWidthType, } from "./components/Button/Outline/OutlineButton";
10
+ export type { TertiaryButtonProps, TertiaryButtonSize, TertiaryButtonVariant, } from "./components/Button/Tertiary/TertiaryButton";
9
11
  export type { TextButtonProps, TextButtonSize, TextButtonVariant, TextButtonWidthType, } from "./components/Button/Text/TextButton";
10
12
  export type { WeakButtonProps, WeakButtonSize, WeakButtonVariant, WeakButtonWidthType, } from "./components/Button/Weak/WeakButton";
11
13
  export { default as BasicIconButton } from "./components/IconButton/BasicIcon/BasicIconButton";