@hua-labs/ui 1.0.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 (153) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +363 -0
  3. package/dist/components/Accordion.d.ts +39 -0
  4. package/dist/components/Accordion.d.ts.map +1 -0
  5. package/dist/components/Accordion.js +84 -0
  6. package/dist/components/Alert.d.ts +17 -0
  7. package/dist/components/Alert.d.ts.map +1 -0
  8. package/dist/components/Alert.js +61 -0
  9. package/dist/components/Avatar.d.ts +13 -0
  10. package/dist/components/Avatar.d.ts.map +1 -0
  11. package/dist/components/Avatar.js +18 -0
  12. package/dist/components/Badge.d.ts +7 -0
  13. package/dist/components/Badge.d.ts.map +1 -0
  14. package/dist/components/Badge.js +15 -0
  15. package/dist/components/BottomSheet.d.ts +29 -0
  16. package/dist/components/BottomSheet.d.ts.map +1 -0
  17. package/dist/components/BottomSheet.js +96 -0
  18. package/dist/components/Breadcrumb.d.ts +27 -0
  19. package/dist/components/Breadcrumb.d.ts.map +1 -0
  20. package/dist/components/Breadcrumb.js +47 -0
  21. package/dist/components/Button.d.ts +9 -0
  22. package/dist/components/Button.d.ts.map +1 -0
  23. package/dist/components/Button.js +23 -0
  24. package/dist/components/Card.d.ts +21 -0
  25. package/dist/components/Card.d.ts.map +1 -0
  26. package/dist/components/Card.js +18 -0
  27. package/dist/components/ChatMessage.d.ts +35 -0
  28. package/dist/components/ChatMessage.d.ts.map +1 -0
  29. package/dist/components/ChatMessage.js +59 -0
  30. package/dist/components/Checkbox.d.ts +12 -0
  31. package/dist/components/Checkbox.d.ts.map +1 -0
  32. package/dist/components/Checkbox.js +30 -0
  33. package/dist/components/Command.d.ts +36 -0
  34. package/dist/components/Command.d.ts.map +1 -0
  35. package/dist/components/Command.js +119 -0
  36. package/dist/components/ConfirmModal.d.ts +26 -0
  37. package/dist/components/ConfirmModal.d.ts.map +1 -0
  38. package/dist/components/ConfirmModal.js +53 -0
  39. package/dist/components/Container.d.ts +10 -0
  40. package/dist/components/Container.d.ts.map +1 -0
  41. package/dist/components/Container.js +23 -0
  42. package/dist/components/ContextMenu.d.ts +26 -0
  43. package/dist/components/ContextMenu.d.ts.map +1 -0
  44. package/dist/components/ContextMenu.js +110 -0
  45. package/dist/components/Divider.d.ts +11 -0
  46. package/dist/components/Divider.d.ts.map +1 -0
  47. package/dist/components/Divider.js +39 -0
  48. package/dist/components/Drawer.d.ts +32 -0
  49. package/dist/components/Drawer.d.ts.map +1 -0
  50. package/dist/components/Drawer.js +79 -0
  51. package/dist/components/Dropdown.d.ts +28 -0
  52. package/dist/components/Dropdown.d.ts.map +1 -0
  53. package/dist/components/Dropdown.js +174 -0
  54. package/dist/components/EmotionAnalysis.d.ts +25 -0
  55. package/dist/components/EmotionAnalysis.d.ts.map +1 -0
  56. package/dist/components/EmotionAnalysis.js +40 -0
  57. package/dist/components/EmotionButton.d.ts +9 -0
  58. package/dist/components/EmotionButton.d.ts.map +1 -0
  59. package/dist/components/EmotionButton.js +16 -0
  60. package/dist/components/EmotionMeter.d.ts +10 -0
  61. package/dist/components/EmotionMeter.d.ts.map +1 -0
  62. package/dist/components/EmotionMeter.js +21 -0
  63. package/dist/components/EmotionSelector.d.ts +20 -0
  64. package/dist/components/EmotionSelector.d.ts.map +1 -0
  65. package/dist/components/EmotionSelector.js +46 -0
  66. package/dist/components/Grid.d.ts +11 -0
  67. package/dist/components/Grid.d.ts.map +1 -0
  68. package/dist/components/Grid.js +44 -0
  69. package/dist/components/Icon.d.ts +26 -0
  70. package/dist/components/Icon.d.ts.map +1 -0
  71. package/dist/components/Icon.js +48 -0
  72. package/dist/components/Input.d.ts +12 -0
  73. package/dist/components/Input.d.ts.map +1 -0
  74. package/dist/components/Input.js +25 -0
  75. package/dist/components/LanguageToggle.d.ts +17 -0
  76. package/dist/components/LanguageToggle.d.ts.map +1 -0
  77. package/dist/components/LanguageToggle.js +61 -0
  78. package/dist/components/LoadingSpinner.d.ts +10 -0
  79. package/dist/components/LoadingSpinner.d.ts.map +1 -0
  80. package/dist/components/LoadingSpinner.js +37 -0
  81. package/dist/components/Menu.d.ts +29 -0
  82. package/dist/components/Menu.d.ts.map +1 -0
  83. package/dist/components/Menu.js +122 -0
  84. package/dist/components/Modal.d.ts +15 -0
  85. package/dist/components/Modal.d.ts.map +1 -0
  86. package/dist/components/Modal.js +62 -0
  87. package/dist/components/PageTransition.d.ts +18 -0
  88. package/dist/components/PageTransition.d.ts.map +1 -0
  89. package/dist/components/PageTransition.js +39 -0
  90. package/dist/components/Pagination.d.ts +21 -0
  91. package/dist/components/Pagination.d.ts.map +1 -0
  92. package/dist/components/Pagination.js +87 -0
  93. package/dist/components/Popover.d.ts +16 -0
  94. package/dist/components/Popover.d.ts.map +1 -0
  95. package/dist/components/Popover.js +159 -0
  96. package/dist/components/Progress.d.ts +23 -0
  97. package/dist/components/Progress.d.ts.map +1 -0
  98. package/dist/components/Progress.js +51 -0
  99. package/dist/components/Radio.d.ts +12 -0
  100. package/dist/components/Radio.d.ts.map +1 -0
  101. package/dist/components/Radio.js +29 -0
  102. package/dist/components/ScrollArea.d.ts +16 -0
  103. package/dist/components/ScrollArea.d.ts.map +1 -0
  104. package/dist/components/ScrollArea.js +42 -0
  105. package/dist/components/ScrollIndicator.d.ts +17 -0
  106. package/dist/components/ScrollIndicator.d.ts.map +1 -0
  107. package/dist/components/ScrollIndicator.js +60 -0
  108. package/dist/components/ScrollProgress.d.ts +12 -0
  109. package/dist/components/ScrollProgress.d.ts.map +1 -0
  110. package/dist/components/ScrollProgress.js +39 -0
  111. package/dist/components/ScrollToTop.d.ts +15 -0
  112. package/dist/components/ScrollToTop.d.ts.map +1 -0
  113. package/dist/components/ScrollToTop.js +46 -0
  114. package/dist/components/Select.d.ts +17 -0
  115. package/dist/components/Select.d.ts.map +1 -0
  116. package/dist/components/Select.js +29 -0
  117. package/dist/components/Skeleton.d.ts +19 -0
  118. package/dist/components/Skeleton.d.ts.map +1 -0
  119. package/dist/components/Skeleton.js +71 -0
  120. package/dist/components/Stack.d.ts +11 -0
  121. package/dist/components/Stack.d.ts.map +1 -0
  122. package/dist/components/Stack.js +34 -0
  123. package/dist/components/Switch.d.ts +12 -0
  124. package/dist/components/Switch.d.ts.map +1 -0
  125. package/dist/components/Switch.js +29 -0
  126. package/dist/components/Tabs.d.ts +36 -0
  127. package/dist/components/Tabs.d.ts.map +1 -0
  128. package/dist/components/Tabs.js +117 -0
  129. package/dist/components/Textarea.d.ts +11 -0
  130. package/dist/components/Textarea.d.ts.map +1 -0
  131. package/dist/components/Textarea.js +31 -0
  132. package/dist/components/ThemeProvider.d.ts +19 -0
  133. package/dist/components/ThemeProvider.d.ts.map +1 -0
  134. package/dist/components/ThemeProvider.js +76 -0
  135. package/dist/components/ThemeToggle.d.ts +14 -0
  136. package/dist/components/ThemeToggle.d.ts.map +1 -0
  137. package/dist/components/ThemeToggle.js +49 -0
  138. package/dist/components/Toast.d.ts +32 -0
  139. package/dist/components/Toast.d.ts.map +1 -0
  140. package/dist/components/Toast.js +138 -0
  141. package/dist/components/Tooltip.d.ts +14 -0
  142. package/dist/components/Tooltip.d.ts.map +1 -0
  143. package/dist/components/Tooltip.js +102 -0
  144. package/dist/index.d.ts +50 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +49 -0
  147. package/dist/lib/icons.d.ts +43 -0
  148. package/dist/lib/icons.d.ts.map +1 -0
  149. package/dist/lib/icons.js +321 -0
  150. package/dist/lib/utils.d.ts +3 -0
  151. package/dist/lib/utils.d.ts.map +1 -0
  152. package/dist/lib/utils.js +5 -0
  153. package/package.json +67 -0
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ export interface ConfirmModalProps {
3
+ isOpen: boolean;
4
+ onClose: () => void;
5
+ onConfirm: () => void;
6
+ title: string;
7
+ message: string;
8
+ warning?: string;
9
+ confirmText?: string;
10
+ cancelText?: string;
11
+ confirmButtonText?: string;
12
+ type?: "danger" | "warning" | "info" | "success" | "error";
13
+ loading?: boolean;
14
+ disabled?: boolean;
15
+ showInput?: boolean;
16
+ inputValue?: string;
17
+ onInputChange?: (value: string) => void;
18
+ inputPlaceholder?: string;
19
+ inputLabel?: string;
20
+ requiredInputValue?: string;
21
+ showCancel?: boolean;
22
+ size?: "sm" | "md" | "lg" | "xl" | "2xl";
23
+ }
24
+ declare const ConfirmModal: React.ForwardRefExoticComponent<ConfirmModalProps & React.RefAttributes<HTMLDivElement>>;
25
+ export { ConfirmModal };
26
+ //# sourceMappingURL=ConfirmModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmModal.d.ts","sourceRoot":"","sources":["../../src/components/ConfirmModal.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAA;CACzC;AAED,QAAA,MAAM,YAAY,0FAkLjB,CAAA;AAGD,OAAO,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,53 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/utils";
5
+ import { Modal } from "./Modal";
6
+ import { Button } from "./Button";
7
+ const ConfirmModal = React.forwardRef(({ isOpen, onClose, onConfirm, title, message, warning, confirmText = "확인", cancelText = "취소", confirmButtonText, type = "danger", loading = false, disabled = false, showInput = false, inputValue = "", onInputChange, inputPlaceholder, inputLabel, requiredInputValue, showCancel = true, size = "md" }, ref) => {
8
+ // 타입별 아이콘과 색상
9
+ const typeConfig = {
10
+ danger: {
11
+ icon: (_jsx("svg", { className: "h-6 w-6 text-red-600 dark:text-red-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z" }) })),
12
+ bgColor: "bg-red-100 dark:bg-red-900/20",
13
+ buttonColor: "bg-red-600 hover:bg-red-700 focus:ring-red-500",
14
+ textColor: "text-red-600 dark:text-red-400"
15
+ },
16
+ warning: {
17
+ icon: (_jsx("svg", { className: "h-6 w-6 text-yellow-600 dark:text-yellow-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z" }) })),
18
+ bgColor: "bg-yellow-100 dark:bg-yellow-900/20",
19
+ buttonColor: "bg-yellow-600 hover:bg-yellow-700 focus:ring-yellow-500",
20
+ textColor: "text-yellow-600 dark:text-yellow-400"
21
+ },
22
+ info: {
23
+ icon: (_jsx("svg", { className: "h-6 w-6 text-blue-600 dark:text-blue-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) })),
24
+ bgColor: "bg-blue-100 dark:bg-blue-900/20",
25
+ buttonColor: "bg-blue-600 hover:bg-blue-700 focus:ring-blue-500",
26
+ textColor: "text-blue-600 dark:text-blue-400"
27
+ },
28
+ success: {
29
+ icon: (_jsx("svg", { className: "h-6 w-6 text-green-600 dark:text-green-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) })),
30
+ bgColor: "bg-green-100 dark:bg-green-900/20",
31
+ buttonColor: "bg-green-600 hover:bg-green-700 focus:ring-green-500",
32
+ textColor: "text-green-600 dark:text-green-400"
33
+ },
34
+ error: {
35
+ icon: (_jsx("svg", { className: "h-6 w-6 text-red-600 dark:text-red-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })),
36
+ bgColor: "bg-red-100 dark:bg-red-900/20",
37
+ buttonColor: "bg-red-600 hover:bg-red-700 focus:ring-red-500",
38
+ textColor: "text-red-600 dark:text-red-400"
39
+ }
40
+ };
41
+ const config = typeConfig[type];
42
+ const isInputValid = !showInput || !requiredInputValue || inputValue === requiredInputValue;
43
+ const isDisabled = disabled || loading || !isInputValid;
44
+ return (_jsx(Modal, { ref: ref, isOpen: isOpen, onClose: onClose, showCloseButton: false, size: size, children: _jsxs("div", { className: "text-center", children: [_jsx("div", { className: cn("mx-auto flex items-center justify-center h-16 w-16 rounded-full mb-6", // 64px 아이콘, 24px 여백
45
+ config.bgColor), children: config.icon }), _jsxs("h3", { className: "text-xl font-semibold text-gray-900 dark:text-white mb-4", children: [" ", title] }), _jsxs("div", { className: "mb-6", children: [" ", _jsx("p", { className: "text-sm text-gray-600 dark:text-gray-400", children: message }), warning && (_jsx("p", { className: cn("text-sm mt-3 font-medium", // 12px 여백
46
+ config.textColor), children: warning }))] }), showInput && (_jsxs("div", { className: "mb-6", children: [" ", _jsxs("label", { htmlFor: "confirmInput", className: "block text-sm font-medium text-gray-700 dark:text-gray-300 mb-3 text-left", children: [" ", inputLabel] }), _jsx("input", { type: "text", id: "confirmInput", value: inputValue, onChange: (e) => onInputChange?.(e.target.value), placeholder: inputPlaceholder, className: "w-full px-4 py-3 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-transparent dark:bg-gray-700 dark:text-white transition-colors" // 16px, 12px 패딩
47
+ })] })), _jsxs("div", { className: cn("flex gap-3", // 12px 간격
48
+ showCancel ? "justify-center" : "justify-center"), children: [showCancel && (_jsx(Button, { variant: "outline", onClick: onClose, disabled: loading, className: "px-6 py-3" // 24px, 12px 패딩
49
+ , children: cancelText })), _jsx(Button, { variant: "default", onClick: onConfirm, disabled: isDisabled, className: cn("px-6 py-3", // 24px, 12px 패딩
50
+ config.buttonColor), children: loading ? (_jsxs("div", { className: "flex items-center", children: [_jsxs("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4 text-white", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [_jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), _jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })] }), "\uCC98\uB9AC \uC911..."] })) : (confirmButtonText || confirmText) })] })] }) }));
51
+ });
52
+ ConfirmModal.displayName = "ConfirmModal";
53
+ export { ConfirmModal };
@@ -0,0 +1,10 @@
1
+ import React from "react";
2
+ export interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ size?: "sm" | "md" | "lg" | "xl" | "full";
4
+ padding?: "none" | "sm" | "md" | "lg" | "xl";
5
+ centered?: boolean;
6
+ fluid?: boolean;
7
+ }
8
+ declare const Container: React.ForwardRefExoticComponent<ContainerProps & React.RefAttributes<HTMLDivElement>>;
9
+ export { Container };
10
+ //# sourceMappingURL=Container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../src/components/Container.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED,QAAA,MAAM,SAAS,uFAuCd,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import React from "react";
4
+ import { cn } from "../lib/utils";
5
+ const Container = React.forwardRef(({ className, size = "lg", padding = "md", centered = true, fluid = false, ...props }, ref) => {
6
+ const sizeClasses = {
7
+ sm: "max-w-2xl", // 672px
8
+ md: "max-w-4xl", // 896px
9
+ lg: "max-w-6xl", // 1152px
10
+ xl: "max-w-7xl", // 1280px
11
+ full: "max-w-full"
12
+ };
13
+ const paddingClasses = {
14
+ none: "",
15
+ sm: "px-4 py-8", // 16px 좌우, 32px 상하
16
+ md: "px-6 py-12", // 24px 좌우, 48px 상하
17
+ lg: "px-8 py-16", // 32px 좌우, 64px 상하
18
+ xl: "px-12 py-20" // 48px 좌우, 80px 상하
19
+ };
20
+ return (_jsx("div", { ref: ref, className: cn("w-full", !fluid && sizeClasses[size], paddingClasses[padding], centered && "mx-auto", className), ...props }));
21
+ });
22
+ Container.displayName = "Container";
23
+ export { Container };
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ export interface ContextMenuProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ children: React.ReactNode;
4
+ open?: boolean;
5
+ onOpenChange?: (open: boolean) => void;
6
+ trigger?: React.ReactNode;
7
+ placement?: "top" | "bottom" | "left" | "right";
8
+ align?: "start" | "center" | "end";
9
+ offset?: number;
10
+ disabled?: boolean;
11
+ }
12
+ declare const ContextMenu: React.ForwardRefExoticComponent<ContextMenuProps & React.RefAttributes<HTMLDivElement>>;
13
+ export interface ContextMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
14
+ icon?: React.ReactNode;
15
+ variant?: "default" | "destructive" | "disabled";
16
+ }
17
+ declare const ContextMenuItem: React.ForwardRefExoticComponent<ContextMenuItemProps & React.RefAttributes<HTMLButtonElement>>;
18
+ export interface ContextMenuSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
19
+ }
20
+ declare const ContextMenuSeparator: React.ForwardRefExoticComponent<ContextMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
21
+ export interface ContextMenuLabelProps extends React.HTMLAttributes<HTMLDivElement> {
22
+ }
23
+ declare const ContextMenuLabel: React.ForwardRefExoticComponent<ContextMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
24
+ declare const ContextMenuGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
25
+ export { ContextMenu, ContextMenuItem, ContextMenuSeparator, ContextMenuLabel, ContextMenuGroup };
26
+ //# sourceMappingURL=ContextMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../src/components/ContextMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC/C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,QAAA,MAAM,WAAW,yFAmIhB,CAAA;AAGD,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACzF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,CAAA;CACjD;AAED,QAAA,MAAM,eAAe,gGAwCpB,CAAA;AAGD,MAAM,WAAW,yBAA0B,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAE1F,QAAA,MAAM,oBAAoB,kGAQzB,CAAA;AAGD,MAAM,WAAW,qBAAsB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEtF,QAAA,MAAM,gBAAgB,8FAUrB,CAAA;AAID,QAAA,MAAM,gBAAgB,6GAUrB,CAAA;AAGD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,110 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/utils";
5
+ const ContextMenu = React.forwardRef(({ className, children, open: controlledOpen, onOpenChange, trigger, placement = "bottom", align = "start", offset = 8, disabled = false, ...props }, ref) => {
6
+ const [internalOpen, setInternalOpen] = React.useState(false);
7
+ const [coords, setCoords] = React.useState({ x: 0, y: 0 });
8
+ const triggerRef = React.useRef(null);
9
+ const menuRef = React.useRef(null);
10
+ const isControlled = controlledOpen !== undefined;
11
+ const isOpen = isControlled ? controlledOpen : internalOpen;
12
+ const handleOpenChange = (newOpen) => {
13
+ if (disabled)
14
+ return;
15
+ if (!isControlled) {
16
+ setInternalOpen(newOpen);
17
+ }
18
+ onOpenChange?.(newOpen);
19
+ };
20
+ const handleContextMenu = (event) => {
21
+ event.preventDefault();
22
+ if (disabled)
23
+ return;
24
+ const rect = event.currentTarget.getBoundingClientRect();
25
+ const x = event.clientX;
26
+ const y = event.clientY;
27
+ setCoords({ x, y });
28
+ handleOpenChange(true);
29
+ };
30
+ const updatePosition = React.useCallback(() => {
31
+ if (!menuRef.current)
32
+ return;
33
+ const menuRect = menuRef.current.getBoundingClientRect();
34
+ const viewportWidth = window.innerWidth;
35
+ const viewportHeight = window.innerHeight;
36
+ let x = coords.x;
37
+ let y = coords.y;
38
+ // 뷰포트 경계 확인 및 조정
39
+ if (x + menuRect.width > viewportWidth - 8) {
40
+ x = viewportWidth - menuRect.width - 8; // 8px 여백
41
+ }
42
+ if (y + menuRect.height > viewportHeight - 8) {
43
+ y = viewportHeight - menuRect.height - 8; // 8px 여백
44
+ }
45
+ if (x < 8)
46
+ x = 8; // 8px 여백
47
+ if (y < 8)
48
+ y = 8; // 8px 여백
49
+ setCoords({ x, y });
50
+ }, [coords.x, coords.y]);
51
+ React.useEffect(() => {
52
+ if (isOpen) {
53
+ updatePosition();
54
+ window.addEventListener('resize', updatePosition);
55
+ window.addEventListener('scroll', updatePosition);
56
+ return () => {
57
+ window.removeEventListener('resize', updatePosition);
58
+ window.removeEventListener('scroll', updatePosition);
59
+ };
60
+ }
61
+ }, [isOpen, updatePosition]);
62
+ React.useEffect(() => {
63
+ const handleClickOutside = (event) => {
64
+ if (triggerRef.current &&
65
+ menuRef.current &&
66
+ !triggerRef.current.contains(event.target) &&
67
+ !menuRef.current.contains(event.target)) {
68
+ handleOpenChange(false);
69
+ }
70
+ };
71
+ if (isOpen) {
72
+ document.addEventListener('mousedown', handleClickOutside);
73
+ return () => {
74
+ document.removeEventListener('mousedown', handleClickOutside);
75
+ };
76
+ }
77
+ }, [isOpen]);
78
+ return (_jsxs("div", { ref: ref, className: cn("relative", className), ...props, children: [trigger && (_jsx("div", { ref: triggerRef, onContextMenu: handleContextMenu, className: "inline-block", children: trigger })), isOpen && (_jsx("div", { ref: menuRef, className: cn("fixed z-50 bg-white dark:bg-gray-800 rounded-lg shadow-xl backdrop-blur-sm", // 보더 대신 섀도우 사용
79
+ "min-w-[200px] py-2", // 16px 패딩
80
+ "border-0" // 보더 제거
81
+ ), style: {
82
+ left: coords.x,
83
+ top: coords.y,
84
+ boxShadow: "0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"
85
+ }, children: children }))] }));
86
+ });
87
+ ContextMenu.displayName = "ContextMenu";
88
+ const ContextMenuItem = React.forwardRef(({ className, icon, variant = "default", children, disabled, ...props }, ref) => {
89
+ const getVariantClasses = () => {
90
+ switch (variant) {
91
+ case "destructive":
92
+ return "text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20";
93
+ case "disabled":
94
+ return "text-gray-400 dark:text-gray-500 cursor-not-allowed";
95
+ default:
96
+ return "text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700";
97
+ }
98
+ };
99
+ return (_jsxs("button", { ref: ref, className: cn("w-full flex items-center gap-3 px-4 py-3 text-sm font-medium transition-colors focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-700", // 16px, 12px 패딩
100
+ getVariantClasses(), className), disabled: disabled || variant === "disabled", ...props, children: [icon && (_jsx("div", { className: "flex-shrink-0 w-4 h-4", children: icon })), _jsx("span", { className: "flex-1 text-left", children: children })] }));
101
+ });
102
+ ContextMenuItem.displayName = "ContextMenuItem";
103
+ const ContextMenuSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("h-px bg-gray-200 dark:bg-gray-700 my-2", className), ...props })));
104
+ ContextMenuSeparator.displayName = "ContextMenuSeparator";
105
+ const ContextMenuLabel = React.forwardRef(({ className, children, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("px-4 py-2 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide", className), ...props, children: children })));
106
+ ContextMenuLabel.displayName = "ContextMenuLabel";
107
+ // 편의 컴포넌트들
108
+ const ContextMenuGroup = React.forwardRef(({ className, children, ...props }, ref) => (_jsx("div", { ref: ref, className: cn("py-1", className), ...props, children: children })));
109
+ ContextMenuGroup.displayName = "ContextMenuGroup";
110
+ export { ContextMenu, ContextMenuItem, ContextMenuSeparator, ContextMenuLabel, ContextMenuGroup };
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ export interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ orientation?: "horizontal" | "vertical";
4
+ variant?: "solid" | "dashed" | "dotted" | "gradient";
5
+ size?: "sm" | "md" | "lg";
6
+ spacing?: "none" | "sm" | "md" | "lg" | "xl";
7
+ color?: "default" | "muted" | "primary" | "secondary";
8
+ }
9
+ declare const Divider: React.ForwardRefExoticComponent<DividerProps & React.RefAttributes<HTMLDivElement>>;
10
+ export { Divider };
11
+ //# sourceMappingURL=Divider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../src/components/Divider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAA;IACpD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;IAC5C,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;CACtD;AAED,QAAA,MAAM,OAAO,qFA6DZ,CAAA;AAGD,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -0,0 +1,39 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/utils";
5
+ const Divider = React.forwardRef(({ className, orientation = "horizontal", variant = "solid", size = "md", spacing = "md", color = "default", ...props }, ref) => {
6
+ const orientationClasses = {
7
+ horizontal: "w-full",
8
+ vertical: "h-full w-px"
9
+ };
10
+ const sizeClasses = {
11
+ sm: orientation === "horizontal" ? "h-px" : "w-px",
12
+ md: orientation === "horizontal" ? "h-0.5" : "w-0.5", // 2px
13
+ lg: orientation === "horizontal" ? "h-1" : "w-1" // 4px
14
+ };
15
+ const variantClasses = {
16
+ solid: "",
17
+ dashed: "border-dashed",
18
+ dotted: "border-dotted",
19
+ gradient: orientation === "horizontal"
20
+ ? "bg-gradient-to-r from-transparent via-gray-300 to-transparent dark:via-gray-600"
21
+ : "bg-gradient-to-b from-transparent via-gray-300 to-transparent dark:via-gray-600"
22
+ };
23
+ const colorClasses = {
24
+ default: "bg-gray-200 dark:bg-gray-700",
25
+ muted: "bg-gray-100 dark:bg-gray-800",
26
+ primary: "bg-blue-200 dark:bg-blue-700",
27
+ secondary: "bg-gray-300 dark:bg-gray-600"
28
+ };
29
+ const spacingClasses = {
30
+ none: "",
31
+ sm: orientation === "horizontal" ? "my-4" : "mx-4", // 16px
32
+ md: orientation === "horizontal" ? "my-6" : "mx-6", // 24px
33
+ lg: orientation === "horizontal" ? "my-8" : "mx-8", // 32px
34
+ xl: orientation === "horizontal" ? "my-12" : "mx-12" // 48px
35
+ };
36
+ return (_jsx("div", { ref: ref, className: cn("flex-shrink-0", orientationClasses[orientation], sizeClasses[size], variant === "gradient" ? variantClasses[variant] : colorClasses[color], variant !== "gradient" && variantClasses[variant], spacingClasses[spacing], className), ...props }));
37
+ });
38
+ Divider.displayName = "Divider";
39
+ export { Divider };
@@ -0,0 +1,32 @@
1
+ import * as React from "react";
2
+ interface DrawerProps {
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ children: React.ReactNode;
6
+ className?: string;
7
+ side?: "left" | "right" | "top" | "bottom";
8
+ size?: "sm" | "md" | "lg" | "xl" | "full";
9
+ showBackdrop?: boolean;
10
+ closeOnBackdropClick?: boolean;
11
+ closeOnEscape?: boolean;
12
+ }
13
+ declare const Drawer: React.ForwardRefExoticComponent<DrawerProps & React.RefAttributes<HTMLDivElement>>;
14
+ interface DrawerHeaderProps {
15
+ children: React.ReactNode;
16
+ className?: string;
17
+ showCloseButton?: boolean;
18
+ onClose?: () => void;
19
+ }
20
+ declare const DrawerHeader: React.ForwardRefExoticComponent<DrawerHeaderProps & React.RefAttributes<HTMLDivElement>>;
21
+ interface DrawerContentProps {
22
+ children: React.ReactNode;
23
+ className?: string;
24
+ }
25
+ declare const DrawerContent: React.ForwardRefExoticComponent<DrawerContentProps & React.RefAttributes<HTMLDivElement>>;
26
+ interface DrawerFooterProps {
27
+ children: React.ReactNode;
28
+ className?: string;
29
+ }
30
+ declare const DrawerFooter: React.ForwardRefExoticComponent<DrawerFooterProps & React.RefAttributes<HTMLDivElement>>;
31
+ export { Drawer, DrawerHeader, DrawerContent, DrawerFooter };
32
+ //# sourceMappingURL=Drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../src/components/Drawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;IAC1C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAA;IACzC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,QAAA,MAAM,MAAM,oFA2GX,CAAA;AAGD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,QAAA,MAAM,YAAY,0FAoBjB,CAAA;AAGD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,aAAa,2FAYlB,CAAA;AAGD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,QAAA,MAAM,YAAY,0FAYjB,CAAA;AAGD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,79 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/utils";
5
+ import { Icon } from "./Icon";
6
+ const Drawer = React.forwardRef(({ open, onOpenChange, children, className, side = "right", size = "md", showBackdrop = true, closeOnBackdropClick = true, closeOnEscape = true, ...props }, ref) => {
7
+ const [isVisible, setIsVisible] = React.useState(false);
8
+ const [isAnimating, setIsAnimating] = React.useState(false);
9
+ React.useEffect(() => {
10
+ if (open) {
11
+ setIsVisible(true);
12
+ setIsAnimating(true);
13
+ // 애니메이션 시작을 위한 지연
14
+ const timer = setTimeout(() => setIsAnimating(false), 50);
15
+ return () => clearTimeout(timer);
16
+ }
17
+ else {
18
+ setIsAnimating(true);
19
+ const timer = setTimeout(() => {
20
+ setIsVisible(false);
21
+ setIsAnimating(false);
22
+ }, 300); // 애니메이션 완료 후 숨김
23
+ return () => clearTimeout(timer);
24
+ }
25
+ }, [open]);
26
+ React.useEffect(() => {
27
+ if (!closeOnEscape)
28
+ return;
29
+ const handleEscape = (e) => {
30
+ if (e.key === "Escape" && open) {
31
+ onOpenChange(false);
32
+ }
33
+ };
34
+ if (open) {
35
+ document.addEventListener("keydown", handleEscape);
36
+ document.body.style.overflow = "hidden";
37
+ }
38
+ return () => {
39
+ document.removeEventListener("keydown", handleEscape);
40
+ document.body.style.overflow = "";
41
+ };
42
+ }, [open, closeOnEscape, onOpenChange]);
43
+ if (!isVisible)
44
+ return null;
45
+ const sizeClasses = {
46
+ sm: side === "left" || side === "right" ? "w-80" : "h-64",
47
+ md: side === "left" || side === "right" ? "w-96" : "h-96",
48
+ lg: side === "left" || side === "right" ? "w-[28rem]" : "h-[32rem]",
49
+ xl: side === "left" || side === "right" ? "w-[32rem]" : "h-[40rem]",
50
+ full: side === "left" || side === "right" ? "w-full" : "h-full"
51
+ };
52
+ const sideClasses = {
53
+ left: "left-0 top-0 h-full translate-x-0",
54
+ right: "right-0 top-0 h-full translate-x-0",
55
+ top: "top-0 left-0 w-full translate-y-0",
56
+ bottom: "bottom-0 left-0 w-full translate-y-0"
57
+ };
58
+ const transformClasses = {
59
+ left: isAnimating ? (open ? "translate-x-0" : "-translate-x-full") : "",
60
+ right: isAnimating ? (open ? "translate-x-0" : "translate-x-full") : "",
61
+ top: isAnimating ? (open ? "translate-y-0" : "-translate-y-full") : "",
62
+ bottom: isAnimating ? (open ? "translate-y-0" : "translate-y-full") : ""
63
+ };
64
+ return (_jsxs("div", { className: "fixed inset-0 z-50", children: [showBackdrop && (_jsx("div", { className: cn("absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity duration-300", isAnimating ? (open ? "opacity-100" : "opacity-0") : ""), onClick: closeOnBackdropClick ? () => onOpenChange(false) : undefined })), _jsx("div", { ref: ref, className: cn("absolute bg-white/95 dark:!bg-gray-800/95 backdrop-blur-xl border border-gray-200/50 dark:!border-gray-600/50 shadow-2xl transition-transform duration-300 ease-out", sizeClasses[size], sideClasses[side], transformClasses[side], className), ...props, children: children })] }));
65
+ });
66
+ Drawer.displayName = "Drawer";
67
+ const DrawerHeader = React.forwardRef(({ children, className, showCloseButton = true, onClose, ...props }, ref) => {
68
+ return (_jsxs("div", { ref: ref, className: cn("flex items-center justify-between p-6 border-b border-gray-200/50 dark:border-gray-700/50", className), ...props, children: [_jsx("div", { className: "flex-1", children: children }), showCloseButton && (_jsx("button", { onClick: onClose, className: "p-2 rounded-lg hover:bg-gray-100/80 dark:hover:bg-gray-800/80 transition-colors", children: _jsx(Icon, { name: "x", size: 20 }) }))] }));
69
+ });
70
+ DrawerHeader.displayName = "DrawerHeader";
71
+ const DrawerContent = React.forwardRef(({ children, className, ...props }, ref) => {
72
+ return (_jsx("div", { ref: ref, className: cn("flex-1 p-6 overflow-y-auto", className), ...props, children: children }));
73
+ });
74
+ DrawerContent.displayName = "DrawerContent";
75
+ const DrawerFooter = React.forwardRef(({ children, className, ...props }, ref) => {
76
+ return (_jsx("div", { ref: ref, className: cn("flex items-center justify-end gap-3 p-6 border-t border-gray-200/50 dark:border-gray-700/50", className), ...props, children: children }));
77
+ });
78
+ DrawerFooter.displayName = "DrawerFooter";
79
+ export { Drawer, DrawerHeader, DrawerContent, DrawerFooter };
@@ -0,0 +1,28 @@
1
+ import * as React from "react";
2
+ export interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ trigger: React.ReactNode;
4
+ children: React.ReactNode;
5
+ open?: boolean;
6
+ onOpenChange?: (open: boolean) => void;
7
+ placement?: "top" | "bottom" | "left" | "right";
8
+ align?: "start" | "center" | "end";
9
+ offset?: number;
10
+ disabled?: boolean;
11
+ showArrow?: boolean;
12
+ }
13
+ declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLDivElement>>;
14
+ export interface DropdownItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
15
+ icon?: React.ReactNode;
16
+ variant?: "default" | "destructive" | "disabled";
17
+ }
18
+ declare const DropdownItem: React.ForwardRefExoticComponent<DropdownItemProps & React.RefAttributes<HTMLButtonElement>>;
19
+ export interface DropdownSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
20
+ }
21
+ declare const DropdownSeparator: React.ForwardRefExoticComponent<DropdownSeparatorProps & React.RefAttributes<HTMLDivElement>>;
22
+ export interface DropdownLabelProps extends React.HTMLAttributes<HTMLDivElement> {
23
+ }
24
+ declare const DropdownLabel: React.ForwardRefExoticComponent<DropdownLabelProps & React.RefAttributes<HTMLDivElement>>;
25
+ declare const DropdownMenu: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
26
+ declare const DropdownGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
27
+ export { Dropdown, DropdownItem, DropdownSeparator, DropdownLabel, DropdownMenu, DropdownGroup };
28
+ //# sourceMappingURL=Dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.d.ts","sourceRoot":"","sources":["../../src/components/Dropdown.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACzE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC/C,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,QAAA,MAAM,QAAQ,sFA+Mb,CAAA;AAID,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACtF,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,CAAA;CACjD;AAED,QAAA,MAAM,YAAY,6FAwCjB,CAAA;AAGD,MAAM,WAAW,sBAAuB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEvF,QAAA,MAAM,iBAAiB,+FAQtB,CAAA;AAGD,MAAM,WAAW,kBAAmB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEnF,QAAA,MAAM,aAAa,2FAUlB,CAAA;AAID,QAAA,MAAM,YAAY,6GAUjB,CAAA;AAGD,QAAA,MAAM,aAAa,6GAUlB,CAAA;AAGD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,CAAA"}