motile-ui 0.9.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.
Files changed (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -0
  3. package/dist/components/Accordion/Accordion.d.ts +36 -0
  4. package/dist/components/Accordion/index.d.ts +2 -0
  5. package/dist/components/Badge/Badge.d.ts +25 -0
  6. package/dist/components/Badge/index.d.ts +2 -0
  7. package/dist/components/Button/Button.d.ts +47 -0
  8. package/dist/components/Button/index.d.ts +2 -0
  9. package/dist/components/Checkbox/Checkbox.d.ts +31 -0
  10. package/dist/components/Checkbox/index.d.ts +2 -0
  11. package/dist/components/Dock/Dock.d.ts +63 -0
  12. package/dist/components/Dock/index.d.ts +2 -0
  13. package/dist/components/Drawer/Drawer.d.ts +97 -0
  14. package/dist/components/Drawer/index.d.ts +2 -0
  15. package/dist/components/Input/Input.d.ts +53 -0
  16. package/dist/components/Input/index.d.ts +2 -0
  17. package/dist/components/Modal/Modal.d.ts +150 -0
  18. package/dist/components/Modal/index.d.ts +2 -0
  19. package/dist/components/Popover/Popover.d.ts +38 -0
  20. package/dist/components/Popover/index.d.ts +2 -0
  21. package/dist/components/Sheet/Sheet.d.ts +76 -0
  22. package/dist/components/Sheet/index.d.ts +2 -0
  23. package/dist/components/Skeleton/Skeleton.d.ts +22 -0
  24. package/dist/components/Skeleton/index.d.ts +2 -0
  25. package/dist/components/SpeedDial/SpeedDial.d.ts +89 -0
  26. package/dist/components/SpeedDial/index.d.ts +2 -0
  27. package/dist/components/Switch/Switch.d.ts +16 -0
  28. package/dist/components/Switch/index.d.ts +2 -0
  29. package/dist/components/Textarea/Textarea.d.ts +57 -0
  30. package/dist/components/Textarea/index.d.ts +2 -0
  31. package/dist/components/Toast/Toast.d.ts +25 -0
  32. package/dist/components/Toast/index.d.ts +4 -0
  33. package/dist/components/Toast/useToast.d.ts +28 -0
  34. package/dist/components/Tooltip/Tooltip.d.ts +66 -0
  35. package/dist/components/Tooltip/index.d.ts +2 -0
  36. package/dist/hooks/useClickOutside.d.ts +74 -0
  37. package/dist/hooks/useEscapeKey.d.ts +29 -0
  38. package/dist/hooks/useHistoryClose.d.ts +50 -0
  39. package/dist/hooks/useScrollLock.d.ts +19 -0
  40. package/dist/index.d.ts +37 -0
  41. package/dist/motile-ui.es.js +2356 -0
  42. package/dist/motile-ui.umd.js +2 -0
  43. package/dist/utils/Slot.d.ts +4 -0
  44. package/package.json +81 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Innopers
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,216 @@
1
+ <div align="center">
2
+ <img src="https://github.com/Innopers.png" alt="Motile UI Logo" width="200"/>
3
+
4
+ # Motile UI
5
+
6
+ **웹뷰 애플리케이션을 위한 모던 React 컴포넌트 라이브러리**
7
+
8
+ [![npm version](https://img.shields.io/npm/v/motile-ui.svg?style=flat-square)](https://www.npmjs.com/package/motile-ui)
9
+ [![npm downloads](https://img.shields.io/npm/dm/motile-ui.svg?style=flat-square)](https://www.npmjs.com/package/motile-ui)
10
+ [![license](https://img.shields.io/npm/l/motile-ui.svg?style=flat-square)](https://github.com/Innopers/motile-ui/blob/main/LICENSE)
11
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue?style=flat-square)](https://www.typescriptlang.org/)
12
+
13
+ <br/>
14
+
15
+ **[🇰🇷 한국어](#-한국어) | [🇺🇸 English](#-english)**
16
+
17
+ </div>
18
+
19
+ ---
20
+
21
+ <br/>
22
+ <br/>
23
+
24
+ # 🇰🇷 한국어
25
+
26
+ ## 📚 목차
27
+
28
+ - [주요 기능](#-주요-기능)
29
+ - [설치](#-설치)
30
+ - [빠른 시작](#-빠른-시작)
31
+ - [컴포넌트](#-컴포넌트)
32
+ - [라이선스](#-라이선스)
33
+
34
+ ---
35
+
36
+ ## ✨ 주요 기능
37
+
38
+ - 🎨 **17개의 고품질 컴포넌트** - 웹뷰 애플리케이션을 위해 세심하게 제작
39
+ - 💪 **TypeScript 우선** - 포괄적인 타입 정의 완벽 지원
40
+ - 🎭 **커스터마이징 가능** - CSS 변수로 쉬운 테마 설정
41
+ - 📱 **모바일 최적화** - 터치 친화적 인터랙션과 반응형 디자인
42
+ - ♿ **접근성** - WCAG 2.1 AA 준수 컴포넌트
43
+ - 🎯 **트리쉐이킹 지원** - 필요한 것만 import
44
+ - 📖 **풍부한 문서** - Storybook을 통한 라이브 예제 제공
45
+
46
+ ---
47
+
48
+ ## 📦 설치
49
+
50
+ ```bash
51
+ # npm
52
+ npm install motile-ui
53
+
54
+ # yarn
55
+ yarn add motile-ui
56
+
57
+ # pnpm
58
+ pnpm add motile-ui
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 🚀 빠른 시작
64
+
65
+ ```tsx
66
+ import { Button, Input, Modal } from 'motile-ui'
67
+
68
+ function App() {
69
+ return (
70
+ <div>
71
+ <Button variant="primary" size="large">
72
+ 클릭하세요
73
+ </Button>
74
+
75
+ <Input
76
+ label="이메일"
77
+ placeholder="이메일을 입력하세요"
78
+ type="email"
79
+ />
80
+
81
+ <Modal open={true} onClose={() => {}}>
82
+ <h2>안녕하세요 Motile UI!</h2>
83
+ </Modal>
84
+ </div>
85
+ )
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ## 🎨 컴포넌트
92
+
93
+ - **Button** - 다양한 variant와 size를 지원하는 버튼
94
+ - **Input** - 라벨과 검증 기능이 있는 텍스트 입력 필드
95
+ - **Textarea** - 여러 줄 텍스트 입력 필드
96
+ - **Checkbox** - 체크박스 입력
97
+ - **Switch** - 토글 스위치
98
+ - **Select** - 드롭다운 선택 메뉴
99
+ - **Badge** - 상태 표시 배지
100
+ - **Toast** - 알림 메시지
101
+ - **Skeleton** - 로딩 상태 플레이스홀더
102
+ - **SpeedDial** - 플로팅 액션 버튼
103
+ - **Modal** - 모달 다이얼로그
104
+ - **Drawer** - 사이드 패널
105
+ - **Sheet** - 하단 시트
106
+ - **Popover** - 팝오버 메뉴
107
+ - **Tooltip** - 툴팁
108
+ - **Accordion** - 접을 수 있는 패널
109
+ - **Dock** - 하단 네비게이션 바
110
+
111
+ ---
112
+
113
+ ## 📄 라이선스
114
+
115
+ MIT © [Innopers](https://github.com/Innopers)
116
+
117
+ <br/>
118
+ <br/>
119
+
120
+ ---
121
+
122
+ <br/>
123
+ <br/>
124
+
125
+ # 🇺🇸 English
126
+
127
+ ## 📚 Table of Contents
128
+
129
+ - [Features](#-features)
130
+ - [Installation](#-installation)
131
+ - [Quick Start](#-quick-start)
132
+ - [Components](#-components)
133
+ - [License](#-license)
134
+
135
+ ---
136
+
137
+ ## ✨ Features
138
+
139
+ - 🎨 **17 High-Quality Components** - Carefully crafted for webview applications
140
+ - 💪 **TypeScript First** - Full TypeScript support with comprehensive type definitions
141
+ - 🎭 **Customizable** - Easy theming with CSS variables
142
+ - 📱 **Mobile Optimized** - Touch-friendly interactions and responsive design
143
+ - ♿ **Accessible** - WCAG 2.1 AA compliant components
144
+ - 🎯 **Tree-shakeable** - Import only what you need
145
+ - 📖 **Well Documented** - Comprehensive docs with live examples via Storybook
146
+
147
+ ---
148
+
149
+ ## 📦 Installation
150
+
151
+ ```bash
152
+ # npm
153
+ npm install motile-ui
154
+
155
+ # yarn
156
+ yarn add motile-ui
157
+
158
+ # pnpm
159
+ pnpm add motile-ui
160
+ ```
161
+
162
+ ---
163
+
164
+ ## 🚀 Quick Start
165
+
166
+ ```tsx
167
+ import { Button, Input, Modal } from 'motile-ui'
168
+
169
+ function App() {
170
+ return (
171
+ <div>
172
+ <Button variant="primary" size="large">
173
+ Click me
174
+ </Button>
175
+
176
+ <Input
177
+ label="Email"
178
+ placeholder="Enter your email"
179
+ type="email"
180
+ />
181
+
182
+ <Modal open={true} onClose={() => {}}>
183
+ <h2>Hello Motile UI!</h2>
184
+ </Modal>
185
+ </div>
186
+ )
187
+ }
188
+ ```
189
+
190
+ ---
191
+
192
+ ## 🎨 Components
193
+
194
+ - **Button** - Button with various variants and sizes
195
+ - **Input** - Text input field with label and validation
196
+ - **Textarea** - Multi-line text input field
197
+ - **Checkbox** - Checkbox input
198
+ - **Switch** - Toggle switch
199
+ - **Select** - Dropdown select menu
200
+ - **Badge** - Status badge indicator
201
+ - **Toast** - Notification message
202
+ - **Skeleton** - Loading state placeholder
203
+ - **SpeedDial** - Floating action button
204
+ - **Modal** - Modal dialog
205
+ - **Drawer** - Side panel
206
+ - **Sheet** - Bottom sheet
207
+ - **Popover** - Popover menu
208
+ - **Tooltip** - Tooltip
209
+ - **Accordion** - Collapsible panel
210
+ - **Dock** - Bottom navigation bar
211
+
212
+ ---
213
+
214
+ ## 📄 License
215
+
216
+ MIT © [Innopers](https://github.com/Innopers)
@@ -0,0 +1,36 @@
1
+ import { default as React } from 'react';
2
+ export type AccordionVariant = "default" | "outlined";
3
+ export interface AccordionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
4
+ variant?: AccordionVariant;
5
+ defaultExpanded?: boolean;
6
+ expanded?: boolean;
7
+ onChange?: (expanded: boolean) => void;
8
+ disabled?: boolean;
9
+ children: React.ReactNode;
10
+ /**
11
+ * children을 wrapper 없이 직접 렌더링
12
+ * @default false
13
+ */
14
+ asChild?: boolean;
15
+ }
16
+ export interface AccordionHeaderProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
17
+ children: React.ReactNode;
18
+ /**
19
+ * children을 wrapper 없이 직접 렌더링
20
+ * true일 경우, children이 직접 button 역할을 함
21
+ * @default false
22
+ */
23
+ asChild?: boolean;
24
+ }
25
+ export interface AccordionContentProps extends React.HTMLAttributes<HTMLDivElement> {
26
+ children: React.ReactNode;
27
+ /**
28
+ * children을 wrapper 없이 직접 렌더링
29
+ * @default false
30
+ */
31
+ asChild?: boolean;
32
+ }
33
+ export declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>> & {
34
+ Header: React.ForwardRefExoticComponent<AccordionHeaderProps & React.RefAttributes<HTMLButtonElement>>;
35
+ Content: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
36
+ };
@@ -0,0 +1,2 @@
1
+ export { Accordion } from './Accordion';
2
+ export type { AccordionProps, AccordionHeaderProps, AccordionContentProps, } from './Accordion';
@@ -0,0 +1,25 @@
1
+ import { default as React } from 'react';
2
+ type BadgeVariant = "primary" | "secondary" | "outlined" | "dot" | "shimmer";
3
+ type BadgeSize = "large" | "medium" | "small";
4
+ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
5
+ /**
6
+ * Badge 스타일 variant
7
+ */
8
+ variant?: BadgeVariant;
9
+ /**
10
+ * Badge 크기
11
+ * @default 'medium'
12
+ */
13
+ size?: BadgeSize;
14
+ /**
15
+ * Badge 배경 색상 (우선순위 1)
16
+ * @example '#10b981'
17
+ */
18
+ color?: string;
19
+ /**
20
+ * Badge 내용
21
+ */
22
+ children?: React.ReactNode;
23
+ }
24
+ export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
25
+ export {};
@@ -0,0 +1,2 @@
1
+ export { Badge } from './Badge';
2
+ export type { BadgeProps } from './Badge';
@@ -0,0 +1,47 @@
1
+ import { default as React } from 'react';
2
+ type ButtonVariant = "primary" | "secondary" | "default";
3
+ type ButtonSize = "large" | "medium" | "small";
4
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
5
+ /**
6
+ * 버튼 스타일 variant
7
+ * @default 'primary'
8
+ */
9
+ variant?: ButtonVariant;
10
+ /**
11
+ * 버튼 크기
12
+ * @default 'large'
13
+ */
14
+ size?: ButtonSize;
15
+ /**
16
+ * 전체 너비 사용 여부
17
+ * @default size === "large" ? true : false
18
+ */
19
+ fullWidth?: boolean;
20
+ /**
21
+ * 버튼 배경 색상 (우선순위 1)
22
+ * @example '#10b981'
23
+ */
24
+ color?: string;
25
+ /**
26
+ * 터치 디바이스에서도 hover 효과 활성화 여부
27
+ * @default false
28
+ */
29
+ hoverOnTouch?: boolean;
30
+ /**
31
+ * 로딩 상태 (로딩 중일 때 버튼 비활성화)
32
+ * @default false
33
+ */
34
+ isLoading?: boolean;
35
+ /**
36
+ * children을 wrapper 없이 직접 렌더링
37
+ * true일 경우, children이 직접 button 역할을 함
38
+ * @default false
39
+ */
40
+ asChild?: boolean;
41
+ /**
42
+ * 버튼 내용
43
+ */
44
+ children: React.ReactNode;
45
+ }
46
+ export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
47
+ export {};
@@ -0,0 +1,2 @@
1
+ export { Button } from './Button';
2
+ export type { ButtonProps } from './Button';
@@ -0,0 +1,31 @@
1
+ import { default as React } from 'react';
2
+ type CheckboxVariant = "default" | "rounded" | "square";
3
+ type CheckboxSize = "large" | "medium" | "small";
4
+ export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type" | "size"> {
5
+ /**
6
+ * 체크박스 스타일 variant
7
+ * @default 'default'
8
+ */
9
+ variant?: CheckboxVariant;
10
+ /**
11
+ * 체크박스 크기
12
+ * @default 'medium'
13
+ */
14
+ size?: CheckboxSize;
15
+ /**
16
+ * 체크박스 옆 라벨
17
+ */
18
+ label?: string;
19
+ /**
20
+ * 체크박스 색상
21
+ * @example '#10b981'
22
+ */
23
+ color?: string;
24
+ /**
25
+ * 체크 아이콘을 항상 표시 (회색 배경 → 색상 배경)
26
+ * @default false
27
+ */
28
+ filled?: boolean;
29
+ }
30
+ export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
31
+ export {};
@@ -0,0 +1,2 @@
1
+ export { Checkbox } from './Checkbox';
2
+ export type { CheckboxProps } from './Checkbox';
@@ -0,0 +1,63 @@
1
+ import { default as React } from 'react';
2
+ /**
3
+ * Dock Position
4
+ */
5
+ export type DockPosition = "top" | "bottom" | "left" | "right";
6
+ /**
7
+ * Dock Root Props
8
+ */
9
+ export interface DockRootProps extends React.HTMLAttributes<HTMLDivElement> {
10
+ /**
11
+ * 자식 요소
12
+ */
13
+ children: React.ReactNode;
14
+ /**
15
+ * Dock 위치
16
+ * @default "bottom"
17
+ */
18
+ position?: DockPosition;
19
+ /**
20
+ * z-index 값
21
+ * @default 1000
22
+ */
23
+ zIndex?: number;
24
+ /**
25
+ * Glow effect 기본 색상 (모든 Item에 적용)
26
+ * 우선순위: Item.color > Root.color > --motile-ui-dock > --motile-theme > #3b82f6
27
+ * @example '#3b82f6'
28
+ */
29
+ color?: string;
30
+ }
31
+ /**
32
+ * Dock Item Props
33
+ */
34
+ export interface DockItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
35
+ /**
36
+ * 아이콘 (ReactNode)
37
+ */
38
+ icon?: React.ReactNode;
39
+ /**
40
+ * 라벨 (툴팁)
41
+ */
42
+ label?: string;
43
+ /**
44
+ * 커스텀 자식 요소 사용
45
+ */
46
+ asChild?: boolean;
47
+ /**
48
+ * Glow effect 개별 색상 (Root.color를 override)
49
+ * 우선순위: Item.color > Root.color > --motile-ui-dock > --motile-theme > #3b82f6
50
+ * @example '#3b82f6'
51
+ */
52
+ color?: string;
53
+ }
54
+ export declare const DockRoot: React.ForwardRefExoticComponent<DockRootProps & React.RefAttributes<HTMLDivElement>>;
55
+ export declare const DockItem: React.ForwardRefExoticComponent<DockItemProps & React.RefAttributes<HTMLButtonElement>>;
56
+ export interface DockSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
57
+ }
58
+ export declare const DockSeparator: React.ForwardRefExoticComponent<DockSeparatorProps & React.RefAttributes<HTMLDivElement>>;
59
+ export declare const Dock: {
60
+ Root: React.ForwardRefExoticComponent<DockRootProps & React.RefAttributes<HTMLDivElement>>;
61
+ Item: React.ForwardRefExoticComponent<DockItemProps & React.RefAttributes<HTMLButtonElement>>;
62
+ Separator: React.ForwardRefExoticComponent<DockSeparatorProps & React.RefAttributes<HTMLDivElement>>;
63
+ };
@@ -0,0 +1,2 @@
1
+ export { Dock, DockRoot, DockItem, DockSeparator } from './Dock';
2
+ export type { DockRootProps, DockItemProps, DockSeparatorProps, DockPosition, } from './Dock';
@@ -0,0 +1,97 @@
1
+ import { default as React } from 'react';
2
+ /**
3
+ * 백드롭 인터랙션으로 닫기 옵션
4
+ */
5
+ export type CloseOnBackdropOptions = boolean | {
6
+ escapeKey?: boolean;
7
+ clickOutside?: boolean;
8
+ };
9
+ export interface DrawerRootProps {
10
+ children: React.ReactNode;
11
+ /**
12
+ * Drawer 열림/닫힘 상태 (controlled)
13
+ */
14
+ open?: boolean;
15
+ /**
16
+ * Drawer 기본 열림 상태 (uncontrolled)
17
+ * @default false
18
+ */
19
+ defaultOpen?: boolean;
20
+ /**
21
+ * 상태 변경 시 호출되는 콜백
22
+ */
23
+ onOpenChange?: (open: boolean) => void;
24
+ /**
25
+ * 백드롭 인터랙션으로 닫기 허용
26
+ * @default true
27
+ */
28
+ closeOnBackdrop?: CloseOnBackdropOptions;
29
+ /**
30
+ * 드래그로 닫기 허용
31
+ * @default true
32
+ */
33
+ closeOnDrag?: boolean;
34
+ /**
35
+ * Drawer 최대 높이
36
+ * @default '70dvh'
37
+ */
38
+ maxHeight?: string;
39
+ /**
40
+ * Drawer 너비 (데스크톱)
41
+ * @default '480px'
42
+ */
43
+ width?: string;
44
+ /**
45
+ * Drawer 최대 컨테이너 너비 (데스크톱 전용)
46
+ */
47
+ maxWidth?: string;
48
+ /**
49
+ * z-index 값
50
+ * @default 9999
51
+ */
52
+ zIndex?: number;
53
+ }
54
+ export declare const DrawerRoot: React.FC<DrawerRootProps>;
55
+ export interface DrawerTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
56
+ children: React.ReactElement;
57
+ asChild?: boolean;
58
+ }
59
+ export declare const DrawerTrigger: React.ForwardRefExoticComponent<DrawerTriggerProps & React.RefAttributes<HTMLButtonElement>>;
60
+ export interface DrawerPortalProps {
61
+ children: React.ReactNode;
62
+ container?: HTMLElement;
63
+ }
64
+ export declare const DrawerPortal: React.FC<DrawerPortalProps>;
65
+ export interface DrawerOverlayProps extends React.HTMLAttributes<HTMLDivElement> {
66
+ }
67
+ export declare const DrawerOverlay: React.ForwardRefExoticComponent<DrawerOverlayProps & React.RefAttributes<HTMLDivElement>>;
68
+ export interface DrawerContentProps extends React.HTMLAttributes<HTMLDivElement> {
69
+ }
70
+ export declare const DrawerContent: React.ForwardRefExoticComponent<DrawerContentProps & React.RefAttributes<HTMLDivElement>>;
71
+ export interface DrawerHandleProps extends React.HTMLAttributes<HTMLDivElement> {
72
+ }
73
+ export declare const DrawerHandle: React.ForwardRefExoticComponent<DrawerHandleProps & React.RefAttributes<HTMLDivElement>>;
74
+ export interface DrawerTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
75
+ children: React.ReactNode;
76
+ asChild?: boolean;
77
+ }
78
+ export declare const DrawerTitle: React.ForwardRefExoticComponent<DrawerTitleProps & React.RefAttributes<HTMLHeadingElement>>;
79
+ export interface DrawerBodyProps extends React.HTMLAttributes<HTMLDivElement> {
80
+ }
81
+ export declare const DrawerBody: React.ForwardRefExoticComponent<DrawerBodyProps & React.RefAttributes<HTMLDivElement>>;
82
+ export interface DrawerCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
83
+ children: React.ReactElement;
84
+ asChild?: boolean;
85
+ }
86
+ export declare const DrawerClose: React.ForwardRefExoticComponent<DrawerCloseProps & React.RefAttributes<HTMLButtonElement>>;
87
+ export declare const Drawer: {
88
+ Root: React.FC<DrawerRootProps>;
89
+ Trigger: React.ForwardRefExoticComponent<DrawerTriggerProps & React.RefAttributes<HTMLButtonElement>>;
90
+ Portal: React.FC<DrawerPortalProps>;
91
+ Overlay: React.ForwardRefExoticComponent<DrawerOverlayProps & React.RefAttributes<HTMLDivElement>>;
92
+ Content: React.ForwardRefExoticComponent<DrawerContentProps & React.RefAttributes<HTMLDivElement>>;
93
+ Handle: React.ForwardRefExoticComponent<DrawerHandleProps & React.RefAttributes<HTMLDivElement>>;
94
+ Title: React.ForwardRefExoticComponent<DrawerTitleProps & React.RefAttributes<HTMLHeadingElement>>;
95
+ Body: React.ForwardRefExoticComponent<DrawerBodyProps & React.RefAttributes<HTMLDivElement>>;
96
+ Close: React.ForwardRefExoticComponent<DrawerCloseProps & React.RefAttributes<HTMLButtonElement>>;
97
+ };
@@ -0,0 +1,2 @@
1
+ export { Drawer } from './Drawer';
2
+ export type { CloseOnBackdropOptions, DrawerRootProps, DrawerTriggerProps, DrawerPortalProps, DrawerOverlayProps, DrawerContentProps, DrawerHandleProps, DrawerTitleProps, DrawerBodyProps, DrawerCloseProps, } from './Drawer';
@@ -0,0 +1,53 @@
1
+ import { default as React } from 'react';
2
+ export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
3
+ /**
4
+ * 자동 포커스 여부
5
+ * @default false
6
+ */
7
+ autoFocus?: boolean;
8
+ /**
9
+ * 자동 텍스트 선택 여부 (autoFocus와 함께 사용)
10
+ * @default false
11
+ */
12
+ autoSelect?: boolean;
13
+ /**
14
+ * Input 스타일 variant
15
+ * @default 'default'
16
+ */
17
+ variant?: "default" | "underline";
18
+ /**
19
+ * 에러 상태
20
+ * @default false
21
+ */
22
+ isError?: boolean;
23
+ /**
24
+ * 에러 메시지 (isError가 명시되지 않으면 에러 상태로 표시)
25
+ */
26
+ errorMessage?: string;
27
+ /**
28
+ * Clear 버튼 클릭 핸들러
29
+ */
30
+ onClear?: () => void;
31
+ /**
32
+ * 왼쪽 아이콘
33
+ */
34
+ leftIcon?: React.ReactNode;
35
+ /**
36
+ * 오른쪽 아이콘
37
+ */
38
+ rightIcon?: React.ReactNode;
39
+ /**
40
+ * Input 테두리/포커스 색상 (우선순위 1)
41
+ * @example '#10b981'
42
+ */
43
+ color?: string;
44
+ /**
45
+ * 최대 글자수 (설정 시 자동으로 글자수 카운터 표시)
46
+ */
47
+ maxLength?: number;
48
+ /**
49
+ * Floating label (focus 전에는 placeholder 위치, focus/값 있을 때 위로 이동)
50
+ */
51
+ label?: string;
52
+ }
53
+ export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,2 @@
1
+ export { Input } from './Input';
2
+ export type { InputProps } from './Input';