@olundot/ui 0.18.0 → 0.19.1
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/CHANGELOG.md +41 -0
- package/dist/index.d.ts +121 -37
- package/dist/index.js +1016 -846
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
1
|
# @olundot/ui
|
|
2
2
|
|
|
3
|
+
## 0.19.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a1c795c: 오버레이 7종(Dialog·ConfirmDialog·FormModal·InfoModal·Sheet·SheetDrawer·ActionSheet)의 중복 코드를 내부 모듈로 모았습니다. 공개 API와 기본값은 그대로이고, 화면에 보이는 변화는 아래뿐입니다.
|
|
8
|
+
|
|
9
|
+
- **닫기 버튼 통일** — Dialog·Sheet의 `showCloseButton`, SheetDrawer, ActionSheet의 닫기 버튼이 모두 `IconButton` ghost md(32px, 터치 영역 44px)입니다. hover는 `--action-hover`이고, 접근 가능한 이름은 '닫기'(SheetDrawer·ActionSheet는 `closeLabel`)입니다. Sheet 닫기 버튼의 이름이 영어 'Close'에서 '닫기'로 바뀌었습니다. ActionSheet는 버튼이 28px에서 32px로 커져 설명이 없는 헤더가 4px 높아집니다. SheetDrawer 닫기 버튼의 `data-slot="sheet-drawer-close"`는 `data-slot="icon-button"`이 됩니다.
|
|
10
|
+
- **SheetDescription** 글자색이 `text-text-secondary`입니다.
|
|
11
|
+
- **Dialog 포커스 복귀** — `DialogTrigger` 없이 `open`만으로 연 `DialogContent`도 닫으면 연 요소로 포커스를 돌려줍니다. 닫을 때 포커스를 직접 옮기는 화면은 `onCloseAutoFocus`에서 `preventDefault()`를 부르면 지금처럼 동작합니다.
|
|
12
|
+
- **Sheet 쌓임** — Sheet 계열의 오버레이가 `z-modal` 층에 그려집니다. 다른 오버레이 위에서 연 Sheet가 그 오버레이를 어둡게 덮습니다.
|
|
13
|
+
|
|
14
|
+
## 0.19.0
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- 42d2650: `Button`·`IconButton`에 새 축 `appearance`(`filled`·`outline`·`ghost`) × `tone`(`primary`·`neutral`·`danger`)을 추가했습니다. 옛 `variant`는 0.18과 똑같이 그려지고, 사용 중단 예정으로 표시됩니다. 0.20에서 삭제합니다.
|
|
19
|
+
|
|
20
|
+
- **쓸 수 있는 조합 다섯 개** — `filled` × `primary`·`neutral`·`danger`, `outline` × `neutral`, `ghost` × `neutral`. 나머지 네 조합은 타입 오류입니다. 새 축과 `variant`를 함께 줘도 타입 오류입니다.
|
|
21
|
+
- **두 컴포넌트가 같은 모양** — 같은 조합이면 `Button`과 `IconButton`의 색·테두리·hover가 같습니다. 크기는 아래 "크기 단계 하나"를 따릅니다.
|
|
22
|
+
- **기본값** — 아무것도 주지 않으면 지금과 같습니다(`Button` = `filled` + `primary`, `IconButton` = `ghost` + `neutral`). 한쪽만 주면 나머지를 채웁니다. `tone`이 없으면 `filled`는 `primary`, `outline`·`ghost`는 `neutral`입니다.
|
|
23
|
+
- **`IconButton` 글자** — `label="추가"` 또는 children으로 글자를 넣습니다. 둘을 함께 주면 타입 오류입니다. 글자가 있으면 `aria-label`은 필수가 아니고, 폭은 글자에 맞춥니다. 아이콘 위치는 `iconPosition="start" | "end"`(기본 `start`)입니다. 아이콘만일 때는 지금처럼 정사각형이고 누르는 영역은 44px입니다.
|
|
24
|
+
- **크기 단계 하나** — `appearance`나 `tone`을 준 `IconButton`은 `size`를 `Button`과 같은 5단계로 읽습니다: `xs` 28 · `sm` 30 · `md` 32 · `lg` 36 · `xl` 40(기본 `md`). 같은 `size`면 `Button`·글자 포함 `IconButton`·아이콘만 `IconButton`의 높이와 아이콘 크기·선 굵기가 같습니다(`xs` 14/1.75, `sm`·`md` 16/2, `lg`·`xl` 18/2). 아이콘만은 정사각형이고 누르는 영역은 사방 44px입니다.
|
|
25
|
+
- **옛 크기** — 축을 주지 않은 `IconButton`은 지금처럼 3단계 `sm` 28 · `md` 32 · `lg` 40으로 읽고 출력도 0.18과 같습니다. 새 축으로 옮길 때 `sm` → `xs`, `lg` → `xl`로 바꿉니다(`md`는 그대로). 축 없이 `xs`·`xl`을 주면 타입 오류입니다. 축 없이 글자를 넣으면 높이는 같은 높이의 `Button`(`xs`·`md`·`xl`)을 따릅니다.
|
|
26
|
+
- **옛 값 → 새 값**
|
|
27
|
+
- `Button` `variant`: `primary`·`default` → `filled` + `primary` / `secondary`·`outline`·`subtle` → `outline` + `neutral` / `ghost` → `ghost` + `neutral` / `danger`·`destructive`·`emergency` → `filled` + `danger` / `link` → 대체 없음(링크 컴포넌트 예정)
|
|
28
|
+
- `Button` `size="icon"`·`"icon-xs"` → 새 축 `IconButton` `lg`·`md`(36·32, 높이 그대로), `leadingIcon`·`trailingIcon` → 글자 포함 `IconButton`
|
|
29
|
+
- `IconButton` `variant`: `ghost` → `ghost` + `neutral` / `outline` → `outline` + `neutral` / `subtle` → `filled` + `neutral` / `danger` → `filled` + `danger`. `size`는 `sm` → `xs`, `lg` → `xl`
|
|
30
|
+
- **옮길 때 모양이 바뀌는 곳** — `IconButton` `variant="danger"`(연한 빨강)는 `filled` + `danger`(진한 빨강 채움)로 바뀝니다. `IconButton` `variant="outline"`은 `outline` + `neutral`로 옮기면 아이콘 색이 `text-secondary`에서 `foreground`로, hover 테두리가 `--border-strong`에서 `--border`로 바뀝니다(`Button` `secondary`와 같은 모양). 옛 값을 그대로 쓰는 동안에는 바뀌지 않습니다.
|
|
31
|
+
- `ButtonProps`는 interface에서 type(union)으로 바뀌었습니다. `interface X extends ButtonProps`로 확장하던 곳은 `type X = ButtonProps & { … }`로 바꿔야 합니다.
|
|
32
|
+
|
|
33
|
+
### Patch Changes
|
|
34
|
+
|
|
35
|
+
- 2e965c7: OlunSymbol now has two optical sizes. Above 32px it follows the brand concept sheet (thicker ring, smaller dot clearly apart from the ring); at 32px and below it keeps the current icon geometry.
|
|
36
|
+
|
|
37
|
+
OlunLogo drops the wordmark period when the symbol is shown, so the lime orbit dot is not repeated. The wordmark alone still reads `OLUN.`.
|
|
38
|
+
|
|
39
|
+
- 11d8450: Tabs: 세로 탭 활성 표시가 구분선 위에 겹치도록 수정하고, `sm` 미만에서는 가로 탭 규칙으로 표시합니다. line 탭의 focus-visible ring이 목록 overflow에 잘리지 않도록 ring을 안쪽으로 그립니다.
|
|
40
|
+
- Updated dependencies [89a385a]
|
|
41
|
+
- Updated dependencies [2fa68e9]
|
|
42
|
+
- @olundot/tokens@0.17.0
|
|
43
|
+
|
|
3
44
|
## 0.18.0
|
|
4
45
|
|
|
5
46
|
### Minor Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -31,26 +31,60 @@ declare function useOlunTheme(): UseOlunThemeValue;
|
|
|
31
31
|
|
|
32
32
|
type SurfaceLevel = "surface" | "canvas" | "raised";
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
type ActionAppearance = 'filled' | 'outline' | 'ghost';
|
|
35
|
+
type ActionTone = 'primary' | 'neutral' | 'danger';
|
|
36
|
+
type FilledDefaultActionStyle = {
|
|
37
|
+
appearance?: 'filled';
|
|
38
|
+
tone?: ActionTone;
|
|
39
|
+
} | {
|
|
40
|
+
appearance: 'outline' | 'ghost';
|
|
41
|
+
tone?: 'neutral';
|
|
42
|
+
};
|
|
43
|
+
type GhostDefaultActionStyle = {
|
|
44
|
+
appearance: 'filled';
|
|
45
|
+
tone?: ActionTone;
|
|
46
|
+
} | {
|
|
47
|
+
appearance: 'outline' | 'ghost';
|
|
48
|
+
tone?: 'neutral';
|
|
49
|
+
} | {
|
|
50
|
+
appearance?: never;
|
|
51
|
+
tone: 'neutral';
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
declare const buttonCva: (props?: ({
|
|
55
|
+
size?: "default" | "md" | "xs" | "sm" | "lg" | "xl" | "icon" | "icon-xs" | null | undefined;
|
|
56
|
+
appearance?: "filled" | "outline" | "ghost" | null | undefined;
|
|
57
|
+
tone?: "primary" | "neutral" | "danger" | null | undefined;
|
|
58
|
+
variant?: "default" | "outline" | "ghost" | "primary" | "danger" | "emergency" | "subtle" | "destructive" | "secondary" | "link" | null | undefined;
|
|
37
59
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
60
|
+
type ButtonVariantsOptions = Parameters<typeof buttonCva>[0];
|
|
61
|
+
declare function buttonVariants(options?: ButtonVariantsOptions): string;
|
|
38
62
|
type ButtonVariant = NonNullable<VariantProps<typeof buttonVariants>['variant']>;
|
|
39
63
|
type ButtonSize = NonNullable<VariantProps<typeof buttonVariants>['size']>;
|
|
40
|
-
|
|
64
|
+
type ButtonStyleProps = (FilledDefaultActionStyle & {
|
|
41
65
|
/**
|
|
42
|
-
*
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
66
|
+
* @deprecated Use `appearance` × `tone` instead. Removed in 0.20.
|
|
67
|
+
*/
|
|
68
|
+
variant?: never;
|
|
69
|
+
}) | {
|
|
70
|
+
/**
|
|
71
|
+
* @deprecated Use `appearance` × `tone`: `primary`/`default` → filled + primary ·
|
|
72
|
+
* `secondary`/`outline`/`subtle` → outline + neutral · `ghost` → ghost + neutral ·
|
|
73
|
+
* `danger`/`destructive`/`emergency` → filled + danger · `link` → no Button replacement
|
|
74
|
+
* (a link component is planned). Removed in 0.20.
|
|
47
75
|
*/
|
|
48
|
-
variant?:
|
|
76
|
+
variant?: ButtonVariant | null;
|
|
77
|
+
};
|
|
78
|
+
type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & ButtonStyleProps & {
|
|
79
|
+
/** `icon`·`icon-xs` are deprecated — use IconButton (`lg`·`md`). */
|
|
80
|
+
size?: ButtonSize | null;
|
|
49
81
|
asChild?: boolean;
|
|
82
|
+
/** @deprecated Use IconButton with `label` (or children). Removed in 0.20. */
|
|
50
83
|
leadingIcon?: LucideIcon;
|
|
84
|
+
/** @deprecated Use IconButton with `label` and `iconPosition="end"`. Removed in 0.20. */
|
|
51
85
|
trailingIcon?: LucideIcon;
|
|
52
86
|
loading?: boolean;
|
|
53
|
-
}
|
|
87
|
+
};
|
|
54
88
|
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
55
89
|
|
|
56
90
|
type CopyButtonProps = Omit<ButtonProps, 'children' | 'leadingIcon' | 'loading' | 'size' | 'trailingIcon' | 'variant'> & {
|
|
@@ -62,7 +96,7 @@ type CopyButtonProps = Omit<ButtonProps, 'children' | 'leadingIcon' | 'loading'
|
|
|
62
96
|
variant?: ButtonVariant;
|
|
63
97
|
duration?: number;
|
|
64
98
|
};
|
|
65
|
-
declare const CopyButton: React.ForwardRefExoticComponent<Omit<ButtonProps, "size" | "variant" | "
|
|
99
|
+
declare const CopyButton: React.ForwardRefExoticComponent<Omit<ButtonProps, "size" | "variant" | "children" | "leadingIcon" | "trailingIcon" | "loading"> & {
|
|
66
100
|
value: string;
|
|
67
101
|
label?: React.ReactNode;
|
|
68
102
|
copiedLabel?: React.ReactNode;
|
|
@@ -73,13 +107,13 @@ declare const CopyButton: React.ForwardRefExoticComponent<Omit<ButtonProps, "siz
|
|
|
73
107
|
} & React.RefAttributes<HTMLButtonElement>>;
|
|
74
108
|
|
|
75
109
|
declare const inputVariants: (props?: ({
|
|
76
|
-
size?: "
|
|
110
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
77
111
|
fullWidth?: boolean | null | undefined;
|
|
78
112
|
surface?: SurfaceLevel | null | undefined;
|
|
79
113
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
80
114
|
declare const inputMessageVariants: (props?: ({
|
|
81
115
|
state?: "default" | "error" | "success" | null | undefined;
|
|
82
|
-
size?: "
|
|
116
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
83
117
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
84
118
|
type InputState = NonNullable<VariantProps<typeof inputMessageVariants>["state"]>;
|
|
85
119
|
/** Canonical size type (0.2.0+). Use `size` prop with these values. */
|
|
@@ -169,7 +203,7 @@ interface InlineAlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'childre
|
|
|
169
203
|
declare const InlineAlert: React.ForwardRefExoticComponent<InlineAlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
170
204
|
|
|
171
205
|
declare const textareaVariants: (props?: ({
|
|
172
|
-
size?: "
|
|
206
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
173
207
|
fullWidth?: boolean | null | undefined;
|
|
174
208
|
surface?: SurfaceLevel | null | undefined;
|
|
175
209
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -223,14 +257,14 @@ interface TextareaProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaEl
|
|
|
223
257
|
declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
|
|
224
258
|
|
|
225
259
|
declare const selectVariants: (props?: ({
|
|
226
|
-
size?: "
|
|
260
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
227
261
|
fullWidth?: boolean | null | undefined;
|
|
228
262
|
appearance?: "inline" | "field" | null | undefined;
|
|
229
263
|
surface?: SurfaceLevel | null | undefined;
|
|
230
264
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
231
265
|
declare const selectMessageVariants: (props?: ({
|
|
232
266
|
state?: "default" | "error" | "success" | null | undefined;
|
|
233
|
-
size?: "
|
|
267
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
234
268
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
235
269
|
type SelectState = NonNullable<VariantProps<typeof selectMessageVariants>["state"]>;
|
|
236
270
|
/** Canonical size type (0.2.0+). Use `size` prop with these values. */
|
|
@@ -657,7 +691,7 @@ declare const FormLayout: React.ForwardRefExoticComponent<FormLayoutProps & Reac
|
|
|
657
691
|
* Pure CSS, so SSR and hydration render the same tree at every width (no matchMedia swap).
|
|
658
692
|
*/
|
|
659
693
|
type DialogMobilePresentation = "center" | "sheet";
|
|
660
|
-
declare
|
|
694
|
+
declare function Dialog({ modal, ...props }: React.ComponentProps<typeof Dialog$1.Root>): react_jsx_runtime.JSX.Element;
|
|
661
695
|
declare const DialogTrigger: React.ForwardRefExoticComponent<Dialog$1.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
662
696
|
declare const DialogPortal: React.FC<Dialog$1.DialogPortalProps>;
|
|
663
697
|
declare const DialogClose: React.ForwardRefExoticComponent<Dialog$1.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -1168,7 +1202,7 @@ interface StatusBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
1168
1202
|
declare const StatusBadge: React.ForwardRefExoticComponent<StatusBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
1169
1203
|
|
|
1170
1204
|
declare const notificationBadgeVariants: (props?: ({
|
|
1171
|
-
size?: "
|
|
1205
|
+
size?: "md" | "sm" | null | undefined;
|
|
1172
1206
|
placement?: "none" | "inline" | "corner" | null | undefined;
|
|
1173
1207
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1174
1208
|
type NotificationBadgeSize = NonNullable<VariantProps<typeof notificationBadgeVariants>['size']>;
|
|
@@ -1181,13 +1215,13 @@ declare const NotificationBadge: React.ForwardRefExoticComponent<NotificationBad
|
|
|
1181
1215
|
|
|
1182
1216
|
declare const chipVariants: (props?: ({
|
|
1183
1217
|
variant?: "filter" | "choice" | "removable" | "status-filter" | null | undefined;
|
|
1184
|
-
tone?: "accent" | "
|
|
1185
|
-
size?: "
|
|
1218
|
+
tone?: "accent" | "neutral" | "danger" | "success" | "warning" | "muted" | null | undefined;
|
|
1219
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1186
1220
|
pressed?: boolean | null | undefined;
|
|
1187
1221
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1188
1222
|
declare const chipCountVariants: (props?: ({
|
|
1189
|
-
tone?: "accent" | "
|
|
1190
|
-
size?: "
|
|
1223
|
+
tone?: "accent" | "neutral" | "danger" | "success" | "warning" | "muted" | null | undefined;
|
|
1224
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1191
1225
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1192
1226
|
type ChipVariant = NonNullable<VariantProps<typeof chipVariants>["variant"]>;
|
|
1193
1227
|
type ChipTone = NonNullable<VariantProps<typeof chipVariants>["tone"]>;
|
|
@@ -1201,7 +1235,7 @@ interface ChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>,
|
|
|
1201
1235
|
declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1202
1236
|
|
|
1203
1237
|
declare const emptyStateBaseVariants: (props?: ({
|
|
1204
|
-
size?: "
|
|
1238
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1205
1239
|
bordered?: boolean | null | undefined;
|
|
1206
1240
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1207
1241
|
type EmptyStateTone = "neutral" | "muted" | "raised";
|
|
@@ -1212,7 +1246,7 @@ interface EmptyStateVariantOptions extends VariantProps<typeof emptyStateBaseVar
|
|
|
1212
1246
|
}
|
|
1213
1247
|
declare function emptyStateVariants({ size, tone, surface, bordered, className, }?: EmptyStateVariantOptions): string;
|
|
1214
1248
|
declare const emptyStateIconVariants: (props?: ({
|
|
1215
|
-
size?: "
|
|
1249
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1216
1250
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1217
1251
|
type EmptyStateSize = NonNullable<VariantProps<typeof emptyStateBaseVariants>["size"]>;
|
|
1218
1252
|
interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof emptyStateBaseVariants> {
|
|
@@ -1231,7 +1265,7 @@ interface EmptyStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "ti
|
|
|
1231
1265
|
declare const EmptyState: React.ForwardRefExoticComponent<EmptyStateProps & React.RefAttributes<HTMLDivElement>>;
|
|
1232
1266
|
|
|
1233
1267
|
declare const errorStateVariants: (props?: ({
|
|
1234
|
-
size?: "
|
|
1268
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1235
1269
|
surface?: SurfaceLevel | null | undefined;
|
|
1236
1270
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1237
1271
|
interface ErrorStateProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">, VariantProps<typeof errorStateVariants> {
|
|
@@ -1251,7 +1285,7 @@ declare const skeletonVariants: (props?: ({
|
|
|
1251
1285
|
shape?: "text" | "block" | "circle" | null | undefined;
|
|
1252
1286
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1253
1287
|
declare const spinnerVariants: (props?: ({
|
|
1254
|
-
size?: "
|
|
1288
|
+
size?: "md" | "sm" | "lg" | 16 | 24 | 32 | null | undefined;
|
|
1255
1289
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1256
1290
|
interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof skeletonVariants> {
|
|
1257
1291
|
}
|
|
@@ -1283,16 +1317,29 @@ interface SpinnerProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
1283
1317
|
}
|
|
1284
1318
|
declare const Spinner: React.ForwardRefExoticComponent<SpinnerProps & React.RefAttributes<HTMLSpanElement>>;
|
|
1285
1319
|
|
|
1286
|
-
declare const
|
|
1287
|
-
|
|
1288
|
-
size?: "sm" | "md" | "lg" | null | undefined;
|
|
1320
|
+
declare const iconButtonCva: (props?: ({
|
|
1321
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1289
1322
|
pressed?: boolean | null | undefined;
|
|
1323
|
+
appearance?: "filled" | "outline" | "ghost" | null | undefined;
|
|
1324
|
+
tone?: "primary" | "neutral" | "danger" | null | undefined;
|
|
1325
|
+
variant?: "outline" | "ghost" | "danger" | "subtle" | null | undefined;
|
|
1290
1326
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1327
|
+
type IconButtonAxisSize = "xs" | "sm" | "md" | "lg" | "xl";
|
|
1328
|
+
type IconButtonCvaOptions = NonNullable<Parameters<typeof iconButtonCva>[0]>;
|
|
1329
|
+
type IconButtonVariantsOptions = (IconButtonCvaOptions & {
|
|
1330
|
+
appearance?: null;
|
|
1331
|
+
tone?: null;
|
|
1332
|
+
}) | (Omit<IconButtonCvaOptions, "size"> & {
|
|
1333
|
+
appearance?: ActionAppearance | null;
|
|
1334
|
+
tone?: ActionTone | null;
|
|
1335
|
+
size?: IconButtonAxisSize | null;
|
|
1336
|
+
});
|
|
1337
|
+
declare function iconButtonVariants(options?: IconButtonVariantsOptions): string;
|
|
1291
1338
|
declare const iconButtonBadgeVariants: (props?: ({
|
|
1292
1339
|
tone?: "error" | "info" | null | undefined;
|
|
1293
1340
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1294
|
-
type IconButtonVariant = NonNullable<VariantProps<typeof
|
|
1295
|
-
type IconButtonSize = NonNullable<VariantProps<typeof
|
|
1341
|
+
type IconButtonVariant = NonNullable<VariantProps<typeof iconButtonCva>["variant"]>;
|
|
1342
|
+
type IconButtonSize = NonNullable<VariantProps<typeof iconButtonCva>["size"]>;
|
|
1296
1343
|
type IconButtonBadgeTone = NonNullable<VariantProps<typeof iconButtonBadgeVariants>["tone"]>;
|
|
1297
1344
|
type IconButtonIcon = React.ComponentType<React.SVGProps<SVGSVGElement> & {
|
|
1298
1345
|
size?: number | string;
|
|
@@ -1305,11 +1352,47 @@ type IconButtonAccessibleName = {
|
|
|
1305
1352
|
"aria-label"?: string;
|
|
1306
1353
|
"aria-labelledby": string;
|
|
1307
1354
|
};
|
|
1308
|
-
type
|
|
1355
|
+
type IconButtonOptionalName = {
|
|
1356
|
+
"aria-label"?: string;
|
|
1357
|
+
"aria-labelledby"?: string;
|
|
1358
|
+
};
|
|
1359
|
+
type IconButtonContent = (IconButtonAccessibleName & {
|
|
1360
|
+
label?: never;
|
|
1361
|
+
children?: never;
|
|
1362
|
+
}) | (IconButtonOptionalName & {
|
|
1363
|
+
label: React.ReactNode;
|
|
1364
|
+
children?: never;
|
|
1365
|
+
}) | (IconButtonOptionalName & {
|
|
1366
|
+
children: React.ReactNode;
|
|
1367
|
+
label?: never;
|
|
1368
|
+
});
|
|
1369
|
+
type IconButtonStyleProps = (GhostDefaultActionStyle & {
|
|
1370
|
+
/**
|
|
1371
|
+
* @deprecated Use `appearance` × `tone` instead. Removed in 0.20.
|
|
1372
|
+
*/
|
|
1373
|
+
variant?: never;
|
|
1374
|
+
/** Button's scale: `xs` 28 · `sm` 30 · `md` 32 · `lg` 36 · `xl` 40. */
|
|
1375
|
+
size?: IconButtonAxisSize | null;
|
|
1376
|
+
}) | {
|
|
1377
|
+
/**
|
|
1378
|
+
* @deprecated Use `appearance` × `tone`: `ghost` → ghost + neutral · `outline` →
|
|
1379
|
+
* outline + neutral · `subtle` → filled + neutral · `danger` → filled + danger
|
|
1380
|
+
* (solid red; `danger` keeps its light red until removal). When moving to the new axes,
|
|
1381
|
+
* `size` follows Button's scale: `sm` → `xs`, `lg` → `xl` (`md` stays). Removed in 0.20.
|
|
1382
|
+
*/
|
|
1383
|
+
variant?: IconButtonVariant | null;
|
|
1384
|
+
appearance?: never;
|
|
1385
|
+
tone?: never;
|
|
1386
|
+
/** Legacy scale without `appearance`/`tone`: `sm` 28 · `md` 32 · `lg` 40. */
|
|
1387
|
+
size?: IconButtonSize | null;
|
|
1388
|
+
};
|
|
1389
|
+
type IconButtonProps = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "aria-label" | "aria-labelledby" | "children" | "color"> & IconButtonStyleProps & IconButtonContent & {
|
|
1309
1390
|
icon: IconButtonIcon;
|
|
1310
1391
|
pressed?: boolean;
|
|
1311
1392
|
badge?: React.ReactNode;
|
|
1312
1393
|
badgeTone?: IconButtonBadgeTone;
|
|
1394
|
+
/** Icon side when the button has text. */
|
|
1395
|
+
iconPosition?: "start" | "end";
|
|
1313
1396
|
};
|
|
1314
1397
|
declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1315
1398
|
|
|
@@ -1518,10 +1601,10 @@ interface OTPFieldProps extends Omit<React.FieldsetHTMLAttributes<HTMLFieldSetEl
|
|
|
1518
1601
|
declare const OTPField: React.ForwardRefExoticComponent<OTPFieldProps & React.RefAttributes<HTMLFieldSetElement>>;
|
|
1519
1602
|
|
|
1520
1603
|
declare const searchFieldVariants: (props?: ({
|
|
1521
|
-
size?: "
|
|
1604
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1522
1605
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1523
1606
|
declare const searchFieldInputVariants: (props?: ({
|
|
1524
|
-
size?: "
|
|
1607
|
+
size?: "md" | "sm" | "lg" | null | undefined;
|
|
1525
1608
|
hasClear?: boolean | null | undefined;
|
|
1526
1609
|
surface?: SurfaceLevel | null | undefined;
|
|
1527
1610
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -1545,7 +1628,7 @@ declare const checkboxVariants: (props?: ({
|
|
|
1545
1628
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1546
1629
|
declare const checkboxRootVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
1547
1630
|
declare const checkboxBoxVariants: (props?: ({
|
|
1548
|
-
size?: "
|
|
1631
|
+
size?: "md" | "sm" | null | undefined;
|
|
1549
1632
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
1550
1633
|
declare const checkboxGroupItemVariants: (props?: ({
|
|
1551
1634
|
appearance?: "plain" | "card" | null | undefined;
|
|
@@ -1699,8 +1782,9 @@ declare function TreeView<T extends TreeNode>({ nodes, selectedId, selectionAria
|
|
|
1699
1782
|
/**
|
|
1700
1783
|
* OLUN 브랜드 로고.
|
|
1701
1784
|
*
|
|
1702
|
-
* - symbol: O 원형 테두리 + 우하단 accent-pop 작은 circle
|
|
1785
|
+
* - symbol: O 원형 테두리 + 우하단 accent-pop 작은 circle (32px 초과/이하 두 비율)
|
|
1703
1786
|
* - wordmark: "OLUN" + 마지막 "." 은 accent 색상
|
|
1787
|
+
* - 조합: symbol과 함께 쓰면 wordmark의 "."를 뺀다. 궤도 점은 symbol이 맡는다(점 두 개 경쟁 방지).
|
|
1704
1788
|
*
|
|
1705
1789
|
* 레퍼런스: apps/web/docs/wireframes/ref/shell-wireframe.html Topbar 브랜드 영역.
|
|
1706
1790
|
*/
|