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
@@ -0,0 +1,150 @@
1
+ import { default as React } from 'react';
2
+ /**
3
+ * Modal variant 타입
4
+ * - `scale`: 중앙에서 확대되며 나타남 (기본값)
5
+ * - `slideDown`: 화면 위에서 중앙으로 떨어지며 나타남
6
+ * - `slideUp`: 화면 아래에서 중앙으로 올라오며 나타남
7
+ * - `bottomSheet`: 화면 하단에서 올라오는 drawer 스타일
8
+ */
9
+ type ModalVariant = "scale" | "slideDown" | "slideUp" | "bottomSheet";
10
+ /**
11
+ * 백드롭 인터랙션으로 닫기 옵션
12
+ * - boolean: ESC 키와 외부 클릭 모두 제어
13
+ * - object: 각각 독립적으로 제어
14
+ */
15
+ export type CloseOnBackdropOptions = boolean | {
16
+ /**
17
+ * ESC 키로 닫기 허용
18
+ * @default false (object 사용 시)
19
+ */
20
+ escapeKey?: boolean;
21
+ /**
22
+ * 외부 클릭으로 닫기 허용
23
+ * @default false (object 사용 시)
24
+ */
25
+ clickOutside?: boolean;
26
+ };
27
+ interface ModalRootProps {
28
+ /**
29
+ * Modal 열림/닫힘 상태
30
+ */
31
+ open: boolean;
32
+ /**
33
+ * Modal 상태 변경 핸들러
34
+ */
35
+ onOpenChange: (open: boolean) => void;
36
+ /**
37
+ * Modal 내용
38
+ */
39
+ children: React.ReactNode;
40
+ }
41
+ interface ModalOverlayProps extends React.HTMLAttributes<HTMLDivElement> {
42
+ /**
43
+ * Portal target element (기본값: document.body)
44
+ */
45
+ container?: HTMLElement;
46
+ /**
47
+ * Modal variant
48
+ * - `scale`: 중앙에서 확대되면서 나타남 (기본값)
49
+ * - `slideDown`: 화면 위에서 중앙으로 떨어지며 나타남
50
+ * - `slideUp`: 화면 아래에서 중앙으로 올라오며 나타남
51
+ * - `bottomSheet`: 화면 하단에서 올라오는 drawer 스타일 (모바일 친화적)
52
+ *
53
+ * @default "scale"
54
+ */
55
+ variant?: ModalVariant;
56
+ /**
57
+ * 백드롭 인터랙션으로 닫기 제어
58
+ *
59
+ * - `true`: 외부 클릭과 ESC 키 모두 허용
60
+ * - `false`: 외부 클릭과 ESC 키 모두 비활성화
61
+ * - `{ escapeKey: true }`: ESC 키만 허용
62
+ * - `{ clickOutside: true }`: 외부 클릭만 허용
63
+ * - `{ escapeKey: true, clickOutside: true }`: 모두 허용 (명시적)
64
+ *
65
+ * @default true
66
+ */
67
+ closeOnBackdrop?: CloseOnBackdropOptions;
68
+ /**
69
+ * 배경 스크롤 잠금 비활성화
70
+ * @default false
71
+ */
72
+ disableScrollLock?: boolean;
73
+ /**
74
+ * Modal 너비
75
+ * - scale, slideDown, slideUp: content 크기에 맞춤 (기본값)
76
+ * - bottomSheet: 데스크톱에서 적용 (모바일은 항상 100%)
77
+ *
78
+ * @default undefined (content 크기에 맞춤)
79
+ *
80
+ * @example
81
+ * // 고정 너비
82
+ * <Modal.Overlay width="500px" />
83
+ *
84
+ * // 퍼센트 너비
85
+ * <Modal.Overlay width="80%" />
86
+ */
87
+ width?: string;
88
+ /**
89
+ * Modal 최대 너비
90
+ *
91
+ * @default undefined
92
+ *
93
+ * @example
94
+ * // 최대 너비 제한
95
+ * <Modal.Overlay maxWidth="600px" />
96
+ *
97
+ * // 레이아웃에 맞추기
98
+ * <Modal.Overlay maxWidth="1024px" />
99
+ */
100
+ maxWidth?: string;
101
+ /**
102
+ * z-index 값
103
+ *
104
+ * @default 1000
105
+ *
106
+ * @example
107
+ * // 다른 오버레이보다 위에 표시
108
+ * <Modal.Overlay zIndex={2000} />
109
+ */
110
+ zIndex?: number;
111
+ }
112
+ interface ModalContentProps extends React.HTMLAttributes<HTMLDivElement> {
113
+ /**
114
+ * 강제 마운트 (애니메이션용)
115
+ */
116
+ forceMount?: boolean;
117
+ }
118
+ interface ModalCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
119
+ /**
120
+ * 커스텀 자식 요소 사용
121
+ */
122
+ asChild?: boolean;
123
+ }
124
+ interface ModalTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
125
+ }
126
+ interface ModalDescriptionProps extends React.HTMLAttributes<HTMLDivElement> {
127
+ }
128
+ interface ModalHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
129
+ }
130
+ interface ModalFooterProps extends React.HTMLAttributes<HTMLDivElement> {
131
+ }
132
+ export declare const ModalRoot: React.FC<ModalRootProps>;
133
+ export declare const ModalOverlay: React.ForwardRefExoticComponent<ModalOverlayProps & React.RefAttributes<HTMLDivElement>>;
134
+ export declare const ModalContent: React.ForwardRefExoticComponent<ModalContentProps & React.RefAttributes<HTMLDivElement>>;
135
+ export declare const ModalTitle: React.ForwardRefExoticComponent<ModalTitleProps & React.RefAttributes<HTMLHeadingElement>>;
136
+ export declare const ModalDescription: React.ForwardRefExoticComponent<ModalDescriptionProps & React.RefAttributes<HTMLDivElement>>;
137
+ export declare const ModalClose: React.ForwardRefExoticComponent<ModalCloseProps & React.RefAttributes<HTMLButtonElement>>;
138
+ export declare const ModalFooter: React.ForwardRefExoticComponent<ModalFooterProps & React.RefAttributes<HTMLDivElement>>;
139
+ export declare const ModalHeader: React.ForwardRefExoticComponent<ModalHeaderProps & React.RefAttributes<HTMLDivElement>>;
140
+ export declare const Modal: {
141
+ Root: React.FC<ModalRootProps>;
142
+ Overlay: React.ForwardRefExoticComponent<ModalOverlayProps & React.RefAttributes<HTMLDivElement>>;
143
+ Content: React.ForwardRefExoticComponent<ModalContentProps & React.RefAttributes<HTMLDivElement>>;
144
+ Title: React.ForwardRefExoticComponent<ModalTitleProps & React.RefAttributes<HTMLHeadingElement>>;
145
+ Description: React.ForwardRefExoticComponent<ModalDescriptionProps & React.RefAttributes<HTMLDivElement>>;
146
+ Close: React.ForwardRefExoticComponent<ModalCloseProps & React.RefAttributes<HTMLButtonElement>>;
147
+ Footer: React.ForwardRefExoticComponent<ModalFooterProps & React.RefAttributes<HTMLDivElement>>;
148
+ Header: React.ForwardRefExoticComponent<ModalHeaderProps & React.RefAttributes<HTMLDivElement>>;
149
+ };
150
+ export type { ModalVariant, ModalRootProps, ModalOverlayProps, ModalContentProps, ModalCloseProps, ModalTitleProps, ModalDescriptionProps, ModalHeaderProps, ModalFooterProps, };
@@ -0,0 +1,2 @@
1
+ export { Modal } from './Modal';
2
+ export type { ModalVariant, CloseOnBackdropOptions, ModalRootProps, ModalOverlayProps, ModalContentProps, ModalCloseProps, ModalTitleProps, ModalDescriptionProps, ModalHeaderProps, ModalFooterProps, } from './Modal';
@@ -0,0 +1,38 @@
1
+ import { default as React } from 'react';
2
+ type Placement = "top" | "bottom" | "left" | "right";
3
+ type Align = "start" | "center" | "end";
4
+ type PopoverVariant = "default" | "outlined";
5
+ interface PopoverRootProps {
6
+ children: React.ReactNode;
7
+ position?: Placement;
8
+ align?: Align;
9
+ variant?: PopoverVariant;
10
+ showArrow?: boolean;
11
+ zIndex?: number;
12
+ color?: string;
13
+ bounceCount?: number | "infinite";
14
+ open?: boolean;
15
+ defaultOpen?: boolean;
16
+ onOpenChange?: (open: boolean) => void;
17
+ onClickOutside?: (event: PointerEvent) => void;
18
+ onDismiss?: (event: Event) => void;
19
+ autoClose?: boolean;
20
+ }
21
+ declare function PopoverRoot({ children, position, align, variant, showArrow, zIndex, color, bounceCount, open: controlledOpen, defaultOpen, onOpenChange, onClickOutside, onDismiss, autoClose, }: PopoverRootProps): import("react/jsx-runtime").JSX.Element;
22
+ interface PopoverTriggerProps {
23
+ children: React.ReactElement;
24
+ asChild?: boolean;
25
+ }
26
+ declare function PopoverTrigger({ children, asChild }: PopoverTriggerProps): import("react/jsx-runtime").JSX.Element;
27
+ interface PopoverContentProps {
28
+ children: React.ReactNode;
29
+ className?: string;
30
+ style?: React.CSSProperties;
31
+ }
32
+ declare function PopoverContent({ children, className, style, }: PopoverContentProps): import("react/jsx-runtime").JSX.Element | null;
33
+ export declare const Popover: {
34
+ Root: typeof PopoverRoot;
35
+ Trigger: typeof PopoverTrigger;
36
+ Content: typeof PopoverContent;
37
+ };
38
+ export type { PopoverRootProps, PopoverTriggerProps, PopoverContentProps, Placement, Align, PopoverVariant, };
@@ -0,0 +1,2 @@
1
+ export { Popover } from './Popover';
2
+ export type { PopoverRootProps, PopoverTriggerProps, PopoverContentProps, Placement, Align, PopoverVariant, } from './Popover';
@@ -0,0 +1,76 @@
1
+ import { default as React } from 'react';
2
+ /**
3
+ * Sheet 위치 타입
4
+ */
5
+ export type SheetPosition = "left" | "right";
6
+ /**
7
+ * CloseOnBackdrop 옵션 타입
8
+ */
9
+ export type CloseOnBackdropOptions = boolean | {
10
+ escapeKey?: boolean;
11
+ clickOutside?: boolean;
12
+ };
13
+ interface SheetRootProps {
14
+ children: React.ReactNode;
15
+ position?: SheetPosition;
16
+ closeOnBackdrop?: CloseOnBackdropOptions;
17
+ maxWidth?: string;
18
+ zIndex?: number;
19
+ open?: boolean;
20
+ defaultOpen?: boolean;
21
+ onOpenChange?: (open: boolean) => void;
22
+ }
23
+ declare function SheetRoot({ children, position, closeOnBackdrop, maxWidth, zIndex, open: controlledOpen, defaultOpen, onOpenChange, }: SheetRootProps): import("react/jsx-runtime").JSX.Element;
24
+ interface SheetTriggerProps {
25
+ children: React.ReactElement;
26
+ asChild?: boolean;
27
+ }
28
+ declare function SheetTrigger({ children, asChild }: SheetTriggerProps): import("react/jsx-runtime").JSX.Element;
29
+ interface SheetPortalProps {
30
+ children: React.ReactNode;
31
+ container?: HTMLElement;
32
+ }
33
+ declare function SheetPortal({ children, container }: SheetPortalProps): React.ReactPortal | null;
34
+ interface SheetOverlayProps {
35
+ className?: string;
36
+ style?: React.CSSProperties;
37
+ }
38
+ declare function SheetOverlay({ className, style }: SheetOverlayProps): import("react/jsx-runtime").JSX.Element | null;
39
+ interface SheetContentProps {
40
+ children: React.ReactNode;
41
+ className?: string;
42
+ style?: React.CSSProperties;
43
+ }
44
+ declare function SheetContent({ children, className, style }: SheetContentProps): import("react/jsx-runtime").JSX.Element | null;
45
+ interface SheetHeaderProps {
46
+ children: React.ReactNode;
47
+ className?: string;
48
+ }
49
+ declare function SheetHeader({ children, className }: SheetHeaderProps): import("react/jsx-runtime").JSX.Element;
50
+ interface SheetTitleProps {
51
+ children: React.ReactNode;
52
+ className?: string;
53
+ }
54
+ declare function SheetTitle({ children, className }: SheetTitleProps): import("react/jsx-runtime").JSX.Element;
55
+ interface SheetBodyProps {
56
+ children: React.ReactNode;
57
+ className?: string;
58
+ }
59
+ declare function SheetBody({ children, className }: SheetBodyProps): import("react/jsx-runtime").JSX.Element;
60
+ interface SheetCloseProps {
61
+ children: React.ReactElement;
62
+ asChild?: boolean;
63
+ }
64
+ declare function SheetClose({ children, asChild }: SheetCloseProps): import("react/jsx-runtime").JSX.Element;
65
+ export declare const Sheet: {
66
+ Root: typeof SheetRoot;
67
+ Trigger: typeof SheetTrigger;
68
+ Portal: typeof SheetPortal;
69
+ Overlay: typeof SheetOverlay;
70
+ Content: typeof SheetContent;
71
+ Header: typeof SheetHeader;
72
+ Title: typeof SheetTitle;
73
+ Body: typeof SheetBody;
74
+ Close: typeof SheetClose;
75
+ };
76
+ export type { SheetRootProps, SheetTriggerProps, SheetPortalProps, SheetOverlayProps, SheetContentProps, SheetHeaderProps, SheetTitleProps, SheetBodyProps, SheetCloseProps, };
@@ -0,0 +1,2 @@
1
+ export { Sheet } from './Sheet';
2
+ export type { SheetPosition, CloseOnBackdropOptions, SheetRootProps, SheetTriggerProps, SheetPortalProps, SheetOverlayProps, SheetContentProps, SheetHeaderProps, SheetTitleProps, SheetBodyProps, SheetCloseProps, } from './Sheet';
@@ -0,0 +1,22 @@
1
+ import { default as React } from 'react';
2
+ export interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /**
4
+ * Skeleton 너비
5
+ * @default '100%'
6
+ * @example '200px', '50%', 200
7
+ */
8
+ width?: string | number;
9
+ /**
10
+ * Skeleton 높이
11
+ * @default '1rem'
12
+ * @example '40px', '3rem', 40
13
+ */
14
+ height?: string | number;
15
+ /**
16
+ * Skeleton border radius
17
+ * @default '4px'
18
+ * @example '8px', '50%', 12, 0
19
+ */
20
+ borderRadius?: string | number;
21
+ }
22
+ export declare const Skeleton: React.FC<SkeletonProps>;
@@ -0,0 +1,2 @@
1
+ export { Skeleton } from './Skeleton';
2
+ export type { SkeletonProps } from './Skeleton';
@@ -0,0 +1,89 @@
1
+ import { default as React } from 'react';
2
+ /**
3
+ * SpeedDial 방향
4
+ */
5
+ export type SpeedDialDirection = "up" | "down" | "left" | "right";
6
+ /**
7
+ * SpeedDial Root Props
8
+ */
9
+ export interface SpeedDialRootProps {
10
+ /**
11
+ * SpeedDial 열림/닫힘 상태
12
+ */
13
+ open: boolean;
14
+ /**
15
+ * SpeedDial 상태 변경 핸들러
16
+ */
17
+ onOpenChange: (open: boolean) => void;
18
+ /**
19
+ * Actions가 나타나는 방향
20
+ * @default "up"
21
+ */
22
+ direction?: SpeedDialDirection;
23
+ /**
24
+ * Trigger 버튼 배경 색상 (우선순위 1)
25
+ * @example '#10b981'
26
+ */
27
+ color?: string;
28
+ /**
29
+ * 외부 클릭 시 자동으로 닫기
30
+ * @default true
31
+ */
32
+ closeOnClickOutside?: boolean;
33
+ /**
34
+ * ESC 키로 닫기
35
+ * @default true
36
+ */
37
+ closeOnEscapeKey?: boolean;
38
+ /**
39
+ * 자식 요소
40
+ */
41
+ children: React.ReactNode;
42
+ }
43
+ /**
44
+ * SpeedDial Trigger Props
45
+ */
46
+ export interface SpeedDialTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
47
+ /**
48
+ * 자식 요소
49
+ */
50
+ children: React.ReactNode;
51
+ /**
52
+ * Slot 패턴 활성화 (자식을 루트 요소로 렌더링)
53
+ * @default false
54
+ */
55
+ asChild?: boolean;
56
+ }
57
+ /**
58
+ * SpeedDial Actions Props
59
+ */
60
+ export interface SpeedDialActionsProps extends React.HTMLAttributes<HTMLDivElement> {
61
+ /**
62
+ * 자식 요소
63
+ */
64
+ children: React.ReactNode;
65
+ }
66
+ /**
67
+ * SpeedDial Action Props
68
+ */
69
+ export interface SpeedDialActionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
70
+ /**
71
+ * 자식 요소
72
+ */
73
+ children: React.ReactNode;
74
+ /**
75
+ * Slot 패턴 활성화 (자식을 루트 요소로 렌더링)
76
+ * @default false
77
+ */
78
+ asChild?: boolean;
79
+ }
80
+ export declare const SpeedDialRoot: React.FC<SpeedDialRootProps>;
81
+ export declare const SpeedDialTrigger: React.ForwardRefExoticComponent<SpeedDialTriggerProps & React.RefAttributes<HTMLButtonElement>>;
82
+ export declare const SpeedDialActions: React.ForwardRefExoticComponent<SpeedDialActionsProps & React.RefAttributes<HTMLDivElement>>;
83
+ export declare const SpeedDialAction: React.ForwardRefExoticComponent<SpeedDialActionProps & React.RefAttributes<HTMLButtonElement>>;
84
+ export declare const SpeedDial: {
85
+ Root: React.FC<SpeedDialRootProps>;
86
+ Trigger: React.ForwardRefExoticComponent<SpeedDialTriggerProps & React.RefAttributes<HTMLButtonElement>>;
87
+ Actions: React.ForwardRefExoticComponent<SpeedDialActionsProps & React.RefAttributes<HTMLDivElement>>;
88
+ Action: React.ForwardRefExoticComponent<SpeedDialActionProps & React.RefAttributes<HTMLButtonElement>>;
89
+ };
@@ -0,0 +1,2 @@
1
+ export { SpeedDial, SpeedDialRoot, SpeedDialTrigger, SpeedDialActions, SpeedDialAction, } from './SpeedDial';
2
+ export type { SpeedDialDirection, SpeedDialRootProps, SpeedDialTriggerProps, SpeedDialActionsProps, SpeedDialActionProps, } from './SpeedDial';
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ type SwitchVariant = "default" | "elastic" | "bounce";
3
+ export interface SwitchProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "type"> {
4
+ /**
5
+ * 스위치 모양
6
+ * @default 'default'
7
+ */
8
+ variant?: SwitchVariant;
9
+ /**
10
+ * 스위치 활성화 색상
11
+ * @example '#10b981'
12
+ */
13
+ color?: string;
14
+ }
15
+ export declare const Switch: React.ForwardRefExoticComponent<SwitchProps & React.RefAttributes<HTMLInputElement>>;
16
+ export {};
@@ -0,0 +1,2 @@
1
+ export { Switch } from './Switch';
2
+ export type { SwitchProps } from './Switch';
@@ -0,0 +1,57 @@
1
+ import { default as React } from 'react';
2
+ export interface AutoSizeConfig {
3
+ minRows?: number;
4
+ maxRows?: number;
5
+ }
6
+ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
7
+ /**
8
+ * 자동 포커스 여부
9
+ * @default false
10
+ */
11
+ autoFocus?: boolean;
12
+ /**
13
+ * 자동 텍스트 선택 여부 (autoFocus와 함께 사용)
14
+ * @default false
15
+ */
16
+ autoSelect?: boolean;
17
+ /**
18
+ * 에러 상태
19
+ * @default false
20
+ */
21
+ isError?: boolean;
22
+ /**
23
+ * 에러 메시지 (isError가 명시되지 않으면 에러 상태로 표시)
24
+ */
25
+ errorMessage?: string;
26
+ /**
27
+ * Textarea 테두리/포커스 색상 (우선순위 1)
28
+ * @example '#10b981'
29
+ */
30
+ color?: string;
31
+ /**
32
+ * 최대 글자수 (설정 시 자동으로 글자수 카운터 표시)
33
+ */
34
+ maxLength?: number;
35
+ /**
36
+ * Floating label (focus 전에는 placeholder 위치, focus/값 있을 때 위로 이동)
37
+ */
38
+ label?: string;
39
+ /**
40
+ * 기본 행(줄) 수 (autoSize 사용 시 minRows 기본값으로 사용)
41
+ * @default 4
42
+ */
43
+ rows?: number;
44
+ /**
45
+ * Resize 제어 (autoSize 활성화 시 무시됨)
46
+ * @default 'none'
47
+ */
48
+ resize?: "none" | "vertical" | "horizontal" | "both";
49
+ /**
50
+ * 자동 높이 조절 (내용에 따라 높이가 자동으로 늘어남)
51
+ * - true: rows를 minRows로 사용
52
+ * - { minRows, maxRows }: 세밀한 제어
53
+ * @default false
54
+ */
55
+ autoSize?: boolean | AutoSizeConfig;
56
+ }
57
+ export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
@@ -0,0 +1,2 @@
1
+ export { Textarea } from './Textarea';
2
+ export type { TextareaProps, AutoSizeConfig } from './Textarea';
@@ -0,0 +1,25 @@
1
+ import { default as React } from 'react';
2
+ export type ToastVariant = "default" | "success" | "error" | "warning" | "info";
3
+ export interface ToastOptions {
4
+ duration?: number;
5
+ zIndex?: number;
6
+ }
7
+ export interface Toast {
8
+ id: string;
9
+ message: string;
10
+ variant: ToastVariant;
11
+ duration: number;
12
+ zIndex?: number;
13
+ createdAt: number;
14
+ }
15
+ interface ToastContextValue {
16
+ toasts: Toast[];
17
+ addToast: (message: string, variant?: ToastVariant, options?: ToastOptions) => string;
18
+ }
19
+ export declare function useToastContext(): ToastContextValue;
20
+ export interface ToastProviderProps {
21
+ children: React.ReactNode;
22
+ zIndex?: number;
23
+ }
24
+ export declare function ToastProvider({ children, zIndex }: ToastProviderProps): import("react/jsx-runtime").JSX.Element;
25
+ export {};
@@ -0,0 +1,4 @@
1
+ export { ToastProvider, useToastContext } from './Toast';
2
+ export type { ToastVariant, Toast, ToastOptions, ToastProviderProps, } from './Toast';
3
+ export { useToast } from './useToast';
4
+ export type { UseToastReturn } from './useToast';
@@ -0,0 +1,28 @@
1
+ import { ToastOptions } from './Toast';
2
+ export interface UseToastReturn {
3
+ /**
4
+ * Show a default toast notification
5
+ */
6
+ show: (message: string, options?: ToastOptions) => string;
7
+ /**
8
+ * Show a success toast notification
9
+ */
10
+ success: (message: string, options?: ToastOptions) => string;
11
+ /**
12
+ * Show an error toast notification
13
+ */
14
+ error: (message: string, options?: ToastOptions) => string;
15
+ /**
16
+ * Show a warning toast notification
17
+ */
18
+ warning: (message: string, options?: ToastOptions) => string;
19
+ /**
20
+ * Show an info toast notification
21
+ */
22
+ info: (message: string, options?: ToastOptions) => string;
23
+ }
24
+ /**
25
+ * Hook to use toast notifications
26
+ * Must be used within ToastProvider
27
+ */
28
+ export declare function useToast(): UseToastReturn;
@@ -0,0 +1,66 @@
1
+ import { default as React } from 'react';
2
+ type TooltipVariant = "default" | "outlined";
3
+ type TooltipPosition = "top" | "bottom" | "left" | "right";
4
+ type TooltipAlign = "start" | "center" | "end";
5
+ interface TooltipRootProps {
6
+ children: React.ReactNode;
7
+ position?: TooltipPosition;
8
+ /**
9
+ * 툴팁 정렬 방식
10
+ * - top/bottom일 때: start(왼쪽), center(중앙), end(오른쪽)
11
+ * - left/right일 때: start(위), center(중앙), end(아래)
12
+ * @default 'center'
13
+ */
14
+ align?: TooltipAlign;
15
+ /**
16
+ * 툴팁 스타일 variant
17
+ * @default 'default'
18
+ */
19
+ variant?: TooltipVariant;
20
+ /**
21
+ * 툴팁 배경 색상 (우선순위 1)
22
+ * @example '#3b82f6'
23
+ */
24
+ color?: string;
25
+ /**
26
+ * 화살표 표시 여부
27
+ * @default false
28
+ */
29
+ showArrow?: boolean;
30
+ /**
31
+ * Content에 hover해도 툴팁이 닫히지 않도록 유지 (버튼 클릭 등 인터랙션 가능)
32
+ * @default false
33
+ */
34
+ keepOpen?: boolean;
35
+ /**
36
+ * 툴팁과 트리거 사이의 간격 (px)
37
+ * - number: 모든 방향 동일하게 적용
38
+ * - object: 방향별 개별 설정 가능
39
+ * @default top: 7, bottom: 6, left: 12, right: 6
40
+ * @example
41
+ * offset={8}
42
+ * offset={{ top: 7, bottom: 6, left: 12, right: 6 }}
43
+ */
44
+ offset?: number | {
45
+ top?: number;
46
+ bottom?: number;
47
+ left?: number;
48
+ right?: number;
49
+ };
50
+ }
51
+ declare function TooltipRoot({ children, position, align, variant, color, showArrow, keepOpen, offset, }: TooltipRootProps): import("react/jsx-runtime").JSX.Element;
52
+ interface TooltipTriggerProps {
53
+ children: React.ReactElement;
54
+ asChild?: boolean;
55
+ }
56
+ declare function TooltipTrigger({ children, asChild }: TooltipTriggerProps): import("react/jsx-runtime").JSX.Element;
57
+ interface TooltipContentProps {
58
+ children: React.ReactNode;
59
+ }
60
+ declare function TooltipContent({ children }: TooltipContentProps): React.ReactPortal | null;
61
+ export declare const Tooltip: {
62
+ Root: typeof TooltipRoot;
63
+ Trigger: typeof TooltipTrigger;
64
+ Content: typeof TooltipContent;
65
+ };
66
+ export type { TooltipRootProps, TooltipTriggerProps, TooltipContentProps, TooltipVariant, TooltipPosition, TooltipAlign, };
@@ -0,0 +1,2 @@
1
+ export { Tooltip } from './Tooltip';
2
+ export type { TooltipRootProps, TooltipTriggerProps, TooltipContentProps, TooltipVariant, TooltipPosition, TooltipAlign, } from './Tooltip';