@hua-labs/ui 1.0.0 → 1.1.0-alpha.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +897 -210
- package/dist/ComponentLayout-BxCenSAm.d.mts +73 -0
- package/dist/advanced/dashboard.d.ts +7 -0
- package/dist/advanced/dashboard.d.ts.map +1 -0
- package/dist/advanced/motion.d.ts +2 -0
- package/dist/advanced/motion.d.ts.map +1 -0
- package/dist/advanced-dashboard.d.mts +4 -0
- package/dist/advanced-dashboard.js +2 -0
- package/dist/advanced-dashboard.js.map +1 -0
- package/dist/advanced-dashboard.mjs +2 -0
- package/dist/advanced-dashboard.mjs.map +1 -0
- package/dist/advanced-motion.d.mts +93 -0
- package/dist/advanced-motion.js +2 -0
- package/dist/advanced-motion.js.map +1 -0
- package/dist/advanced-motion.mjs +2 -0
- package/dist/advanced-motion.mjs.map +1 -0
- package/dist/advanced.d.mts +734 -0
- package/dist/advanced.d.ts +17 -0
- package/dist/advanced.d.ts.map +1 -0
- package/dist/advanced.js +2 -0
- package/dist/advanced.js.map +1 -0
- package/dist/advanced.mjs +2 -0
- package/dist/advanced.mjs.map +1 -0
- package/dist/chunk-627HOIRV.mjs +2 -0
- package/dist/chunk-627HOIRV.mjs.map +1 -0
- package/dist/chunk-ACEKLG37.mjs +2 -0
- package/dist/chunk-ACEKLG37.mjs.map +1 -0
- package/dist/chunk-E5PN4LUS.mjs +2 -0
- package/dist/chunk-E5PN4LUS.mjs.map +1 -0
- package/dist/chunk-KHEJZ3U4.mjs +2 -0
- package/dist/chunk-KHEJZ3U4.mjs.map +1 -0
- package/dist/chunk-MXGXBG63.mjs +2 -0
- package/dist/chunk-MXGXBG63.mjs.map +1 -0
- package/dist/chunk-R5KCFRYV.mjs +2 -0
- package/dist/chunk-R5KCFRYV.mjs.map +1 -0
- package/dist/chunk-UGSYQDR4.mjs +2 -0
- package/dist/chunk-UGSYQDR4.mjs.map +1 -0
- package/dist/chunk-UUHAXGMO.mjs +2 -0
- package/dist/chunk-UUHAXGMO.mjs.map +1 -0
- package/dist/chunk-VU264VFN.mjs +2 -0
- package/dist/chunk-VU264VFN.mjs.map +1 -0
- package/dist/chunk-ZFS4B5QT.mjs +2 -0
- package/dist/chunk-ZFS4B5QT.mjs.map +1 -0
- package/dist/components/Accordion.d.ts +109 -1
- package/dist/components/Accordion.d.ts.map +1 -1
- package/dist/components/Action.d.ts +68 -0
- package/dist/components/Action.d.ts.map +1 -0
- package/dist/components/ActionToolbar.d.ts +65 -0
- package/dist/components/ActionToolbar.d.ts.map +1 -0
- package/dist/components/Alert.d.ts +49 -0
- package/dist/components/Alert.d.ts.map +1 -1
- package/dist/components/Autocomplete.d.ts +88 -0
- package/dist/components/Autocomplete.d.ts.map +1 -0
- package/dist/components/Avatar.d.ts +71 -1
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Badge.d.ts +32 -2
- package/dist/components/Badge.d.ts.map +1 -1
- package/dist/components/Bookmark.d.ts +49 -0
- package/dist/components/Bookmark.d.ts.map +1 -0
- package/dist/components/BottomSheet.d.ts +91 -1
- package/dist/components/BottomSheet.d.ts.map +1 -1
- package/dist/components/Breadcrumb.d.ts +73 -14
- package/dist/components/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Button.d.ts +82 -7
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Card.d.ts +122 -5
- package/dist/components/Card.d.ts.map +1 -1
- package/dist/components/ChatMessage.d.ts +67 -1
- package/dist/components/ChatMessage.d.ts.map +1 -1
- package/dist/components/Checkbox.d.ts +48 -2
- package/dist/components/Checkbox.d.ts.map +1 -1
- package/dist/components/Command.d.ts +82 -1
- package/dist/components/Command.d.ts.map +1 -1
- package/dist/components/ComponentLayout.d.ts +72 -0
- package/dist/components/ComponentLayout.d.ts.map +1 -0
- package/dist/components/ConfirmModal.d.ts +66 -1
- package/dist/components/ConfirmModal.d.ts.map +1 -1
- package/dist/components/Container.d.ts +39 -0
- package/dist/components/Container.d.ts.map +1 -1
- package/dist/components/ContextMenu.d.ts +51 -1
- package/dist/components/ContextMenu.d.ts.map +1 -1
- package/dist/components/DatePicker.d.ts +62 -0
- package/dist/components/DatePicker.d.ts.map +1 -0
- package/dist/components/Divider.d.ts +13 -3
- package/dist/components/Divider.d.ts.map +1 -1
- package/dist/components/Drawer.d.ts +103 -1
- package/dist/components/Drawer.d.ts.map +1 -1
- package/dist/components/Dropdown.d.ts +51 -1
- package/dist/components/Dropdown.d.ts.map +1 -1
- package/dist/components/EmotionAnalysis.d.ts +59 -1
- package/dist/components/EmotionAnalysis.d.ts.map +1 -1
- package/dist/components/EmotionButton.d.ts +35 -1
- package/dist/components/EmotionButton.d.ts.map +1 -1
- package/dist/components/EmotionMeter.d.ts +38 -2
- package/dist/components/EmotionMeter.d.ts.map +1 -1
- package/dist/components/EmotionSelector.d.ts +51 -1
- package/dist/components/EmotionSelector.d.ts.map +1 -1
- package/dist/components/FeatureCard.d.ts +61 -0
- package/dist/components/FeatureCard.d.ts.map +1 -0
- package/dist/components/Form.d.ts +114 -0
- package/dist/components/Form.d.ts.map +1 -0
- package/dist/components/Grid.d.ts +42 -1
- package/dist/components/Grid.d.ts.map +1 -1
- package/dist/components/HeroSection.d.ts +77 -0
- package/dist/components/HeroSection.d.ts.map +1 -0
- package/dist/components/Icon/Icon.d.ts +159 -0
- package/dist/components/Icon/Icon.d.ts.map +1 -0
- package/dist/components/Icon/IconProvider.d.ts +94 -0
- package/dist/components/Icon/IconProvider.d.ts.map +1 -0
- package/dist/components/Icon/icon-store.d.ts +21 -0
- package/dist/components/Icon/icon-store.d.ts.map +1 -0
- package/dist/components/Icon/index.d.ts +10 -0
- package/dist/components/Icon/index.d.ts.map +1 -0
- package/dist/components/InfoCard.d.ts +48 -0
- package/dist/components/InfoCard.d.ts.map +1 -0
- package/dist/components/Input.d.ts +40 -8
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Label.d.ts +50 -0
- package/dist/components/Label.d.ts.map +1 -0
- package/dist/components/LanguageToggle.d.ts +41 -1
- package/dist/components/LanguageToggle.d.ts.map +1 -1
- package/dist/components/Link.d.ts +52 -0
- package/dist/components/Link.d.ts.map +1 -0
- package/dist/components/LoadingSpinner.d.ts +44 -5
- package/dist/components/LoadingSpinner.d.ts.map +1 -1
- package/dist/components/Menu.d.ts +92 -1
- package/dist/components/Menu.d.ts.map +1 -1
- package/dist/components/Modal.d.ts +67 -5
- package/dist/components/Modal.d.ts.map +1 -1
- package/dist/components/Navigation.d.ts +72 -0
- package/dist/components/Navigation.d.ts.map +1 -0
- package/dist/components/PageNavigation.d.ts +48 -0
- package/dist/components/PageNavigation.d.ts.map +1 -0
- package/dist/components/PageTransition.d.ts +44 -1
- package/dist/components/PageTransition.d.ts.map +1 -1
- package/dist/components/Pagination.d.ts +52 -1
- package/dist/components/Pagination.d.ts.map +1 -1
- package/dist/components/Panel.d.ts +99 -0
- package/dist/components/Panel.d.ts.map +1 -0
- package/dist/components/Popover.d.ts +46 -1
- package/dist/components/Popover.d.ts.map +1 -1
- package/dist/components/Progress.d.ts +52 -3
- package/dist/components/Progress.d.ts.map +1 -1
- package/dist/components/Radio.d.ts +44 -2
- package/dist/components/Radio.d.ts.map +1 -1
- package/dist/components/ScrollArea.d.ts +53 -1
- package/dist/components/ScrollArea.d.ts.map +1 -1
- package/dist/components/ScrollIndicator.d.ts +43 -1
- package/dist/components/ScrollIndicator.d.ts.map +1 -1
- package/dist/components/ScrollProgress.d.ts +37 -0
- package/dist/components/ScrollProgress.d.ts.map +1 -1
- package/dist/components/ScrollToTop.d.ts +48 -11
- package/dist/components/ScrollToTop.d.ts.map +1 -1
- package/dist/components/SectionHeader.d.ts +42 -0
- package/dist/components/SectionHeader.d.ts.map +1 -0
- package/dist/components/Select.d.ts +59 -2
- package/dist/components/Select.d.ts.map +1 -1
- package/dist/components/Skeleton.d.ts +44 -1
- package/dist/components/Skeleton.d.ts.map +1 -1
- package/dist/components/Slider.d.ts +75 -0
- package/dist/components/Slider.d.ts.map +1 -0
- package/dist/components/Stack.d.ts +42 -1
- package/dist/components/Stack.d.ts.map +1 -1
- package/dist/components/StatsPanel.d.ts +72 -0
- package/dist/components/StatsPanel.d.ts.map +1 -0
- package/dist/components/Switch.d.ts +48 -2
- package/dist/components/Switch.d.ts.map +1 -1
- package/dist/components/Table.d.ts +206 -0
- package/dist/components/Table.d.ts.map +1 -0
- package/dist/components/Tabs.d.ts +123 -10
- package/dist/components/Tabs.d.ts.map +1 -1
- package/dist/components/Textarea.d.ts +48 -2
- package/dist/components/Textarea.d.ts.map +1 -1
- package/dist/components/ThemeProvider.d.ts +67 -2
- package/dist/components/ThemeProvider.d.ts.map +1 -1
- package/dist/components/ThemeToggle.d.ts +44 -0
- package/dist/components/ThemeToggle.d.ts.map +1 -1
- package/dist/components/Toast.d.ts +75 -1
- package/dist/components/Toast.d.ts.map +1 -1
- package/dist/components/Toggle.d.ts +62 -0
- package/dist/components/Toggle.d.ts.map +1 -0
- package/dist/components/Tooltip.d.ts +48 -1
- package/dist/components/Tooltip.d.ts.map +1 -1
- package/dist/components/Upload.d.ts +87 -0
- package/dist/components/Upload.d.ts.map +1 -0
- package/dist/components/advanced/AdvancedPageTransition.d.ts +25 -0
- package/dist/components/advanced/AdvancedPageTransition.d.ts.map +1 -0
- package/dist/components/advanced/index.d.ts +4 -0
- package/dist/components/advanced/index.d.ts.map +1 -0
- package/dist/components/advanced/usePageTransition.d.ts +33 -0
- package/dist/components/advanced/usePageTransition.d.ts.map +1 -0
- package/dist/components/advanced/usePageTransitionManager.d.ts +44 -0
- package/dist/components/advanced/usePageTransitionManager.d.ts.map +1 -0
- package/dist/components/dashboard/ActivityFeed.d.ts +87 -0
- package/dist/components/dashboard/ActivityFeed.d.ts.map +1 -0
- package/dist/components/dashboard/BarChart.d.ts +82 -0
- package/dist/components/dashboard/BarChart.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardGrid.d.ts +44 -0
- package/dist/components/dashboard/DashboardGrid.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardSidebar.d.ts +105 -0
- package/dist/components/dashboard/DashboardSidebar.d.ts.map +1 -0
- package/dist/components/dashboard/DashboardToolbar.d.ts +120 -0
- package/dist/components/dashboard/DashboardToolbar.d.ts.map +1 -0
- package/dist/components/dashboard/EmptyState.d.ts +61 -0
- package/dist/components/dashboard/EmptyState.d.ts.map +1 -0
- package/dist/components/dashboard/MembershipBadge.d.ts +45 -0
- package/dist/components/dashboard/MembershipBadge.d.ts.map +1 -0
- package/dist/components/dashboard/MerchantList.d.ts +98 -0
- package/dist/components/dashboard/MerchantList.d.ts.map +1 -0
- package/dist/components/dashboard/MetricCard.d.ts +75 -0
- package/dist/components/dashboard/MetricCard.d.ts.map +1 -0
- package/dist/components/dashboard/MiniBarChart.d.ts +60 -0
- package/dist/components/dashboard/MiniBarChart.d.ts.map +1 -0
- package/dist/components/dashboard/NotificationCard.d.ts +89 -0
- package/dist/components/dashboard/NotificationCard.d.ts.map +1 -0
- package/dist/components/dashboard/ProfileCard.d.ts +82 -0
- package/dist/components/dashboard/ProfileCard.d.ts.map +1 -0
- package/dist/components/dashboard/ProgressCard.d.ts +71 -0
- package/dist/components/dashboard/ProgressCard.d.ts.map +1 -0
- package/dist/components/dashboard/QuickActionCard.d.ts +63 -0
- package/dist/components/dashboard/QuickActionCard.d.ts.map +1 -0
- package/dist/components/dashboard/RoutingBreakdownCard.d.ts +88 -0
- package/dist/components/dashboard/RoutingBreakdownCard.d.ts.map +1 -0
- package/dist/components/dashboard/SettlementTimeline.d.ts +90 -0
- package/dist/components/dashboard/SettlementTimeline.d.ts.map +1 -0
- package/dist/components/dashboard/StatCard.d.ts +70 -0
- package/dist/components/dashboard/StatCard.d.ts.map +1 -0
- package/dist/components/dashboard/SummaryCard.d.ts +73 -0
- package/dist/components/dashboard/SummaryCard.d.ts.map +1 -0
- package/dist/components/dashboard/TransactionDetailDrawer.d.ts +183 -0
- package/dist/components/dashboard/TransactionDetailDrawer.d.ts.map +1 -0
- package/dist/components/dashboard/TransactionsTable.d.ts +137 -0
- package/dist/components/dashboard/TransactionsTable.d.ts.map +1 -0
- package/dist/components/dashboard/TrendChart.d.ts +75 -0
- package/dist/components/dashboard/TrendChart.d.ts.map +1 -0
- package/dist/components/dashboard/index.d.ts +41 -0
- package/dist/components/dashboard/index.d.ts.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +12 -0
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -0
- package/dist/dashboard-QMssHf5j.d.mts +1801 -0
- package/dist/feedback.d.mts +103 -0
- package/dist/feedback.d.ts +21 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +2 -0
- package/dist/feedback.js.map +1 -0
- package/dist/feedback.mjs +2 -0
- package/dist/feedback.mjs.map +1 -0
- package/dist/form.d.mts +803 -0
- package/dist/form.d.ts +42 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +2 -0
- package/dist/form.js.map +1 -0
- package/dist/form.mjs +2 -0
- package/dist/form.mjs.map +1 -0
- package/dist/hooks/useScrollToggle.d.ts +12 -0
- package/dist/hooks/useScrollToggle.d.ts.map +1 -0
- package/dist/icons-DoSGIez_.d.mts +135 -0
- package/dist/index.d.mts +3770 -0
- package/dist/index.d.ts +76 -38
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -49
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +37 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/icon-aliases.d.ts +24 -0
- package/dist/lib/icon-aliases.d.ts.map +1 -0
- package/dist/lib/icon-names.d.ts +47 -0
- package/dist/lib/icon-names.d.ts.map +1 -0
- package/dist/lib/icon-providers.d.ts +559 -0
- package/dist/lib/icon-providers.d.ts.map +1 -0
- package/dist/lib/icons.d.ts +113 -24
- package/dist/lib/icons.d.ts.map +1 -1
- package/dist/lib/phosphor-icons.d.ts +6 -0
- package/dist/lib/phosphor-icons.d.ts.map +1 -0
- package/dist/lib/styles/colors.d.ts +131 -0
- package/dist/lib/styles/colors.d.ts.map +1 -0
- package/dist/lib/styles/index.d.ts +8 -0
- package/dist/lib/styles/index.d.ts.map +1 -0
- package/dist/lib/styles/utils.d.ts +87 -0
- package/dist/lib/styles/utils.d.ts.map +1 -0
- package/dist/lib/styles/variants.d.ts +79 -0
- package/dist/lib/styles/variants.d.ts.map +1 -0
- package/dist/lib/types/common.d.ts +80 -0
- package/dist/lib/types/common.d.ts.map +1 -0
- package/dist/lib/types/index.d.ts +6 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +73 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/navigation.d.mts +105 -0
- package/dist/navigation.d.ts +22 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +2 -0
- package/dist/navigation.js.map +1 -0
- package/dist/navigation.mjs +2 -0
- package/dist/navigation.mjs.map +1 -0
- package/package.json +92 -25
- package/src/styles/toast.css +23 -0
- package/dist/components/Accordion.js +0 -84
- package/dist/components/Alert.js +0 -61
- package/dist/components/Avatar.js +0 -18
- package/dist/components/Badge.js +0 -15
- package/dist/components/BottomSheet.js +0 -96
- package/dist/components/Breadcrumb.js +0 -47
- package/dist/components/Button.js +0 -23
- package/dist/components/Card.js +0 -18
- package/dist/components/ChatMessage.js +0 -59
- package/dist/components/Checkbox.js +0 -30
- package/dist/components/Command.js +0 -119
- package/dist/components/ConfirmModal.js +0 -53
- package/dist/components/Container.js +0 -23
- package/dist/components/ContextMenu.js +0 -110
- package/dist/components/Divider.js +0 -39
- package/dist/components/Drawer.js +0 -79
- package/dist/components/Dropdown.js +0 -174
- package/dist/components/EmotionAnalysis.js +0 -40
- package/dist/components/EmotionButton.js +0 -16
- package/dist/components/EmotionMeter.js +0 -21
- package/dist/components/EmotionSelector.js +0 -46
- package/dist/components/Grid.js +0 -44
- package/dist/components/Icon.d.ts +0 -26
- package/dist/components/Icon.d.ts.map +0 -1
- package/dist/components/Icon.js +0 -48
- package/dist/components/Input.js +0 -25
- package/dist/components/LanguageToggle.js +0 -61
- package/dist/components/LoadingSpinner.js +0 -37
- package/dist/components/Menu.js +0 -122
- package/dist/components/Modal.js +0 -62
- package/dist/components/PageTransition.js +0 -39
- package/dist/components/Pagination.js +0 -87
- package/dist/components/Popover.js +0 -159
- package/dist/components/Progress.js +0 -51
- package/dist/components/Radio.js +0 -29
- package/dist/components/ScrollArea.js +0 -42
- package/dist/components/ScrollIndicator.js +0 -60
- package/dist/components/ScrollProgress.js +0 -39
- package/dist/components/ScrollToTop.js +0 -46
- package/dist/components/Select.js +0 -29
- package/dist/components/Skeleton.js +0 -71
- package/dist/components/Stack.js +0 -34
- package/dist/components/Switch.js +0 -29
- package/dist/components/Tabs.js +0 -117
- package/dist/components/Textarea.js +0 -31
- package/dist/components/ThemeProvider.js +0 -76
- package/dist/components/ThemeToggle.js +0 -49
- package/dist/components/Toast.js +0 -138
- package/dist/components/Tooltip.js +0 -102
- package/dist/lib/icons.js +0 -321
- package/dist/lib/utils.js +0 -5
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,3770 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export { Autocomplete, AutocompleteOption, AutocompleteProps, Checkbox, DatePicker, DatePickerProps, Form, FormField, FormGroup, Form as Frm, Input as Inp, Input, Label, Radio, Select, SelectOption, Slider, Switch, Textarea, Upload, UploadProps, UploadedFile } from './form.mjs';
|
|
3
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
4
|
+
import { I as IconName, e as emotionIcons, s as statusIcons } from './icons-DoSGIez_.mjs';
|
|
5
|
+
export { i as iconCategories } from './icons-DoSGIez_.mjs';
|
|
6
|
+
export { C as ComponentLayout } from './ComponentLayout-BxCenSAm.mjs';
|
|
7
|
+
export { PageNavigation, PageTransition } from './navigation.mjs';
|
|
8
|
+
export { Toast, ToastProvider, useToast } from './feedback.mjs';
|
|
9
|
+
import { ClassValue } from 'clsx';
|
|
10
|
+
import 'lucide-react';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 버튼 스타일 변형 / Button style variant
|
|
14
|
+
* @typedef {"default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "gradient" | "neon" | "glass"} Variant
|
|
15
|
+
*/
|
|
16
|
+
type Variant = "default" | "destructive" | "outline" | "secondary" | "ghost" | "link" | "gradient" | "neon" | "glass";
|
|
17
|
+
/**
|
|
18
|
+
* 버튼 크기 / Button size
|
|
19
|
+
* @typedef {"sm" | "md" | "lg" | "xl" | "icon"} Size
|
|
20
|
+
*/
|
|
21
|
+
type Size = "sm" | "md" | "lg" | "xl" | "icon";
|
|
22
|
+
/**
|
|
23
|
+
* 버튼 모서리 둥글기 / Button border radius
|
|
24
|
+
* @typedef {"sm" | "md" | "lg" | "full"} Rounded
|
|
25
|
+
*/
|
|
26
|
+
type Rounded = "sm" | "md" | "lg" | "full";
|
|
27
|
+
/**
|
|
28
|
+
* 버튼 그림자 / Button shadow
|
|
29
|
+
* @typedef {"none" | "sm" | "md" | "lg" | "xl"} Shadow
|
|
30
|
+
*/
|
|
31
|
+
type Shadow = "none" | "sm" | "md" | "lg" | "xl";
|
|
32
|
+
/**
|
|
33
|
+
* 버튼 호버 효과 / Button hover effect
|
|
34
|
+
* @typedef {"scale" | "glow" | "slide" | "none"} Hover
|
|
35
|
+
*/
|
|
36
|
+
type Hover = "scale" | "glow" | "slide" | "none";
|
|
37
|
+
/**
|
|
38
|
+
* 그라디언트 색상 이름 / Gradient color name
|
|
39
|
+
* @typedef {"blue" | "purple" | "green" | "orange" | "pink" | "custom"} GradientName
|
|
40
|
+
*/
|
|
41
|
+
type GradientName = "blue" | "purple" | "green" | "orange" | "pink" | "custom";
|
|
42
|
+
/**
|
|
43
|
+
* Button 컴포넌트의 공통 props / Common props for Button component
|
|
44
|
+
* @typedef {Object} CommonProps
|
|
45
|
+
* @property {Variant} [variant="default"] - 버튼 스타일 변형 / Button style variant
|
|
46
|
+
* @property {Size} [size="md"] - 버튼 크기 / Button size
|
|
47
|
+
* @property {boolean} [loading=false] - 로딩 상태 (스피너 표시) / Loading state (shows spinner)
|
|
48
|
+
* @property {React.ReactNode} [icon] - 아이콘 요소 / Icon element
|
|
49
|
+
* @property {"left" | "right"} [iconPosition="left"] - 아이콘 위치 / Icon position
|
|
50
|
+
* @property {GradientName} [gradient="blue"] - 그라디언트 색상 (variant="gradient"일 때) / Gradient color (when variant="gradient")
|
|
51
|
+
* @property {string} [customGradient] - 커스텀 그라디언트 클래스 (variant="gradient"일 때) / Custom gradient class (when variant="gradient")
|
|
52
|
+
* @property {Rounded} [rounded="md"] - 모서리 둥글기 / Border radius
|
|
53
|
+
* @property {Shadow} [shadow="md"] - 그림자 크기 / Shadow size
|
|
54
|
+
* @property {Hover} [hover="scale"] - 호버 효과 / Hover effect
|
|
55
|
+
* @property {boolean} [fullWidth=false] - 전체 너비 사용 / Use full width
|
|
56
|
+
* @property {boolean} [iconOnly=false] - 아이콘만 표시 (aria-label 필수) / Icon only (aria-label required)
|
|
57
|
+
* @property {string} [aria-label] - 접근성을 위한 레이블 (iconOnly일 때 필수) / Accessibility label (required when iconOnly)
|
|
58
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
59
|
+
* @property {boolean} [disabled=false] - 비활성화 상태 / Disabled state
|
|
60
|
+
*/
|
|
61
|
+
type CommonProps = {
|
|
62
|
+
variant?: Variant;
|
|
63
|
+
size?: Size;
|
|
64
|
+
loading?: boolean;
|
|
65
|
+
icon?: React.ReactNode;
|
|
66
|
+
iconPosition?: "left" | "right";
|
|
67
|
+
gradient?: GradientName;
|
|
68
|
+
customGradient?: string;
|
|
69
|
+
rounded?: Rounded;
|
|
70
|
+
shadow?: Shadow;
|
|
71
|
+
hover?: Hover;
|
|
72
|
+
fullWidth?: boolean;
|
|
73
|
+
iconOnly?: boolean;
|
|
74
|
+
"aria-label"?: string;
|
|
75
|
+
className?: string;
|
|
76
|
+
disabled?: boolean;
|
|
77
|
+
};
|
|
78
|
+
type AnchorProps = CommonProps & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, "className"> & {
|
|
79
|
+
href: string;
|
|
80
|
+
};
|
|
81
|
+
type NativeButtonProps = CommonProps & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "className" | "type"> & {
|
|
82
|
+
href?: undefined;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Button 컴포넌트의 props 타입 / Button component props type
|
|
86
|
+
* href가 제공되면 앵커 태그로, 그렇지 않으면 버튼 태그로 렌더링됩니다.
|
|
87
|
+
* Renders as anchor tag if href is provided, otherwise as button tag.
|
|
88
|
+
* @typedef {AnchorProps | NativeButtonProps} ButtonProps
|
|
89
|
+
*/
|
|
90
|
+
type ButtonProps = AnchorProps | NativeButtonProps;
|
|
91
|
+
type AnchorOrButton$1 = HTMLAnchorElement | HTMLButtonElement;
|
|
92
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<AnchorOrButton$1>>;
|
|
93
|
+
|
|
94
|
+
/** Action 전용 옵션(버튼 공통 옵션은 ButtonProps에서 상속) */
|
|
95
|
+
type ActionKind = "primary" | "secondary" | "tertiary" | "magical" | "cyberpunk" | "ninja" | "wizard" | "sniper";
|
|
96
|
+
type FeedbackKind = "ripple" | "particle" | "sound" | "haptic" | "glitch" | "sparkle" | "smoke";
|
|
97
|
+
type ActionExtras = {
|
|
98
|
+
actionType?: ActionKind;
|
|
99
|
+
feedback?: FeedbackKind;
|
|
100
|
+
particleEffect?: boolean;
|
|
101
|
+
rippleEffect?: boolean;
|
|
102
|
+
soundEffect?: boolean;
|
|
103
|
+
hapticFeedback?: boolean;
|
|
104
|
+
transparency?: number;
|
|
105
|
+
blurIntensity?: number;
|
|
106
|
+
glowIntensity?: number;
|
|
107
|
+
glowColor?: string;
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Action 컴포넌트의 props / Action component props
|
|
111
|
+
* @typedef {Object} ActionProps
|
|
112
|
+
* @property {ActionKind} [actionType="primary"] - Action 타입 / Action type
|
|
113
|
+
* @property {FeedbackKind} [feedback="ripple"] - 피드백 타입 / Feedback type
|
|
114
|
+
* @property {boolean} [particleEffect=false] - 파티클 효과 활성화 / Enable particle effect
|
|
115
|
+
* @property {boolean} [rippleEffect=false] - 리플 효과 활성화 / Enable ripple effect
|
|
116
|
+
* @property {boolean} [soundEffect=false] - 사운드 효과 활성화 / Enable sound effect
|
|
117
|
+
* @property {boolean} [hapticFeedback=false] - 햅틱 피드백 활성화 / Enable haptic feedback
|
|
118
|
+
* @property {number} [transparency=1] - 투명도 (0-1) / Transparency (0-1)
|
|
119
|
+
* @property {number} [blurIntensity=0] - blur 강도 (px) / Blur intensity (px)
|
|
120
|
+
* @property {number} [glowIntensity=0] - 글로우 강도 (px) / Glow intensity (px)
|
|
121
|
+
* @property {string} [glowColor="rgba(91,140,255,.8)"] - 글로우 색상 / Glow color
|
|
122
|
+
* @extends {ButtonProps}
|
|
123
|
+
*/
|
|
124
|
+
type ActionProps = ButtonProps & ActionExtras;
|
|
125
|
+
type AnchorEl = HTMLAnchorElement;
|
|
126
|
+
type ButtonEl = HTMLButtonElement;
|
|
127
|
+
type AnchorOrButton = AnchorEl | ButtonEl;
|
|
128
|
+
/**
|
|
129
|
+
* Action 컴포넌트 / Action component
|
|
130
|
+
*
|
|
131
|
+
* 고급 효과를 가진 액션 버튼 컴포넌트입니다.
|
|
132
|
+
* Button 컴포넌트를 기반으로 하며, 파티클, 리플, 사운드, 햅틱 피드백 등을 지원합니다.
|
|
133
|
+
*
|
|
134
|
+
* Action button component with advanced effects.
|
|
135
|
+
* Based on Button component, supports particle, ripple, sound, haptic feedback, etc.
|
|
136
|
+
*
|
|
137
|
+
* @component
|
|
138
|
+
* @example
|
|
139
|
+
* // 기본 사용 / Basic usage
|
|
140
|
+
* <Action>클릭</Action>
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* // 고급 효과 / Advanced effects
|
|
144
|
+
* <Action
|
|
145
|
+
* actionType="magical"
|
|
146
|
+
* feedback="particle"
|
|
147
|
+
* particleEffect
|
|
148
|
+
* rippleEffect
|
|
149
|
+
* >
|
|
150
|
+
* 마법 버튼
|
|
151
|
+
* </Action>
|
|
152
|
+
*
|
|
153
|
+
* @param {ActionProps} props - Action 컴포넌트의 props / Action component props
|
|
154
|
+
* @param {React.Ref<AnchorOrButton>} ref - button 또는 anchor 요소 ref / button or anchor element ref
|
|
155
|
+
* @returns {JSX.Element} Action 컴포넌트 / Action component
|
|
156
|
+
*/
|
|
157
|
+
declare const Action: React.ForwardRefExoticComponent<ActionProps & React.RefAttributes<AnchorOrButton>>;
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Link 컴포넌트의 props / Link component props
|
|
161
|
+
* @typedef {Object} LinkProps
|
|
162
|
+
* @property {string} href - 링크 URL / Link URL
|
|
163
|
+
* @property {React.ReactNode} children - 링크 텍스트 또는 내용 / Link text or content
|
|
164
|
+
* @property {"default" | "primary" | "secondary" | "ghost" | "underline"} [variant="default"] - Link 스타일 변형 / Link style variant
|
|
165
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - Link 크기 / Link size
|
|
166
|
+
* @property {boolean} [external=false] - 외부 링크 여부 (target="_blank" 자동 설정) / External link (auto sets target="_blank")
|
|
167
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
168
|
+
* @property {() => void} [onClick] - 클릭 이벤트 핸들러 / Click event handler
|
|
169
|
+
*/
|
|
170
|
+
interface LinkProps {
|
|
171
|
+
href: string;
|
|
172
|
+
children: React.ReactNode;
|
|
173
|
+
variant?: "default" | "primary" | "secondary" | "ghost" | "underline";
|
|
174
|
+
size?: "sm" | "md" | "lg";
|
|
175
|
+
external?: boolean;
|
|
176
|
+
className?: string;
|
|
177
|
+
onClick?: () => void;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Link 컴포넌트 / Link component
|
|
181
|
+
*
|
|
182
|
+
* 링크를 표시하는 컴포넌트입니다.
|
|
183
|
+
* 외부 링크의 경우 자동으로 `target="_blank"`와 `rel="noopener noreferrer"`를 설정합니다.
|
|
184
|
+
*
|
|
185
|
+
* Link component for displaying links.
|
|
186
|
+
* Automatically sets `target="_blank"` and `rel="noopener noreferrer"` for external links.
|
|
187
|
+
*
|
|
188
|
+
* @component
|
|
189
|
+
* @example
|
|
190
|
+
* // 기본 사용 / Basic usage
|
|
191
|
+
* <Link href="/about">소개</Link>
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* // 외부 링크 / External link
|
|
195
|
+
* <Link href="https://example.com" external>
|
|
196
|
+
* 외부 사이트
|
|
197
|
+
* </Link>
|
|
198
|
+
*
|
|
199
|
+
* @example
|
|
200
|
+
* // Primary 스타일 / Primary style
|
|
201
|
+
* <Link href="/contact" variant="primary" size="lg">
|
|
202
|
+
* 문의하기
|
|
203
|
+
* </Link>
|
|
204
|
+
*
|
|
205
|
+
* @param {LinkProps} props - Link 컴포넌트의 props / Link component props
|
|
206
|
+
* @returns {JSX.Element} Link 컴포넌트 / Link component
|
|
207
|
+
*/
|
|
208
|
+
declare function Link({ href, children, className, variant, size, external, onClick }: LinkProps): react_jsx_runtime.JSX.Element;
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Icon Config Types
|
|
212
|
+
*
|
|
213
|
+
* Icon 시스템의 설정 타입 정의
|
|
214
|
+
* 상태관리는 서비스 레벨에서 관리 (Zustand 등)
|
|
215
|
+
*/
|
|
216
|
+
type IconSet = 'lucide' | 'phosphor' | 'untitled';
|
|
217
|
+
type PhosphorWeight = 'thin' | 'light' | 'regular' | 'bold' | 'duotone' | 'fill';
|
|
218
|
+
interface IconConfig {
|
|
219
|
+
set: IconSet;
|
|
220
|
+
weight: PhosphorWeight;
|
|
221
|
+
size: number;
|
|
222
|
+
color: string;
|
|
223
|
+
strokeWidth?: number;
|
|
224
|
+
}
|
|
225
|
+
declare const defaultIconConfig: IconConfig;
|
|
226
|
+
/**
|
|
227
|
+
* 세트별 기본 strokeWidth
|
|
228
|
+
*/
|
|
229
|
+
declare const getDefaultStrokeWidth: (set: IconSet) => number;
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* IconProvider 컴포넌트 Props
|
|
233
|
+
*
|
|
234
|
+
* IconProvider component props interface.
|
|
235
|
+
*
|
|
236
|
+
* @interface IconProviderProps
|
|
237
|
+
*/
|
|
238
|
+
interface IconProviderProps {
|
|
239
|
+
/** 아이콘 세트 (lucide, phosphor, untitled) / Icon set (lucide, phosphor, untitled) */
|
|
240
|
+
set?: IconSet;
|
|
241
|
+
/** Phosphor 아이콘 weight (thin, light, regular, bold, duotone, fill) / Phosphor icon weight */
|
|
242
|
+
weight?: PhosphorWeight;
|
|
243
|
+
/** 기본 아이콘 크기 / Default icon size */
|
|
244
|
+
size?: number;
|
|
245
|
+
/** 기본 아이콘 색상 / Default icon color */
|
|
246
|
+
color?: string;
|
|
247
|
+
/** Lucide/Untitled 아이콘 stroke width / Lucide/Untitled icon stroke width */
|
|
248
|
+
strokeWidth?: number;
|
|
249
|
+
/** 자식 컴포넌트 / Child components */
|
|
250
|
+
children: React.ReactNode;
|
|
251
|
+
}
|
|
252
|
+
interface IconContextValue extends IconConfig {
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* IconProvider 컴포넌트
|
|
256
|
+
*
|
|
257
|
+
* 전역 아이콘 설정을 Context로 제공합니다.
|
|
258
|
+
* 서비스에서 Zustand로 관리한 값을 props로 전달할 수 있습니다.
|
|
259
|
+
*
|
|
260
|
+
* IconProvider component
|
|
261
|
+
*
|
|
262
|
+
* Provides global icon settings through Context API.
|
|
263
|
+
* Can receive values managed by Zustand at the service level.
|
|
264
|
+
*
|
|
265
|
+
* @component
|
|
266
|
+
* @example
|
|
267
|
+
* ```tsx
|
|
268
|
+
* // 기본 사용 / Basic usage
|
|
269
|
+
* <IconProvider set="phosphor" weight="regular" size={20}>
|
|
270
|
+
* <App />
|
|
271
|
+
* </IconProvider>
|
|
272
|
+
*
|
|
273
|
+
* // Zustand와 함께 사용 / With Zustand
|
|
274
|
+
* const iconConfig = useIconStore(state => state.iconConfig)
|
|
275
|
+
* <IconProvider {...iconConfig}>
|
|
276
|
+
* <App />
|
|
277
|
+
* </IconProvider>
|
|
278
|
+
*
|
|
279
|
+
* // Lucide 아이콘 사용 / Using Lucide icons
|
|
280
|
+
* <IconProvider set="lucide" size={24} strokeWidth={1.5}>
|
|
281
|
+
* <App />
|
|
282
|
+
* </IconProvider>
|
|
283
|
+
* ```
|
|
284
|
+
*
|
|
285
|
+
* @param props - IconProvider 컴포넌트 props / IconProvider component props
|
|
286
|
+
* @returns IconProvider 컴포넌트 / IconProvider component
|
|
287
|
+
*/
|
|
288
|
+
declare function IconProvider({ set, weight, size, color, strokeWidth, children, }: IconProviderProps): react_jsx_runtime.JSX.Element;
|
|
289
|
+
/**
|
|
290
|
+
* useIconContext Hook
|
|
291
|
+
*
|
|
292
|
+
* Icon Context를 사용하는 Hook입니다.
|
|
293
|
+
* Icon 컴포넌트 내부에서 사용됩니다.
|
|
294
|
+
*
|
|
295
|
+
* Hook to use Icon Context.
|
|
296
|
+
* Used internally by Icon component.
|
|
297
|
+
*
|
|
298
|
+
* @returns Icon 설정 값 / Icon configuration value
|
|
299
|
+
*
|
|
300
|
+
* @example
|
|
301
|
+
* ```tsx
|
|
302
|
+
* // Icon 컴포넌트 내부에서 사용 / Used inside Icon component
|
|
303
|
+
* const config = useIconContext()
|
|
304
|
+
* const iconSet = config.set
|
|
305
|
+
* const iconSize = config.size
|
|
306
|
+
* ```
|
|
307
|
+
*/
|
|
308
|
+
declare function useIconContext(): IconContextValue;
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Icon Provider System
|
|
312
|
+
*
|
|
313
|
+
* Supports multiple icon libraries:
|
|
314
|
+
* - Lucide Icons (default)
|
|
315
|
+
* - Phosphor Icons
|
|
316
|
+
* - Untitled Icons (SVG-based)
|
|
317
|
+
*
|
|
318
|
+
* Only imports icons that are actually used in the project for optimal bundle size.
|
|
319
|
+
*/
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Project-specific icon list
|
|
323
|
+
* These are the icons actually used in SumUp project
|
|
324
|
+
* Only these icons will be loaded for optimal bundle size
|
|
325
|
+
*/
|
|
326
|
+
declare const PROJECT_ICONS: {
|
|
327
|
+
readonly home: {
|
|
328
|
+
readonly lucide: "Home";
|
|
329
|
+
readonly phosphor: "House";
|
|
330
|
+
readonly untitled: "home";
|
|
331
|
+
};
|
|
332
|
+
readonly 'layout-dashboard': {
|
|
333
|
+
readonly lucide: "LayoutDashboard";
|
|
334
|
+
readonly phosphor: "SquaresFour";
|
|
335
|
+
readonly untitled: "layout-dashboard";
|
|
336
|
+
};
|
|
337
|
+
readonly folder: {
|
|
338
|
+
readonly lucide: "Folder";
|
|
339
|
+
readonly phosphor: "Folder";
|
|
340
|
+
readonly untitled: "folder";
|
|
341
|
+
};
|
|
342
|
+
readonly 'alert-circle': {
|
|
343
|
+
readonly lucide: "AlertCircle";
|
|
344
|
+
readonly phosphor: "WarningCircle";
|
|
345
|
+
readonly untitled: "alert-circle";
|
|
346
|
+
};
|
|
347
|
+
readonly alertCircle: {
|
|
348
|
+
readonly lucide: "AlertCircle";
|
|
349
|
+
readonly phosphor: "WarningCircle";
|
|
350
|
+
readonly untitled: "alert-circle";
|
|
351
|
+
};
|
|
352
|
+
readonly columns: {
|
|
353
|
+
readonly lucide: "Columns";
|
|
354
|
+
readonly phosphor: "Columns";
|
|
355
|
+
readonly untitled: "columns";
|
|
356
|
+
};
|
|
357
|
+
readonly users: {
|
|
358
|
+
readonly lucide: "Users";
|
|
359
|
+
readonly phosphor: "Users";
|
|
360
|
+
readonly untitled: "users";
|
|
361
|
+
};
|
|
362
|
+
readonly settings: {
|
|
363
|
+
readonly lucide: "Settings";
|
|
364
|
+
readonly phosphor: "Gear";
|
|
365
|
+
readonly untitled: "settings";
|
|
366
|
+
};
|
|
367
|
+
readonly menu: {
|
|
368
|
+
readonly lucide: "Menu";
|
|
369
|
+
readonly phosphor: "List";
|
|
370
|
+
readonly untitled: "menu";
|
|
371
|
+
};
|
|
372
|
+
readonly close: {
|
|
373
|
+
readonly lucide: "X";
|
|
374
|
+
readonly phosphor: "X";
|
|
375
|
+
readonly untitled: "close";
|
|
376
|
+
};
|
|
377
|
+
readonly chevronLeft: {
|
|
378
|
+
readonly lucide: "ChevronLeft";
|
|
379
|
+
readonly phosphor: "CaretLeft";
|
|
380
|
+
readonly untitled: "chevron-left";
|
|
381
|
+
};
|
|
382
|
+
readonly chevronRight: {
|
|
383
|
+
readonly lucide: "ChevronRight";
|
|
384
|
+
readonly phosphor: "CaretRight";
|
|
385
|
+
readonly untitled: "chevron-right";
|
|
386
|
+
};
|
|
387
|
+
readonly chevronDown: {
|
|
388
|
+
readonly lucide: "ChevronDown";
|
|
389
|
+
readonly phosphor: "CaretDown";
|
|
390
|
+
readonly untitled: "chevron-down";
|
|
391
|
+
};
|
|
392
|
+
readonly chevronUp: {
|
|
393
|
+
readonly lucide: "ChevronUp";
|
|
394
|
+
readonly phosphor: "CaretUp";
|
|
395
|
+
readonly untitled: "chevron-up";
|
|
396
|
+
};
|
|
397
|
+
readonly arrowLeft: {
|
|
398
|
+
readonly lucide: "ArrowLeft";
|
|
399
|
+
readonly phosphor: "ArrowLeft";
|
|
400
|
+
readonly untitled: "arrow-left";
|
|
401
|
+
};
|
|
402
|
+
readonly arrowRight: {
|
|
403
|
+
readonly lucide: "ArrowRight";
|
|
404
|
+
readonly phosphor: "ArrowRight";
|
|
405
|
+
readonly untitled: "arrow-right";
|
|
406
|
+
};
|
|
407
|
+
readonly arrowUp: {
|
|
408
|
+
readonly lucide: "ArrowUp";
|
|
409
|
+
readonly phosphor: "ArrowUp";
|
|
410
|
+
readonly untitled: "arrow-up";
|
|
411
|
+
};
|
|
412
|
+
readonly arrowDown: {
|
|
413
|
+
readonly lucide: "ArrowDown";
|
|
414
|
+
readonly phosphor: "ArrowDown";
|
|
415
|
+
readonly untitled: "arrow-down";
|
|
416
|
+
};
|
|
417
|
+
readonly add: {
|
|
418
|
+
readonly lucide: "Plus";
|
|
419
|
+
readonly phosphor: "Plus";
|
|
420
|
+
readonly untitled: "add";
|
|
421
|
+
};
|
|
422
|
+
readonly edit: {
|
|
423
|
+
readonly lucide: "Edit";
|
|
424
|
+
readonly phosphor: "Pencil";
|
|
425
|
+
readonly untitled: "edit";
|
|
426
|
+
};
|
|
427
|
+
readonly pencil: {
|
|
428
|
+
readonly lucide: "Pencil";
|
|
429
|
+
readonly phosphor: "Pencil";
|
|
430
|
+
readonly untitled: "pencil";
|
|
431
|
+
};
|
|
432
|
+
readonly delete: {
|
|
433
|
+
readonly lucide: "Trash2";
|
|
434
|
+
readonly phosphor: "Trash";
|
|
435
|
+
readonly untitled: "trash";
|
|
436
|
+
};
|
|
437
|
+
readonly trash: {
|
|
438
|
+
readonly lucide: "Trash2";
|
|
439
|
+
readonly phosphor: "Trash";
|
|
440
|
+
readonly untitled: "trash";
|
|
441
|
+
};
|
|
442
|
+
readonly upload: {
|
|
443
|
+
readonly lucide: "Upload";
|
|
444
|
+
readonly phosphor: "Upload";
|
|
445
|
+
readonly untitled: "upload";
|
|
446
|
+
};
|
|
447
|
+
readonly download: {
|
|
448
|
+
readonly lucide: "Download";
|
|
449
|
+
readonly phosphor: "Download";
|
|
450
|
+
readonly untitled: "download";
|
|
451
|
+
};
|
|
452
|
+
readonly x: {
|
|
453
|
+
readonly lucide: "X";
|
|
454
|
+
readonly phosphor: "X";
|
|
455
|
+
readonly untitled: "close";
|
|
456
|
+
};
|
|
457
|
+
readonly check: {
|
|
458
|
+
readonly lucide: "Check";
|
|
459
|
+
readonly phosphor: "Check";
|
|
460
|
+
readonly untitled: "check";
|
|
461
|
+
};
|
|
462
|
+
readonly search: {
|
|
463
|
+
readonly lucide: "Search";
|
|
464
|
+
readonly phosphor: "MagnifyingGlass";
|
|
465
|
+
readonly untitled: "search";
|
|
466
|
+
};
|
|
467
|
+
readonly share: {
|
|
468
|
+
readonly lucide: "Share";
|
|
469
|
+
readonly phosphor: "Share";
|
|
470
|
+
readonly untitled: "share";
|
|
471
|
+
};
|
|
472
|
+
readonly copy: {
|
|
473
|
+
readonly lucide: "Copy";
|
|
474
|
+
readonly phosphor: "Copy";
|
|
475
|
+
readonly untitled: "copy";
|
|
476
|
+
};
|
|
477
|
+
readonly save: {
|
|
478
|
+
readonly lucide: "Save";
|
|
479
|
+
readonly phosphor: "FloppyDisk";
|
|
480
|
+
readonly untitled: "save";
|
|
481
|
+
};
|
|
482
|
+
readonly loader: {
|
|
483
|
+
readonly lucide: "Loader2";
|
|
484
|
+
readonly phosphor: "Spinner";
|
|
485
|
+
readonly untitled: "loader";
|
|
486
|
+
};
|
|
487
|
+
readonly loader2: {
|
|
488
|
+
readonly lucide: "Loader2";
|
|
489
|
+
readonly phosphor: "Spinner";
|
|
490
|
+
readonly untitled: "loader";
|
|
491
|
+
};
|
|
492
|
+
readonly 'check-circle': {
|
|
493
|
+
readonly lucide: "CheckCircle";
|
|
494
|
+
readonly phosphor: "CheckCircle";
|
|
495
|
+
readonly untitled: "check-circle";
|
|
496
|
+
};
|
|
497
|
+
readonly checkCircle: {
|
|
498
|
+
readonly lucide: "CheckCircle";
|
|
499
|
+
readonly phosphor: "CheckCircle";
|
|
500
|
+
readonly untitled: "check-circle";
|
|
501
|
+
};
|
|
502
|
+
readonly success: {
|
|
503
|
+
readonly lucide: "CheckCircle";
|
|
504
|
+
readonly phosphor: "CheckCircle";
|
|
505
|
+
readonly untitled: "check-circle";
|
|
506
|
+
};
|
|
507
|
+
readonly error: {
|
|
508
|
+
readonly lucide: "XCircle";
|
|
509
|
+
readonly phosphor: "XCircle";
|
|
510
|
+
readonly untitled: "error";
|
|
511
|
+
};
|
|
512
|
+
readonly warning: {
|
|
513
|
+
readonly lucide: "AlertCircle";
|
|
514
|
+
readonly phosphor: "WarningCircle";
|
|
515
|
+
readonly untitled: "warning";
|
|
516
|
+
};
|
|
517
|
+
readonly info: {
|
|
518
|
+
readonly lucide: "Info";
|
|
519
|
+
readonly phosphor: "Info";
|
|
520
|
+
readonly untitled: "info";
|
|
521
|
+
};
|
|
522
|
+
readonly refresh: {
|
|
523
|
+
readonly lucide: "RefreshCw";
|
|
524
|
+
readonly phosphor: "ArrowClockwise";
|
|
525
|
+
readonly untitled: "refresh";
|
|
526
|
+
};
|
|
527
|
+
readonly refreshCw: {
|
|
528
|
+
readonly lucide: "RefreshCw";
|
|
529
|
+
readonly phosphor: "ArrowClockwise";
|
|
530
|
+
readonly untitled: "refresh";
|
|
531
|
+
};
|
|
532
|
+
readonly bell: {
|
|
533
|
+
readonly lucide: "Bell";
|
|
534
|
+
readonly phosphor: "Bell";
|
|
535
|
+
readonly untitled: "bell";
|
|
536
|
+
};
|
|
537
|
+
readonly heart: {
|
|
538
|
+
readonly lucide: "Heart";
|
|
539
|
+
readonly phosphor: "Heart";
|
|
540
|
+
readonly untitled: "heart";
|
|
541
|
+
};
|
|
542
|
+
readonly star: {
|
|
543
|
+
readonly lucide: "Star";
|
|
544
|
+
readonly phosphor: "Star";
|
|
545
|
+
readonly untitled: "star";
|
|
546
|
+
};
|
|
547
|
+
readonly bookmark: {
|
|
548
|
+
readonly lucide: "Bookmark";
|
|
549
|
+
readonly phosphor: "Bookmark";
|
|
550
|
+
readonly untitled: "bookmark";
|
|
551
|
+
};
|
|
552
|
+
readonly user: {
|
|
553
|
+
readonly lucide: "User";
|
|
554
|
+
readonly phosphor: "User";
|
|
555
|
+
readonly untitled: "user";
|
|
556
|
+
};
|
|
557
|
+
readonly userPlus: {
|
|
558
|
+
readonly lucide: "UserPlus";
|
|
559
|
+
readonly phosphor: "UserPlus";
|
|
560
|
+
readonly untitled: "user-plus";
|
|
561
|
+
};
|
|
562
|
+
readonly logIn: {
|
|
563
|
+
readonly lucide: "LogIn";
|
|
564
|
+
readonly phosphor: "SignIn";
|
|
565
|
+
readonly untitled: "log-in";
|
|
566
|
+
};
|
|
567
|
+
readonly logOut: {
|
|
568
|
+
readonly lucide: "LogOut";
|
|
569
|
+
readonly phosphor: "SignOut";
|
|
570
|
+
readonly untitled: "log-out";
|
|
571
|
+
};
|
|
572
|
+
readonly chrome: {
|
|
573
|
+
readonly lucide: "Chrome";
|
|
574
|
+
readonly phosphor: "ChromeLogo";
|
|
575
|
+
readonly untitled: "chrome";
|
|
576
|
+
};
|
|
577
|
+
readonly github: {
|
|
578
|
+
readonly lucide: "Github";
|
|
579
|
+
readonly phosphor: "GithubLogo";
|
|
580
|
+
readonly untitled: "github";
|
|
581
|
+
};
|
|
582
|
+
readonly message: {
|
|
583
|
+
readonly lucide: "MessageCircle";
|
|
584
|
+
readonly phosphor: "ChatCircle";
|
|
585
|
+
readonly untitled: "message";
|
|
586
|
+
};
|
|
587
|
+
readonly messageSquare: {
|
|
588
|
+
readonly lucide: "MessageSquare";
|
|
589
|
+
readonly phosphor: "ChatSquare";
|
|
590
|
+
readonly untitled: "message-square";
|
|
591
|
+
};
|
|
592
|
+
readonly 'message-square': {
|
|
593
|
+
readonly lucide: "MessageSquare";
|
|
594
|
+
readonly phosphor: "ChatSquare";
|
|
595
|
+
readonly untitled: "message-square";
|
|
596
|
+
};
|
|
597
|
+
readonly inbox: {
|
|
598
|
+
readonly lucide: "Inbox";
|
|
599
|
+
readonly phosphor: "Inbox";
|
|
600
|
+
readonly untitled: "inbox";
|
|
601
|
+
};
|
|
602
|
+
readonly calendar: {
|
|
603
|
+
readonly lucide: "Calendar";
|
|
604
|
+
readonly phosphor: "Calendar";
|
|
605
|
+
readonly untitled: "calendar";
|
|
606
|
+
};
|
|
607
|
+
readonly calendarPlus: {
|
|
608
|
+
readonly lucide: "CalendarPlus";
|
|
609
|
+
readonly phosphor: "CalendarPlus";
|
|
610
|
+
readonly untitled: "calendar-plus";
|
|
611
|
+
};
|
|
612
|
+
readonly checkSquare: {
|
|
613
|
+
readonly lucide: "CheckSquare";
|
|
614
|
+
readonly phosphor: "CheckSquare";
|
|
615
|
+
readonly untitled: "check-square";
|
|
616
|
+
};
|
|
617
|
+
readonly clock: {
|
|
618
|
+
readonly lucide: "Clock";
|
|
619
|
+
readonly phosphor: "Clock";
|
|
620
|
+
readonly untitled: "clock";
|
|
621
|
+
};
|
|
622
|
+
readonly book: {
|
|
623
|
+
readonly lucide: "Book";
|
|
624
|
+
readonly phosphor: "Book";
|
|
625
|
+
readonly untitled: "book";
|
|
626
|
+
};
|
|
627
|
+
readonly bookOpen: {
|
|
628
|
+
readonly lucide: "BookOpen";
|
|
629
|
+
readonly phosphor: "BookOpen";
|
|
630
|
+
readonly untitled: "book-open";
|
|
631
|
+
};
|
|
632
|
+
readonly monitor: {
|
|
633
|
+
readonly lucide: "Monitor";
|
|
634
|
+
readonly phosphor: "Monitor";
|
|
635
|
+
readonly untitled: "monitor";
|
|
636
|
+
};
|
|
637
|
+
readonly sun: {
|
|
638
|
+
readonly lucide: "Sun";
|
|
639
|
+
readonly phosphor: "Sun";
|
|
640
|
+
readonly untitled: "sun";
|
|
641
|
+
};
|
|
642
|
+
readonly moon: {
|
|
643
|
+
readonly lucide: "Moon";
|
|
644
|
+
readonly phosphor: "Moon";
|
|
645
|
+
readonly untitled: "moon";
|
|
646
|
+
};
|
|
647
|
+
readonly sparkles: {
|
|
648
|
+
readonly lucide: "Sparkles";
|
|
649
|
+
readonly phosphor: "Sparkle";
|
|
650
|
+
readonly untitled: "sparkles";
|
|
651
|
+
};
|
|
652
|
+
readonly lightbulb: {
|
|
653
|
+
readonly lucide: "Lightbulb";
|
|
654
|
+
readonly phosphor: "Lightbulb";
|
|
655
|
+
readonly untitled: "lightbulb";
|
|
656
|
+
};
|
|
657
|
+
readonly brain: {
|
|
658
|
+
readonly lucide: "Brain";
|
|
659
|
+
readonly phosphor: "Brain";
|
|
660
|
+
readonly untitled: "brain";
|
|
661
|
+
};
|
|
662
|
+
readonly zap: {
|
|
663
|
+
readonly lucide: "Zap";
|
|
664
|
+
readonly phosphor: "Lightning";
|
|
665
|
+
readonly untitled: "zap";
|
|
666
|
+
};
|
|
667
|
+
readonly chart: {
|
|
668
|
+
readonly lucide: "BarChart3";
|
|
669
|
+
readonly phosphor: "ChartBar";
|
|
670
|
+
readonly untitled: "chart";
|
|
671
|
+
};
|
|
672
|
+
readonly barChart: {
|
|
673
|
+
readonly lucide: "BarChart";
|
|
674
|
+
readonly phosphor: "ChartBar";
|
|
675
|
+
readonly untitled: "bar-chart";
|
|
676
|
+
};
|
|
677
|
+
readonly trendingUp: {
|
|
678
|
+
readonly lucide: "TrendingUp";
|
|
679
|
+
readonly phosphor: "TrendUp";
|
|
680
|
+
readonly untitled: "trending-up";
|
|
681
|
+
};
|
|
682
|
+
readonly trendingDown: {
|
|
683
|
+
readonly lucide: "TrendingDown";
|
|
684
|
+
readonly phosphor: "TrendDown";
|
|
685
|
+
readonly untitled: "trending-down";
|
|
686
|
+
};
|
|
687
|
+
readonly activity: {
|
|
688
|
+
readonly lucide: "Activity";
|
|
689
|
+
readonly phosphor: "Activity";
|
|
690
|
+
readonly untitled: "activity";
|
|
691
|
+
};
|
|
692
|
+
readonly database: {
|
|
693
|
+
readonly lucide: "Database";
|
|
694
|
+
readonly phosphor: "Database";
|
|
695
|
+
readonly untitled: "database";
|
|
696
|
+
};
|
|
697
|
+
readonly dollarSign: {
|
|
698
|
+
readonly lucide: "DollarSign";
|
|
699
|
+
readonly phosphor: "CurrencyDollar";
|
|
700
|
+
readonly untitled: "dollar-sign";
|
|
701
|
+
};
|
|
702
|
+
readonly dollar: {
|
|
703
|
+
readonly lucide: "DollarSign";
|
|
704
|
+
readonly phosphor: "CurrencyDollar";
|
|
705
|
+
readonly untitled: "dollar-sign";
|
|
706
|
+
};
|
|
707
|
+
readonly currency: {
|
|
708
|
+
readonly lucide: "DollarSign";
|
|
709
|
+
readonly phosphor: "CurrencyDollar";
|
|
710
|
+
readonly untitled: "currency";
|
|
711
|
+
};
|
|
712
|
+
readonly lock: {
|
|
713
|
+
readonly lucide: "Lock";
|
|
714
|
+
readonly phosphor: "Lock";
|
|
715
|
+
readonly untitled: "lock";
|
|
716
|
+
};
|
|
717
|
+
readonly unlock: {
|
|
718
|
+
readonly lucide: "Unlock";
|
|
719
|
+
readonly phosphor: "LockOpen";
|
|
720
|
+
readonly untitled: "unlock";
|
|
721
|
+
};
|
|
722
|
+
readonly shield: {
|
|
723
|
+
readonly lucide: "Shield";
|
|
724
|
+
readonly phosphor: "Shield";
|
|
725
|
+
readonly untitled: "shield";
|
|
726
|
+
};
|
|
727
|
+
readonly key: {
|
|
728
|
+
readonly lucide: "Key";
|
|
729
|
+
readonly phosphor: "Key";
|
|
730
|
+
readonly untitled: "key";
|
|
731
|
+
};
|
|
732
|
+
readonly play: {
|
|
733
|
+
readonly lucide: "Play";
|
|
734
|
+
readonly phosphor: "Play";
|
|
735
|
+
readonly untitled: "play";
|
|
736
|
+
};
|
|
737
|
+
readonly pause: {
|
|
738
|
+
readonly lucide: "Pause";
|
|
739
|
+
readonly phosphor: "Pause";
|
|
740
|
+
readonly untitled: "pause";
|
|
741
|
+
};
|
|
742
|
+
readonly image: {
|
|
743
|
+
readonly lucide: "Image";
|
|
744
|
+
readonly phosphor: "Image";
|
|
745
|
+
readonly untitled: "image";
|
|
746
|
+
};
|
|
747
|
+
readonly video: {
|
|
748
|
+
readonly lucide: "Video";
|
|
749
|
+
readonly phosphor: "Video";
|
|
750
|
+
readonly untitled: "video";
|
|
751
|
+
};
|
|
752
|
+
readonly camera: {
|
|
753
|
+
readonly lucide: "Camera";
|
|
754
|
+
readonly phosphor: "Camera";
|
|
755
|
+
readonly untitled: "camera";
|
|
756
|
+
};
|
|
757
|
+
readonly fileText: {
|
|
758
|
+
readonly lucide: "FileText";
|
|
759
|
+
readonly phosphor: "FileText";
|
|
760
|
+
readonly untitled: "file-text";
|
|
761
|
+
};
|
|
762
|
+
readonly file: {
|
|
763
|
+
readonly lucide: "File";
|
|
764
|
+
readonly phosphor: "File";
|
|
765
|
+
readonly untitled: "file";
|
|
766
|
+
};
|
|
767
|
+
readonly externalLink: {
|
|
768
|
+
readonly lucide: "ExternalLink";
|
|
769
|
+
readonly phosphor: "ArrowSquareOut";
|
|
770
|
+
readonly untitled: "external-link";
|
|
771
|
+
};
|
|
772
|
+
readonly link: {
|
|
773
|
+
readonly lucide: "Link";
|
|
774
|
+
readonly phosphor: "Link";
|
|
775
|
+
readonly untitled: "link";
|
|
776
|
+
};
|
|
777
|
+
readonly moreHorizontal: {
|
|
778
|
+
readonly lucide: "MoreHorizontal";
|
|
779
|
+
readonly phosphor: "DotsThreeOutline";
|
|
780
|
+
readonly untitled: "more-horizontal";
|
|
781
|
+
};
|
|
782
|
+
readonly moreVertical: {
|
|
783
|
+
readonly lucide: "MoreVertical";
|
|
784
|
+
readonly phosphor: "DotsThreeVertical";
|
|
785
|
+
readonly untitled: "more-vertical";
|
|
786
|
+
};
|
|
787
|
+
readonly remove: {
|
|
788
|
+
readonly lucide: "Minus";
|
|
789
|
+
readonly phosphor: "Minus";
|
|
790
|
+
readonly untitled: "remove";
|
|
791
|
+
};
|
|
792
|
+
readonly eye: {
|
|
793
|
+
readonly lucide: "Eye";
|
|
794
|
+
readonly phosphor: "Eye";
|
|
795
|
+
readonly untitled: "eye";
|
|
796
|
+
};
|
|
797
|
+
readonly eyeOff: {
|
|
798
|
+
readonly lucide: "EyeOff";
|
|
799
|
+
readonly phosphor: "EyeSlash";
|
|
800
|
+
readonly untitled: "eye-off";
|
|
801
|
+
};
|
|
802
|
+
readonly smile: {
|
|
803
|
+
readonly lucide: "Smile";
|
|
804
|
+
readonly phosphor: "Smiley";
|
|
805
|
+
readonly untitled: "smile";
|
|
806
|
+
};
|
|
807
|
+
readonly frown: {
|
|
808
|
+
readonly lucide: "Frown";
|
|
809
|
+
readonly phosphor: "SmileySad";
|
|
810
|
+
readonly untitled: "frown";
|
|
811
|
+
};
|
|
812
|
+
readonly meh: {
|
|
813
|
+
readonly lucide: "Meh";
|
|
814
|
+
readonly phosphor: "SmileyMeh";
|
|
815
|
+
readonly untitled: "meh";
|
|
816
|
+
};
|
|
817
|
+
readonly mail: {
|
|
818
|
+
readonly lucide: "Mail";
|
|
819
|
+
readonly phosphor: "Envelope";
|
|
820
|
+
readonly untitled: "mail";
|
|
821
|
+
};
|
|
822
|
+
readonly phone: {
|
|
823
|
+
readonly lucide: "Phone";
|
|
824
|
+
readonly phosphor: "Phone";
|
|
825
|
+
readonly untitled: "phone";
|
|
826
|
+
};
|
|
827
|
+
readonly flag: {
|
|
828
|
+
readonly lucide: "Flag";
|
|
829
|
+
readonly phosphor: "Flag";
|
|
830
|
+
readonly untitled: "flag";
|
|
831
|
+
};
|
|
832
|
+
};
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* Icon Names - 자동완성 지원
|
|
836
|
+
*
|
|
837
|
+
* 이 파일은 TypeScript 자동완성을 위한 아이콘 이름 목록입니다.
|
|
838
|
+
* 실제 아이콘은 icons.ts와 PROJECT_ICONS에서 관리됩니다.
|
|
839
|
+
*/
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* PROJECT_ICONS에 정의된 모든 아이콘 이름
|
|
843
|
+
*/
|
|
844
|
+
type ProjectIconName = keyof typeof PROJECT_ICONS;
|
|
845
|
+
/**
|
|
846
|
+
* 사용 가능한 모든 아이콘 이름 (icons.ts + PROJECT_ICONS)
|
|
847
|
+
*/
|
|
848
|
+
type AllIconName = IconName | ProjectIconName;
|
|
849
|
+
/**
|
|
850
|
+
* 아이콘 이름 목록 (자동완성용)
|
|
851
|
+
*/
|
|
852
|
+
declare const iconNames: readonly ["home", "menu", "close", "search", "settings", "user", "bell", "arrowLeft", "arrowRight", "arrowUp", "arrowDown", "chevronLeft", "chevronRight", "chevronUp", "chevronDown", "add", "edit", "delete", "remove", "check", "share", "download", "upload", "save", "copy", "refresh", "search", "loader", "success", "error", "warning", "info", "alertCircle", "heart", "star", "bookmark", "logIn", "logOut", "shield", "key", "lock", "unlock", "eye", "eyeOff", "users", "userPlus", "chart", "barChart", "pieChart", "trendingUp", "trendingDown", "activity", "database", "zap", "circle", "dollarSign", "dollar", "currency", "fileText", "file", "folder", "book", "bookOpen", "image", "video", "camera", "message", "messageSquare", "phone", "mail", "send", "play", "pause", "mic", "headphones", "smile", "frown", "meh", "laugh", "angry", "thumbsUp", "thumbsDown", "clock", "timer", "calendar", "calendarDays", "monitor", "sun", "moon", "sparkles", "lightbulb", "brain", "externalLink", "link", "moreHorizontal", "moreVertical"];
|
|
853
|
+
/**
|
|
854
|
+
* 프로바이더별 아이콘 이름 매핑 (참고용)
|
|
855
|
+
*
|
|
856
|
+
* @example
|
|
857
|
+
* // Lucide 아이콘 사용
|
|
858
|
+
* <Icon name="home" provider="lucide" /> // Lucide: Home
|
|
859
|
+
*
|
|
860
|
+
* // Phosphor 아이콘 사용
|
|
861
|
+
* <Icon name="home" provider="phosphor" /> // Phosphor: House
|
|
862
|
+
*
|
|
863
|
+
* // Untitled 아이콘 사용
|
|
864
|
+
* <Icon name="home" provider="untitled" /> // Untitled: home
|
|
865
|
+
*/
|
|
866
|
+
declare const iconProviderMapping: Record<string, {
|
|
867
|
+
lucide: string;
|
|
868
|
+
phosphor: string;
|
|
869
|
+
untitled: string;
|
|
870
|
+
}>;
|
|
871
|
+
/**
|
|
872
|
+
* 아이콘 이름이 유효한지 확인
|
|
873
|
+
*/
|
|
874
|
+
declare function isValidIconName(name: string): name is AllIconName;
|
|
875
|
+
/**
|
|
876
|
+
* 프로바이더별 아이콘 이름 가져오기
|
|
877
|
+
*/
|
|
878
|
+
declare function getIconNameForProvider(iconName: string, provider: 'lucide' | 'phosphor' | 'untitled'): string | null;
|
|
879
|
+
|
|
880
|
+
/**
|
|
881
|
+
* Icon 컴포넌트 Props
|
|
882
|
+
*
|
|
883
|
+
* Icon component props interface.
|
|
884
|
+
*
|
|
885
|
+
* @interface IconProps
|
|
886
|
+
*/
|
|
887
|
+
interface IconProps {
|
|
888
|
+
/** 아이콘 이름 / Icon name */
|
|
889
|
+
name: AllIconName;
|
|
890
|
+
/** 아이콘 크기 (숫자 또는 문자열) / Icon size (number or string) */
|
|
891
|
+
size?: number | string;
|
|
892
|
+
/** 추가 CSS 클래스 / Additional CSS classes */
|
|
893
|
+
className?: string;
|
|
894
|
+
/** 감정 아이콘 타입 / Emotion icon type */
|
|
895
|
+
emotion?: keyof typeof emotionIcons;
|
|
896
|
+
/** 상태 아이콘 타입 / Status icon type */
|
|
897
|
+
status?: keyof typeof statusIcons;
|
|
898
|
+
/** 아이콘 프로바이더 오버라이드 (전역 설정 무시) / Icon provider override (ignores global config) */
|
|
899
|
+
provider?: IconSet;
|
|
900
|
+
/** 부드러운 애니메이션 효과 / Smooth animation effect */
|
|
901
|
+
animated?: boolean;
|
|
902
|
+
/** 펄스 애니메이션 / Pulse animation */
|
|
903
|
+
pulse?: boolean;
|
|
904
|
+
/** 회전 애니메이션 / Spin animation */
|
|
905
|
+
spin?: boolean;
|
|
906
|
+
/** 바운스 애니메이션 / Bounce animation */
|
|
907
|
+
bounce?: boolean;
|
|
908
|
+
/** 색상 변형 / Color variant */
|
|
909
|
+
variant?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'muted';
|
|
910
|
+
/** Phosphor 아이콘 weight 오버라이드 / Phosphor icon weight override */
|
|
911
|
+
weight?: PhosphorWeight;
|
|
912
|
+
/** 스크린 리더용 라벨 (의미 있는 아이콘인 경우) / Screen reader label (for meaningful icons) */
|
|
913
|
+
'aria-label'?: string;
|
|
914
|
+
/** 장식용 아이콘인 경우 true (스크린 리더에서 숨김) / Set to true for decorative icons (hidden from screen readers) */
|
|
915
|
+
'aria-hidden'?: boolean;
|
|
916
|
+
}
|
|
917
|
+
/**
|
|
918
|
+
* Icon 컴포넌트
|
|
919
|
+
*
|
|
920
|
+
* 다중 아이콘 라이브러리(Lucide, Phosphor, Untitled)를 지원하는 통합 아이콘 컴포넌트입니다.
|
|
921
|
+
* IconProvider를 통해 전역 설정을 관리할 수 있으며, 개별 아이콘에서도 설정을 오버라이드할 수 있습니다.
|
|
922
|
+
*
|
|
923
|
+
* Icon component that supports multiple icon libraries (Lucide, Phosphor, Untitled).
|
|
924
|
+
* Global settings can be managed through IconProvider, and individual icons can override settings.
|
|
925
|
+
*
|
|
926
|
+
* @component
|
|
927
|
+
* @example
|
|
928
|
+
* ```tsx
|
|
929
|
+
* // 기본 사용 / Basic usage
|
|
930
|
+
* <Icon name="heart" />
|
|
931
|
+
*
|
|
932
|
+
* // 크기 지정 / Specify size
|
|
933
|
+
* <Icon name="user" size={24} />
|
|
934
|
+
*
|
|
935
|
+
* // 색상 변형 / Color variant
|
|
936
|
+
* <Icon name="check" variant="success" />
|
|
937
|
+
*
|
|
938
|
+
* // 애니메이션 / Animation
|
|
939
|
+
* <Icon name="loader" spin />
|
|
940
|
+
* <Icon name="heart" pulse />
|
|
941
|
+
*
|
|
942
|
+
* // 접근성 / Accessibility
|
|
943
|
+
* <Icon name="search" aria-label="검색" />
|
|
944
|
+
* <Icon name="decorative-icon" aria-hidden />
|
|
945
|
+
*
|
|
946
|
+
* // 감정 아이콘 / Emotion icon
|
|
947
|
+
* <Icon emotion="happy" />
|
|
948
|
+
*
|
|
949
|
+
* // 상태 아이콘 / Status icon
|
|
950
|
+
* <Icon status="loading" spin />
|
|
951
|
+
* ```
|
|
952
|
+
*
|
|
953
|
+
* @param props - Icon 컴포넌트 props / Icon component props
|
|
954
|
+
* @returns Icon 컴포넌트 / Icon component
|
|
955
|
+
*/
|
|
956
|
+
declare const IconComponent: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<HTMLSpanElement>>;
|
|
957
|
+
declare const Icon: typeof IconComponent;
|
|
958
|
+
/**
|
|
959
|
+
* EmotionIcon 컴포넌트
|
|
960
|
+
*
|
|
961
|
+
* 감정을 표현하는 아이콘 컴포넌트입니다.
|
|
962
|
+
* Icon component for expressing emotions.
|
|
963
|
+
*
|
|
964
|
+
* @component
|
|
965
|
+
* @example
|
|
966
|
+
* ```tsx
|
|
967
|
+
* <EmotionIcon emotion="happy" />
|
|
968
|
+
* <EmotionIcon emotion="sad" size={24} />
|
|
969
|
+
* ```
|
|
970
|
+
*/
|
|
971
|
+
declare const EmotionIcon: React.ForwardRefExoticComponent<Omit<IconProps, "name"> & {
|
|
972
|
+
emotion: keyof typeof emotionIcons;
|
|
973
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
974
|
+
/**
|
|
975
|
+
* StatusIcon 컴포넌트
|
|
976
|
+
*
|
|
977
|
+
* 상태를 표현하는 아이콘 컴포넌트입니다.
|
|
978
|
+
* Icon component for expressing status.
|
|
979
|
+
*
|
|
980
|
+
* @component
|
|
981
|
+
* @example
|
|
982
|
+
* ```tsx
|
|
983
|
+
* <StatusIcon status="loading" spin />
|
|
984
|
+
* <StatusIcon status="success" variant="success" />
|
|
985
|
+
* ```
|
|
986
|
+
*/
|
|
987
|
+
declare const StatusIcon: React.ForwardRefExoticComponent<Omit<IconProps, "name"> & {
|
|
988
|
+
status: keyof typeof statusIcons;
|
|
989
|
+
} & React.RefAttributes<HTMLSpanElement>>;
|
|
990
|
+
/**
|
|
991
|
+
* LoadingIcon 컴포넌트
|
|
992
|
+
*
|
|
993
|
+
* 로딩 상태를 표시하는 전용 아이콘 컴포넌트입니다.
|
|
994
|
+
* Dedicated icon component for displaying loading status.
|
|
995
|
+
*
|
|
996
|
+
* @component
|
|
997
|
+
* @example
|
|
998
|
+
* ```tsx
|
|
999
|
+
* <LoadingIcon />
|
|
1000
|
+
* <LoadingIcon size={32} />
|
|
1001
|
+
* ```
|
|
1002
|
+
*/
|
|
1003
|
+
declare const LoadingIcon: React.ForwardRefExoticComponent<Omit<IconProps, "name" | "status"> & React.RefAttributes<HTMLDivElement>>;
|
|
1004
|
+
/**
|
|
1005
|
+
* SuccessIcon 컴포넌트
|
|
1006
|
+
*
|
|
1007
|
+
* 성공 상태를 표시하는 전용 아이콘 컴포넌트입니다.
|
|
1008
|
+
* Dedicated icon component for displaying success status.
|
|
1009
|
+
*
|
|
1010
|
+
* @component
|
|
1011
|
+
* @example
|
|
1012
|
+
* ```tsx
|
|
1013
|
+
* <SuccessIcon />
|
|
1014
|
+
* <SuccessIcon size={24} />
|
|
1015
|
+
* ```
|
|
1016
|
+
*/
|
|
1017
|
+
declare const SuccessIcon: React.ForwardRefExoticComponent<Omit<IconProps, "name" | "status"> & React.RefAttributes<HTMLDivElement>>;
|
|
1018
|
+
/**
|
|
1019
|
+
* ErrorIcon 컴포넌트
|
|
1020
|
+
*
|
|
1021
|
+
* 에러 상태를 표시하는 전용 아이콘 컴포넌트입니다.
|
|
1022
|
+
* Dedicated icon component for displaying error status.
|
|
1023
|
+
*
|
|
1024
|
+
* @component
|
|
1025
|
+
* @example
|
|
1026
|
+
* ```tsx
|
|
1027
|
+
* <ErrorIcon />
|
|
1028
|
+
* <ErrorIcon size={24} />
|
|
1029
|
+
* ```
|
|
1030
|
+
*/
|
|
1031
|
+
declare const ErrorIcon: React.ForwardRefExoticComponent<Omit<IconProps, "name" | "status"> & React.RefAttributes<HTMLDivElement>>;
|
|
1032
|
+
|
|
1033
|
+
/**
|
|
1034
|
+
* Avatar 컴포넌트의 props / Avatar component props
|
|
1035
|
+
* @typedef {Object} AvatarProps
|
|
1036
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - 아바타 크기 / Avatar size
|
|
1037
|
+
* @property {"default" | "glass"} [variant="default"] - 아바타 스타일 변형 / Avatar style variant
|
|
1038
|
+
* @property {string} [src] - 이미지 URL / Image URL
|
|
1039
|
+
* @property {string} [alt] - 이미지 대체 텍스트 / Image alt text
|
|
1040
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1041
|
+
*/
|
|
1042
|
+
interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1043
|
+
size?: "sm" | "md" | "lg";
|
|
1044
|
+
variant?: "default" | "glass";
|
|
1045
|
+
src?: string;
|
|
1046
|
+
alt?: string;
|
|
1047
|
+
}
|
|
1048
|
+
/**
|
|
1049
|
+
* AvatarImage 컴포넌트의 props
|
|
1050
|
+
* @typedef {Object} AvatarImageProps
|
|
1051
|
+
* @extends {React.ImgHTMLAttributes<HTMLImageElement>}
|
|
1052
|
+
*/
|
|
1053
|
+
interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
|
|
1054
|
+
}
|
|
1055
|
+
/**
|
|
1056
|
+
* AvatarFallback 컴포넌트의 props
|
|
1057
|
+
* @typedef {Object} AvatarFallbackProps
|
|
1058
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1059
|
+
*/
|
|
1060
|
+
interface AvatarFallbackProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1061
|
+
}
|
|
1062
|
+
/**
|
|
1063
|
+
* Avatar 컴포넌트 / Avatar component
|
|
1064
|
+
*
|
|
1065
|
+
* 사용자 프로필 이미지를 표시하는 컴포넌트입니다.
|
|
1066
|
+
* 이미지가 없을 경우 대체 텍스트나 초기 문자를 표시합니다.
|
|
1067
|
+
*
|
|
1068
|
+
* Component for displaying user profile images.
|
|
1069
|
+
* Shows fallback text or initials when image is not available.
|
|
1070
|
+
*
|
|
1071
|
+
* @component
|
|
1072
|
+
* @example
|
|
1073
|
+
* // 기본 사용 (이미지) / Basic usage (with image)
|
|
1074
|
+
* <Avatar src="/user.jpg" alt="사용자" />
|
|
1075
|
+
*
|
|
1076
|
+
* @example
|
|
1077
|
+
* // 대체 텍스트 / Fallback text
|
|
1078
|
+
* <Avatar alt="홍길동">홍</Avatar>
|
|
1079
|
+
*
|
|
1080
|
+
* @example
|
|
1081
|
+
* // Glass 스타일 / Glass style
|
|
1082
|
+
* <Avatar variant="glass" size="lg" src="/user.jpg" alt="사용자" />
|
|
1083
|
+
*
|
|
1084
|
+
* @param {AvatarProps} props - Avatar 컴포넌트의 props / Avatar component props
|
|
1085
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1086
|
+
* @returns {JSX.Element} Avatar 컴포넌트 / Avatar component
|
|
1087
|
+
*/
|
|
1088
|
+
declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
|
|
1089
|
+
/**
|
|
1090
|
+
* AvatarImage 컴포넌트 / AvatarImage component
|
|
1091
|
+
*
|
|
1092
|
+
* 아바타 이미지를 표시하는 컴포넌트입니다.
|
|
1093
|
+
* Displays the avatar image.
|
|
1094
|
+
*
|
|
1095
|
+
* @component
|
|
1096
|
+
* @param {AvatarImageProps} props - AvatarImage 컴포넌트의 props / AvatarImage component props
|
|
1097
|
+
* @param {React.Ref<HTMLImageElement>} ref - img 요소 ref / img element ref
|
|
1098
|
+
* @returns {JSX.Element} AvatarImage 컴포넌트 / AvatarImage component
|
|
1099
|
+
*/
|
|
1100
|
+
declare const AvatarImage: React.ForwardRefExoticComponent<AvatarImageProps & React.RefAttributes<HTMLImageElement>>;
|
|
1101
|
+
/**
|
|
1102
|
+
* AvatarFallback 컴포넌트 / AvatarFallback component
|
|
1103
|
+
*
|
|
1104
|
+
* 아바타 이미지가 없을 때 표시되는 대체 컴포넌트입니다.
|
|
1105
|
+
* Fallback component displayed when avatar image is not available.
|
|
1106
|
+
*
|
|
1107
|
+
* @component
|
|
1108
|
+
* @param {AvatarFallbackProps} props - AvatarFallback 컴포넌트의 props / AvatarFallback component props
|
|
1109
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1110
|
+
* @returns {JSX.Element} AvatarFallback 컴포넌트 / AvatarFallback component
|
|
1111
|
+
*/
|
|
1112
|
+
declare const AvatarFallback: React.ForwardRefExoticComponent<AvatarFallbackProps & React.RefAttributes<HTMLDivElement>>;
|
|
1113
|
+
|
|
1114
|
+
/**
|
|
1115
|
+
* Modal 컴포넌트의 props / Modal component props
|
|
1116
|
+
* @typedef {Object} ModalProps
|
|
1117
|
+
* @property {boolean} isOpen - 모달 열림/닫힘 상태 / Modal open/close state
|
|
1118
|
+
* @property {() => void} onClose - 모달 닫기 콜백 함수 / Modal close callback function
|
|
1119
|
+
* @property {React.ReactNode} children - 모달 내용 / Modal content
|
|
1120
|
+
* @property {"sm" | "md" | "lg" | "xl" | "2xl" | "3xl"} [size="md"] - 모달 크기 / Modal size
|
|
1121
|
+
* @property {boolean} [showCloseButton=true] - 닫기 버튼 표시 여부 / Show close button
|
|
1122
|
+
* @property {boolean} [closeOnOverlayClick=true] - 오버레이 클릭 시 닫기 여부 / Close on overlay click
|
|
1123
|
+
* @property {string} [title] - 모달 제목 / Modal title
|
|
1124
|
+
* @property {string} [description] - 모달 설명 / Modal description
|
|
1125
|
+
* @property {boolean} [showBackdrop=true] - 배경 오버레이 표시 여부 / Show backdrop overlay
|
|
1126
|
+
* @property {string} [backdropClassName] - 배경 오버레이 추가 CSS 클래스 / Additional CSS class for backdrop
|
|
1127
|
+
* @property {boolean} [centered=true] - 모달을 화면 중앙에 배치할지 여부 / Center modal on screen
|
|
1128
|
+
* @property {string} [className] - 모달 컨테이너 추가 CSS 클래스 / Additional CSS class for modal container
|
|
1129
|
+
*/
|
|
1130
|
+
interface ModalProps {
|
|
1131
|
+
isOpen: boolean;
|
|
1132
|
+
onClose: () => void;
|
|
1133
|
+
children: React.ReactNode;
|
|
1134
|
+
size?: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl";
|
|
1135
|
+
showCloseButton?: boolean;
|
|
1136
|
+
closeOnOverlayClick?: boolean;
|
|
1137
|
+
title?: string;
|
|
1138
|
+
description?: string;
|
|
1139
|
+
showBackdrop?: boolean;
|
|
1140
|
+
backdropClassName?: string;
|
|
1141
|
+
centered?: boolean;
|
|
1142
|
+
className?: string;
|
|
1143
|
+
}
|
|
1144
|
+
/**
|
|
1145
|
+
* Modal 컴포넌트 / Modal component
|
|
1146
|
+
*
|
|
1147
|
+
* 오버레이와 함께 표시되는 모달 다이얼로그 컴포넌트입니다.
|
|
1148
|
+
* ESC 키로 닫기, 오버레이 클릭으로 닫기, 접근성 속성(ARIA)을 지원합니다.
|
|
1149
|
+
*
|
|
1150
|
+
* Modal dialog component displayed with overlay.
|
|
1151
|
+
* Supports closing with ESC key, overlay click, and ARIA accessibility attributes.
|
|
1152
|
+
*
|
|
1153
|
+
* @component
|
|
1154
|
+
* @example
|
|
1155
|
+
* // 기본 사용 / Basic usage
|
|
1156
|
+
* const [isOpen, setIsOpen] = useState(false)
|
|
1157
|
+
*
|
|
1158
|
+
* <Modal isOpen={isOpen} onClose={() => setIsOpen(false)}>
|
|
1159
|
+
* <p>모달 내용</p>
|
|
1160
|
+
* </Modal>
|
|
1161
|
+
*
|
|
1162
|
+
* @example
|
|
1163
|
+
* // 제목과 설명 포함 / With title and description
|
|
1164
|
+
* <Modal
|
|
1165
|
+
* isOpen={isOpen}
|
|
1166
|
+
* onClose={() => setIsOpen(false)}
|
|
1167
|
+
* title="확인"
|
|
1168
|
+
* description="이 작업을 계속하시겠습니까?"
|
|
1169
|
+
* >
|
|
1170
|
+
* <Button onClick={handleConfirm}>확인</Button>
|
|
1171
|
+
* </Modal>
|
|
1172
|
+
*
|
|
1173
|
+
* @example
|
|
1174
|
+
* // 큰 크기 모달 / Large size modal
|
|
1175
|
+
* <Modal
|
|
1176
|
+
* isOpen={isOpen}
|
|
1177
|
+
* onClose={() => setIsOpen(false)}
|
|
1178
|
+
* size="xl"
|
|
1179
|
+
* closeOnOverlayClick={false}
|
|
1180
|
+
* >
|
|
1181
|
+
* <div>큰 모달 내용</div>
|
|
1182
|
+
* </Modal>
|
|
1183
|
+
*
|
|
1184
|
+
* @param {ModalProps} props - Modal 컴포넌트의 props / Modal component props
|
|
1185
|
+
* @param {React.Ref<HTMLDivElement>} ref - 모달 컨테이너 ref / Modal container ref
|
|
1186
|
+
* @returns {JSX.Element} Modal 컴포넌트 / Modal component
|
|
1187
|
+
*/
|
|
1188
|
+
declare const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<HTMLDivElement>>;
|
|
1189
|
+
|
|
1190
|
+
/**
|
|
1191
|
+
* Container 컴포넌트의 props
|
|
1192
|
+
* @typedef {Object} ContainerProps
|
|
1193
|
+
* @property {"sm" | "md" | "lg" | "xl" | "full"} [size="lg"] - 컨테이너 최대 너비
|
|
1194
|
+
* @property {"none" | "sm" | "md" | "lg" | "xl"} [padding="md"] - 내부 패딩 크기
|
|
1195
|
+
* @property {boolean} [centered=true] - 컨테이너를 중앙 정렬할지 여부
|
|
1196
|
+
* @property {boolean} [fluid=false] - 최대 너비 제한 없이 전체 너비 사용
|
|
1197
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1198
|
+
*/
|
|
1199
|
+
interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1200
|
+
size?: "sm" | "md" | "lg" | "xl" | "full";
|
|
1201
|
+
padding?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1202
|
+
centered?: boolean;
|
|
1203
|
+
fluid?: boolean;
|
|
1204
|
+
}
|
|
1205
|
+
/**
|
|
1206
|
+
* Container 컴포넌트
|
|
1207
|
+
*
|
|
1208
|
+
* 콘텐츠를 감싸는 컨테이너 컴포넌트입니다.
|
|
1209
|
+
* 반응형 최대 너비와 패딩을 제공하여 일관된 레이아웃을 구성합니다.
|
|
1210
|
+
*
|
|
1211
|
+
* @component
|
|
1212
|
+
* @example
|
|
1213
|
+
* // 기본 사용
|
|
1214
|
+
* <Container>
|
|
1215
|
+
* <h1>제목</h1>
|
|
1216
|
+
* <p>내용</p>
|
|
1217
|
+
* </Container>
|
|
1218
|
+
*
|
|
1219
|
+
* @example
|
|
1220
|
+
* // 작은 크기, 패딩 없음
|
|
1221
|
+
* <Container size="sm" padding="none">
|
|
1222
|
+
* <div>콘텐츠</div>
|
|
1223
|
+
* </Container>
|
|
1224
|
+
*
|
|
1225
|
+
* @example
|
|
1226
|
+
* // 전체 너비 사용
|
|
1227
|
+
* <Container fluid padding="xl">
|
|
1228
|
+
* <div>전체 너비 콘텐츠</div>
|
|
1229
|
+
* </Container>
|
|
1230
|
+
*
|
|
1231
|
+
* @param {ContainerProps} props - Container 컴포넌트의 props
|
|
1232
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref
|
|
1233
|
+
* @returns {JSX.Element} Container 컴포넌트
|
|
1234
|
+
*/
|
|
1235
|
+
declare const Container: React.ForwardRefExoticComponent<ContainerProps & React.RefAttributes<HTMLDivElement>>;
|
|
1236
|
+
|
|
1237
|
+
/**
|
|
1238
|
+
* Grid 컴포넌트의 props
|
|
1239
|
+
* @typedef {Object} GridProps
|
|
1240
|
+
* @property {1|2|3|4|5|6|7|8|9|10|11|12} [cols=1] - 그리드 열 개수
|
|
1241
|
+
* @property {"none" | "sm" | "md" | "lg" | "xl"} [gap="md"] - 그리드 아이템 간 간격
|
|
1242
|
+
* @property {"none" | "sm" | "md" | "lg" | "xl"} [gapX] - 가로 간격 (gap보다 우선)
|
|
1243
|
+
* @property {"none" | "sm" | "md" | "lg" | "xl"} [gapY] - 세로 간격
|
|
1244
|
+
* @property {boolean} [responsive=true] - 반응형 그리드 활성화 (모바일: 1열, 태블릿: 2열, 데스크톱: 지정 열)
|
|
1245
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1246
|
+
*/
|
|
1247
|
+
interface GridProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1248
|
+
cols?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
1249
|
+
gap?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1250
|
+
gapX?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1251
|
+
gapY?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1252
|
+
responsive?: boolean;
|
|
1253
|
+
}
|
|
1254
|
+
/**
|
|
1255
|
+
* Grid 컴포넌트
|
|
1256
|
+
*
|
|
1257
|
+
* CSS Grid를 사용한 그리드 레이아웃 컴포넌트입니다.
|
|
1258
|
+
* 반응형 그리드를 지원하여 모바일부터 데스크톱까지 최적화된 레이아웃을 제공합니다.
|
|
1259
|
+
*
|
|
1260
|
+
* @component
|
|
1261
|
+
* @example
|
|
1262
|
+
* // 기본 3열 그리드
|
|
1263
|
+
* <Grid cols={3} gap="md">
|
|
1264
|
+
* <div>아이템 1</div>
|
|
1265
|
+
* <div>아이템 2</div>
|
|
1266
|
+
* <div>아이템 3</div>
|
|
1267
|
+
* </Grid>
|
|
1268
|
+
*
|
|
1269
|
+
* @example
|
|
1270
|
+
* // 가로/세로 간격 분리
|
|
1271
|
+
* <Grid cols={4} gapX="lg" gapY="sm">
|
|
1272
|
+
* {items.map(item => <div key={item.id}>{item.content}</div>)}
|
|
1273
|
+
* </Grid>
|
|
1274
|
+
*
|
|
1275
|
+
* @example
|
|
1276
|
+
* // 반응형 비활성화 (고정 그리드)
|
|
1277
|
+
* <Grid cols={6} responsive={false} gap="lg">
|
|
1278
|
+
* <div>고정 6열</div>
|
|
1279
|
+
* </Grid>
|
|
1280
|
+
*
|
|
1281
|
+
* @param {GridProps} props - Grid 컴포넌트의 props
|
|
1282
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref
|
|
1283
|
+
* @returns {JSX.Element} Grid 컴포넌트
|
|
1284
|
+
*/
|
|
1285
|
+
declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>>;
|
|
1286
|
+
|
|
1287
|
+
/**
|
|
1288
|
+
* Stack 컴포넌트의 props
|
|
1289
|
+
* @typedef {Object} StackProps
|
|
1290
|
+
* @property {"vertical" | "horizontal"} [direction="vertical"] - 스택 방향
|
|
1291
|
+
* @property {"none" | "sm" | "md" | "lg" | "xl"} [spacing="md"] - 아이템 간 간격
|
|
1292
|
+
* @property {"start" | "center" | "end" | "stretch"} [align="start"] - 교차축 정렬
|
|
1293
|
+
* @property {"start" | "center" | "end" | "between" | "around" | "evenly"} [justify="start"] - 주축 정렬
|
|
1294
|
+
* @property {boolean} [wrap=false] - 아이템 줄바꿈 허용
|
|
1295
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1296
|
+
*/
|
|
1297
|
+
interface StackProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1298
|
+
direction?: "vertical" | "horizontal";
|
|
1299
|
+
spacing?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1300
|
+
align?: "start" | "center" | "end" | "stretch";
|
|
1301
|
+
justify?: "start" | "center" | "end" | "between" | "around" | "evenly";
|
|
1302
|
+
wrap?: boolean;
|
|
1303
|
+
}
|
|
1304
|
+
/**
|
|
1305
|
+
* Stack 컴포넌트
|
|
1306
|
+
*
|
|
1307
|
+
* Flexbox를 사용한 스택 레이아웃 컴포넌트입니다.
|
|
1308
|
+
* 수직 또는 수평 방향으로 아이템을 배치하고 정렬할 수 있습니다.
|
|
1309
|
+
*
|
|
1310
|
+
* @component
|
|
1311
|
+
* @example
|
|
1312
|
+
* // 기본 수직 스택
|
|
1313
|
+
* <Stack spacing="md">
|
|
1314
|
+
* <div>아이템 1</div>
|
|
1315
|
+
* <div>아이템 2</div>
|
|
1316
|
+
* </Stack>
|
|
1317
|
+
*
|
|
1318
|
+
* @example
|
|
1319
|
+
* // 수평 스택, 중앙 정렬
|
|
1320
|
+
* <Stack direction="horizontal" spacing="lg" align="center" justify="between">
|
|
1321
|
+
* <Button>왼쪽</Button>
|
|
1322
|
+
* <Button>오른쪽</Button>
|
|
1323
|
+
* </Stack>
|
|
1324
|
+
*
|
|
1325
|
+
* @example
|
|
1326
|
+
* // 줄바꿈 허용
|
|
1327
|
+
* <Stack direction="horizontal" wrap spacing="sm">
|
|
1328
|
+
* {tags.map(tag => <Badge key={tag}>{tag}</Badge>)}
|
|
1329
|
+
* </Stack>
|
|
1330
|
+
*
|
|
1331
|
+
* @param {StackProps} props - Stack 컴포넌트의 props
|
|
1332
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref
|
|
1333
|
+
* @returns {JSX.Element} Stack 컴포넌트
|
|
1334
|
+
*/
|
|
1335
|
+
declare const Stack: React.ForwardRefExoticComponent<StackProps & React.RefAttributes<HTMLDivElement>>;
|
|
1336
|
+
|
|
1337
|
+
/**
|
|
1338
|
+
* Divider 컴포넌트의 props / Divider component props
|
|
1339
|
+
* @typedef {Object} DividerProps
|
|
1340
|
+
* @property {"horizontal" | "vertical"} [orientation="horizontal"] - Divider 방향 / Divider orientation
|
|
1341
|
+
* @property {"solid" | "dashed" | "dotted" | "gradient" | "glass"} [variant="solid"] - Divider 스타일 변형 / Divider style variant
|
|
1342
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - Divider 크기 / Divider size
|
|
1343
|
+
* @property {"none" | "sm" | "md" | "lg" | "xl"} [spacing="md"] - Divider 주변 여백 / Divider spacing
|
|
1344
|
+
* @property {"default" | "muted" | "primary" | "secondary"} [color="default"] - Divider 색상 / Divider color
|
|
1345
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1346
|
+
*/
|
|
1347
|
+
interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1348
|
+
orientation?: "horizontal" | "vertical";
|
|
1349
|
+
variant?: "solid" | "dashed" | "dotted" | "gradient" | "glass";
|
|
1350
|
+
size?: "sm" | "md" | "lg";
|
|
1351
|
+
spacing?: "none" | "sm" | "md" | "lg" | "xl";
|
|
1352
|
+
color?: "default" | "muted" | "primary" | "secondary";
|
|
1353
|
+
}
|
|
1354
|
+
declare const Divider: React.NamedExoticComponent<DividerProps & React.RefAttributes<HTMLDivElement>>;
|
|
1355
|
+
|
|
1356
|
+
/**
|
|
1357
|
+
* Card 컴포넌트의 props / Card component props
|
|
1358
|
+
* @typedef {Object} CardProps
|
|
1359
|
+
* @property {"default" | "outline" | "elevated"} [variant="default"] - 카드 스타일 변형 / Card style variant
|
|
1360
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1361
|
+
*/
|
|
1362
|
+
interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1363
|
+
variant?: "default" | "outline" | "elevated";
|
|
1364
|
+
}
|
|
1365
|
+
/**
|
|
1366
|
+
* Card 컴포넌트 / Card component
|
|
1367
|
+
*
|
|
1368
|
+
* 콘텐츠를 카드 형태로 표시하는 컴포넌트입니다.
|
|
1369
|
+
* CardHeader, CardTitle, CardDescription, CardContent, CardFooter와 함께 사용합니다.
|
|
1370
|
+
*
|
|
1371
|
+
* Component that displays content in card format.
|
|
1372
|
+
* Used with CardHeader, CardTitle, CardDescription, CardContent, and CardFooter.
|
|
1373
|
+
*
|
|
1374
|
+
* @component
|
|
1375
|
+
* @example
|
|
1376
|
+
* // 기본 카드 / Basic card
|
|
1377
|
+
* <Card>
|
|
1378
|
+
* <CardHeader>
|
|
1379
|
+
* <CardTitle>카드 제목</CardTitle>
|
|
1380
|
+
* <CardDescription>카드 설명</CardDescription>
|
|
1381
|
+
* </CardHeader>
|
|
1382
|
+
* <CardContent>
|
|
1383
|
+
* <p>카드 내용</p>
|
|
1384
|
+
* </CardContent>
|
|
1385
|
+
* <CardFooter>
|
|
1386
|
+
* <Button>액션</Button>
|
|
1387
|
+
* </CardFooter>
|
|
1388
|
+
* </Card>
|
|
1389
|
+
*
|
|
1390
|
+
* @example
|
|
1391
|
+
* // Elevated 스타일 / Elevated style
|
|
1392
|
+
* <Card variant="elevated">
|
|
1393
|
+
* <CardContent>강조된 카드</CardContent>
|
|
1394
|
+
* </Card>
|
|
1395
|
+
*
|
|
1396
|
+
* @param {CardProps} props - Card 컴포넌트의 props / Card component props
|
|
1397
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1398
|
+
* @returns {JSX.Element} Card 컴포넌트 / Card component
|
|
1399
|
+
*/
|
|
1400
|
+
declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
|
|
1401
|
+
/**
|
|
1402
|
+
* CardHeader 컴포넌트의 props / CardHeader component props
|
|
1403
|
+
* @typedef {Object} CardHeaderProps
|
|
1404
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1405
|
+
*/
|
|
1406
|
+
interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1407
|
+
}
|
|
1408
|
+
/**
|
|
1409
|
+
* CardHeader 컴포넌트 / CardHeader component
|
|
1410
|
+
* 카드의 헤더 영역을 표시합니다. CardTitle과 CardDescription을 포함합니다.
|
|
1411
|
+
* Displays the header area of a card. Contains CardTitle and CardDescription.
|
|
1412
|
+
*
|
|
1413
|
+
* @component
|
|
1414
|
+
* @param {CardHeaderProps} props - CardHeader 컴포넌트의 props / CardHeader component props
|
|
1415
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1416
|
+
* @returns {JSX.Element} CardHeader 컴포넌트 / CardHeader component
|
|
1417
|
+
*/
|
|
1418
|
+
declare const CardHeader: React.ForwardRefExoticComponent<CardHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
1419
|
+
/**
|
|
1420
|
+
* CardTitle 컴포넌트의 props / CardTitle component props
|
|
1421
|
+
* @typedef {Object} CardTitleProps
|
|
1422
|
+
* @extends {React.HTMLAttributes<HTMLHeadingElement>}
|
|
1423
|
+
*/
|
|
1424
|
+
interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
|
|
1425
|
+
}
|
|
1426
|
+
/**
|
|
1427
|
+
* CardTitle 컴포넌트 / CardTitle component
|
|
1428
|
+
* 카드의 제목을 표시합니다. h3 태그로 렌더링됩니다.
|
|
1429
|
+
* Displays the card title. Renders as h3 tag.
|
|
1430
|
+
*
|
|
1431
|
+
* @component
|
|
1432
|
+
* @param {CardTitleProps} props - CardTitle 컴포넌트의 props / CardTitle component props
|
|
1433
|
+
* @param {React.Ref<HTMLParagraphElement>} ref - h3 요소 ref / h3 element ref
|
|
1434
|
+
* @returns {JSX.Element} CardTitle 컴포넌트 / CardTitle component
|
|
1435
|
+
*/
|
|
1436
|
+
declare const CardTitle: React.ForwardRefExoticComponent<CardTitleProps & React.RefAttributes<HTMLParagraphElement>>;
|
|
1437
|
+
/**
|
|
1438
|
+
* CardDescription 컴포넌트의 props / CardDescription component props
|
|
1439
|
+
* @typedef {Object} CardDescriptionProps
|
|
1440
|
+
* @extends {React.HTMLAttributes<HTMLParagraphElement>}
|
|
1441
|
+
*/
|
|
1442
|
+
interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {
|
|
1443
|
+
}
|
|
1444
|
+
/**
|
|
1445
|
+
* CardDescription 컴포넌트 / CardDescription component
|
|
1446
|
+
* 카드의 설명 텍스트를 표시합니다.
|
|
1447
|
+
* Displays the card description text.
|
|
1448
|
+
*
|
|
1449
|
+
* @component
|
|
1450
|
+
* @param {CardDescriptionProps} props - CardDescription 컴포넌트의 props / CardDescription component props
|
|
1451
|
+
* @param {React.Ref<HTMLParagraphElement>} ref - p 요소 ref / p element ref
|
|
1452
|
+
* @returns {JSX.Element} CardDescription 컴포넌트 / CardDescription component
|
|
1453
|
+
*/
|
|
1454
|
+
declare const CardDescription: React.ForwardRefExoticComponent<CardDescriptionProps & React.RefAttributes<HTMLParagraphElement>>;
|
|
1455
|
+
/**
|
|
1456
|
+
* CardContent 컴포넌트의 props / CardContent component props
|
|
1457
|
+
* @typedef {Object} CardContentProps
|
|
1458
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1459
|
+
*/
|
|
1460
|
+
interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1461
|
+
}
|
|
1462
|
+
/**
|
|
1463
|
+
* CardContent 컴포넌트 / CardContent component
|
|
1464
|
+
* 카드의 메인 콘텐츠 영역을 표시합니다.
|
|
1465
|
+
* Displays the main content area of a card.
|
|
1466
|
+
*
|
|
1467
|
+
* @component
|
|
1468
|
+
* @param {CardContentProps} props - CardContent 컴포넌트의 props / CardContent component props
|
|
1469
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1470
|
+
* @returns {JSX.Element} CardContent 컴포넌트 / CardContent component
|
|
1471
|
+
*/
|
|
1472
|
+
declare const CardContent: React.ForwardRefExoticComponent<CardContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
1473
|
+
/**
|
|
1474
|
+
* CardFooter 컴포넌트의 props / CardFooter component props
|
|
1475
|
+
* @typedef {Object} CardFooterProps
|
|
1476
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1477
|
+
*/
|
|
1478
|
+
interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1479
|
+
}
|
|
1480
|
+
/**
|
|
1481
|
+
* CardFooter 컴포넌트 / CardFooter component
|
|
1482
|
+
* 카드의 푸터 영역을 표시합니다. 주로 액션 버튼을 배치합니다.
|
|
1483
|
+
* Displays the footer area of a card. Typically used for action buttons.
|
|
1484
|
+
*
|
|
1485
|
+
* @component
|
|
1486
|
+
* @param {CardFooterProps} props - CardFooter 컴포넌트의 props / CardFooter component props
|
|
1487
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1488
|
+
* @returns {JSX.Element} CardFooter 컴포넌트 / CardFooter component
|
|
1489
|
+
*/
|
|
1490
|
+
declare const CardFooter: React.ForwardRefExoticComponent<CardFooterProps & React.RefAttributes<HTMLDivElement>>;
|
|
1491
|
+
|
|
1492
|
+
/**
|
|
1493
|
+
* Panel 컴포넌트의 props / Panel component props
|
|
1494
|
+
* @typedef {Object} PanelProps
|
|
1495
|
+
* @property {"default" | "solid" | "glass" | "outline" | "elevated" | "neon" | "holographic" | "cyberpunk" | "minimal" | "luxury"} [style="default"] - Panel 스타일 / Panel style
|
|
1496
|
+
* @property {"none" | "glow" | "shadow" | "gradient" | "animated"} [effect="none"] - Panel 효과 / Panel effect
|
|
1497
|
+
* @property {number} [transparency=1] - 투명도 (0-1) / Transparency (0-1)
|
|
1498
|
+
* @property {number} [blurIntensity=0] - backdrop-blur 강도 (px) / Backdrop blur intensity (px)
|
|
1499
|
+
* @property {number} [borderOpacity=1] - 보더 투명도 (0-1) / Border opacity (0-1)
|
|
1500
|
+
* @property {number} [shadowOpacity=1] - 그림자 투명도 (0-1) / Shadow opacity (0-1)
|
|
1501
|
+
* @property {number} [glowIntensity=0] - 글로우 강도 (px) / Glow intensity (px)
|
|
1502
|
+
* @property {string} [glowColor="blue"] - 글로우 색상 / Glow color
|
|
1503
|
+
* @property {boolean} [particleEffect=false] - 파티클 효과 활성화 / Enable particle effect
|
|
1504
|
+
* @property {boolean} [hoverEffect=false] - 호버 효과 활성화 / Enable hover effect
|
|
1505
|
+
* @property {boolean} [animationEffect=false] - 애니메이션 효과 활성화 / Enable animation effect
|
|
1506
|
+
* @property {"none" | "small" | "sm" | "medium" | "md" | "large" | "lg" | "xl" | "custom"} [padding="md"] - 패딩 크기 / Padding size
|
|
1507
|
+
* @property {string} [customPadding] - 커스텀 패딩 / Custom padding
|
|
1508
|
+
* @property {"none" | "sm" | "md" | "lg" | "xl" | "full" | "custom"} [rounded="lg"] - 둥근 모서리 크기 / Rounded corner size
|
|
1509
|
+
* @property {string} [customRounded] - 커스텀 둥근 모서리 / Custom rounded corners
|
|
1510
|
+
* @property {"solid" | "gradient" | "pattern" | "image" | "video"} [background="solid"] - 배경 타입 / Background type
|
|
1511
|
+
* @property {string[]} [gradientColors] - 그라디언트 색상 배열 / Gradient color array
|
|
1512
|
+
* @property {"dots" | "lines" | "grid" | "waves" | "custom"} [patternType="dots"] - 패턴 타입 / Pattern type
|
|
1513
|
+
* @property {string} [backgroundImage] - 배경 이미지 URL / Background image URL
|
|
1514
|
+
* @property {string} [backgroundVideo] - 배경 비디오 URL / Background video URL
|
|
1515
|
+
* @property {boolean} [interactive=false] - 인터랙티브 모드 활성화 / Enable interactive mode
|
|
1516
|
+
* @property {number} [hoverScale=1.05] - 호버 시 스케일 / Scale on hover
|
|
1517
|
+
* @property {number} [hoverRotate=0] - 호버 시 회전 각도 / Rotation angle on hover
|
|
1518
|
+
* @property {boolean} [hoverGlow=false] - 호버 시 글로우 효과 / Glow effect on hover
|
|
1519
|
+
* @extends {Omit<CardProps, 'variant' | 'style'>}
|
|
1520
|
+
*/
|
|
1521
|
+
interface PanelProps extends Omit<CardProps, 'variant' | 'style'> {
|
|
1522
|
+
style?: "default" | "solid" | "glass" | "outline" | "elevated" | "neon" | "holographic" | "cyberpunk" | "minimal" | "luxury";
|
|
1523
|
+
effect?: "none" | "glow" | "shadow" | "gradient" | "animated";
|
|
1524
|
+
transparency?: number;
|
|
1525
|
+
blurIntensity?: number;
|
|
1526
|
+
borderOpacity?: number;
|
|
1527
|
+
shadowOpacity?: number;
|
|
1528
|
+
glowIntensity?: number;
|
|
1529
|
+
glowColor?: string;
|
|
1530
|
+
particleEffect?: boolean;
|
|
1531
|
+
hoverEffect?: boolean;
|
|
1532
|
+
animationEffect?: boolean;
|
|
1533
|
+
padding?: "none" | "small" | "sm" | "medium" | "md" | "large" | "lg" | "xl" | "custom";
|
|
1534
|
+
customPadding?: string;
|
|
1535
|
+
rounded?: "none" | "sm" | "md" | "lg" | "xl" | "full" | "custom";
|
|
1536
|
+
customRounded?: string;
|
|
1537
|
+
background?: "solid" | "gradient" | "pattern" | "image" | "video";
|
|
1538
|
+
gradientColors?: string[];
|
|
1539
|
+
patternType?: "dots" | "lines" | "grid" | "waves" | "custom";
|
|
1540
|
+
backgroundImage?: string;
|
|
1541
|
+
backgroundVideo?: string;
|
|
1542
|
+
interactive?: boolean;
|
|
1543
|
+
hoverScale?: number;
|
|
1544
|
+
hoverRotate?: number;
|
|
1545
|
+
hoverGlow?: boolean;
|
|
1546
|
+
}
|
|
1547
|
+
/**
|
|
1548
|
+
* Panel 컴포넌트 / Panel component
|
|
1549
|
+
*
|
|
1550
|
+
* 고급 스타일링 옵션을 가진 패널 컴포넌트입니다.
|
|
1551
|
+
* 다양한 스타일, 효과, 배경 옵션을 지원합니다.
|
|
1552
|
+
* Card 컴포넌트를 기반으로 하며, 추가적인 고급 기능을 제공합니다.
|
|
1553
|
+
*
|
|
1554
|
+
* Panel component with advanced styling options.
|
|
1555
|
+
* Supports various styles, effects, and background options.
|
|
1556
|
+
* Based on Card component with additional advanced features.
|
|
1557
|
+
*
|
|
1558
|
+
* @component
|
|
1559
|
+
* @example
|
|
1560
|
+
* // 기본 사용 / Basic usage
|
|
1561
|
+
* <Panel>
|
|
1562
|
+
* <div>내용</div>
|
|
1563
|
+
* </Panel>
|
|
1564
|
+
*
|
|
1565
|
+
* @example
|
|
1566
|
+
* // Glass 스타일 / Glass style
|
|
1567
|
+
* <Panel style="glass" effect="glow">
|
|
1568
|
+
* <div>Glass 패널</div>
|
|
1569
|
+
* </Panel>
|
|
1570
|
+
*
|
|
1571
|
+
* @example
|
|
1572
|
+
* // 인터랙티브 패널 / Interactive panel
|
|
1573
|
+
* <Panel
|
|
1574
|
+
* style="neon"
|
|
1575
|
+
* interactive
|
|
1576
|
+
* hoverScale={1.1}
|
|
1577
|
+
* hoverGlow
|
|
1578
|
+
* >
|
|
1579
|
+
* <div>호버 효과</div>
|
|
1580
|
+
* </Panel>
|
|
1581
|
+
*
|
|
1582
|
+
* @param {PanelProps} props - Panel 컴포넌트의 props / Panel component props
|
|
1583
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1584
|
+
* @returns {JSX.Element} Panel 컴포넌트 / Panel component
|
|
1585
|
+
*/
|
|
1586
|
+
declare const Panel: React.ForwardRefExoticComponent<PanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
1587
|
+
|
|
1588
|
+
/**
|
|
1589
|
+
* ActionButton 인터페이스
|
|
1590
|
+
* @typedef {Object} ActionButton
|
|
1591
|
+
* @property {string} label - 버튼 라벨 (데스크톱)
|
|
1592
|
+
* @property {string} [labelMobile] - 버튼 라벨 (모바일, 없으면 label 사용)
|
|
1593
|
+
* @property {IconName} [icon] - 버튼 아이콘
|
|
1594
|
+
* @property {() => void} onClick - 클릭 핸들러
|
|
1595
|
+
* @property {boolean} [disabled] - 비활성화 여부
|
|
1596
|
+
* @property {'default' | 'outline' | 'destructive' | 'ghost'} [variant='outline'] - 버튼 스타일
|
|
1597
|
+
* @property {Object} [badge] - 배지 정보
|
|
1598
|
+
* @property {number} badge.count - 배지 숫자
|
|
1599
|
+
* @property {'blue' | 'red' | 'gray' | 'green'} [badge.color='gray'] - 배지 색상
|
|
1600
|
+
* @property {string} [className] - 추가 CSS 클래스
|
|
1601
|
+
*/
|
|
1602
|
+
interface ActionButton {
|
|
1603
|
+
label: string;
|
|
1604
|
+
labelMobile?: string;
|
|
1605
|
+
icon?: IconName;
|
|
1606
|
+
onClick: () => void;
|
|
1607
|
+
disabled?: boolean;
|
|
1608
|
+
variant?: 'default' | 'outline' | 'destructive' | 'ghost';
|
|
1609
|
+
badge?: {
|
|
1610
|
+
count: number;
|
|
1611
|
+
color?: 'blue' | 'red' | 'gray' | 'green';
|
|
1612
|
+
};
|
|
1613
|
+
className?: string;
|
|
1614
|
+
}
|
|
1615
|
+
/**
|
|
1616
|
+
* ActionToolbar 컴포넌트의 props / ActionToolbar component props
|
|
1617
|
+
* @typedef {Object} ActionToolbarProps
|
|
1618
|
+
* @property {boolean} [isSelectMode=false] - 선택 모드 활성화 여부 / Enable select mode
|
|
1619
|
+
* @property {number} [totalCount=0] - 전체 항목 개수 / Total item count
|
|
1620
|
+
* @property {number} [selectedCount=0] - 선택된 항목 개수 / Selected item count
|
|
1621
|
+
* @property {ActionButton[]} [actions=[]] - 일반 모드 액션 버튼들 / Normal mode action buttons
|
|
1622
|
+
* @property {ActionButton[]} [selectModeActions=[]] - 선택 모드 액션 버튼들 / Select mode action buttons
|
|
1623
|
+
* @property {() => void} [onToggleSelectMode] - 선택 모드 토글 함수 / Toggle select mode function
|
|
1624
|
+
* @property {() => void} [onToggleSelectAll] - 전체 선택/해제 함수 / Toggle select all function
|
|
1625
|
+
* @property {() => void} [onCancelSelect] - 선택 모드 취소 함수 / Cancel select mode function
|
|
1626
|
+
* @property {boolean} [loading=false] - 로딩 상태 / Loading state
|
|
1627
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1628
|
+
*/
|
|
1629
|
+
interface ActionToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1630
|
+
/** 선택 모드 활성화 여부 */
|
|
1631
|
+
isSelectMode?: boolean;
|
|
1632
|
+
/** 전체 항목 개수 */
|
|
1633
|
+
totalCount?: number;
|
|
1634
|
+
/** 선택된 항목 개수 */
|
|
1635
|
+
selectedCount?: number;
|
|
1636
|
+
/** 일반 모드 액션 버튼들 */
|
|
1637
|
+
actions?: ActionButton[];
|
|
1638
|
+
/** 선택 모드 액션 버튼들 */
|
|
1639
|
+
selectModeActions?: ActionButton[];
|
|
1640
|
+
/** 선택 모드 토글 함수 */
|
|
1641
|
+
onToggleSelectMode?: () => void;
|
|
1642
|
+
/** 전체 선택/해제 함수 */
|
|
1643
|
+
onToggleSelectAll?: () => void;
|
|
1644
|
+
/** 선택 모드 취소 함수 */
|
|
1645
|
+
onCancelSelect?: () => void;
|
|
1646
|
+
/** 로딩 상태 */
|
|
1647
|
+
loading?: boolean;
|
|
1648
|
+
}
|
|
1649
|
+
declare const ActionToolbar: React.NamedExoticComponent<ActionToolbarProps & React.RefAttributes<HTMLDivElement>>;
|
|
1650
|
+
|
|
1651
|
+
/**
|
|
1652
|
+
* Navigation 컴포넌트의 props / Navigation component props
|
|
1653
|
+
* @typedef {Object} NavigationProps
|
|
1654
|
+
* @property {string} [value] - 제어 모드에서 활성 탭 값 / Active tab value in controlled mode
|
|
1655
|
+
* @property {string} [defaultValue] - 비제어 모드에서 기본 활성 탭 값 / Default active tab value in uncontrolled mode
|
|
1656
|
+
* @property {(value: string) => void} [onValueChange] - 탭 변경 콜백 / Tab change callback
|
|
1657
|
+
* @property {"pills" | "underline" | "cards"} [variant="pills"] - Navigation 스타일 변형 / Navigation style variant
|
|
1658
|
+
* @property {"small" | "medium" | "large"} [scale="medium"] - Navigation 크기 / Navigation size
|
|
1659
|
+
* @extends {Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>}
|
|
1660
|
+
*/
|
|
1661
|
+
interface NavigationProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {
|
|
1662
|
+
value?: string;
|
|
1663
|
+
defaultValue?: string;
|
|
1664
|
+
onValueChange?: (value: string) => void;
|
|
1665
|
+
variant?: "pills" | "underline" | "cards";
|
|
1666
|
+
scale?: "small" | "medium" | "large";
|
|
1667
|
+
}
|
|
1668
|
+
/**
|
|
1669
|
+
* NavigationList 컴포넌트의 props / NavigationList component props
|
|
1670
|
+
* @typedef {Object} NavigationListProps
|
|
1671
|
+
* @property {string} [value] - 활성 탭 값 / Active tab value
|
|
1672
|
+
* @property {(value: string) => void} [onValueChange] - 탭 변경 콜백 / Tab change callback
|
|
1673
|
+
* @property {"pills" | "underline" | "cards"} [variant="pills"] - Navigation 스타일 변형 / Navigation style variant
|
|
1674
|
+
* @property {"small" | "medium" | "large"} [scale="medium"] - Navigation 크기 / Navigation size
|
|
1675
|
+
* @extends {Omit<React.HTMLAttributes<HTMLDivElement>, 'style'>}
|
|
1676
|
+
*/
|
|
1677
|
+
interface NavigationListProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'style'> {
|
|
1678
|
+
value?: string;
|
|
1679
|
+
onValueChange?: (value: string) => void;
|
|
1680
|
+
variant?: "pills" | "underline" | "cards";
|
|
1681
|
+
scale?: "small" | "medium" | "large";
|
|
1682
|
+
}
|
|
1683
|
+
declare const NavigationList: React.ForwardRefExoticComponent<NavigationListProps & React.RefAttributes<HTMLDivElement>>;
|
|
1684
|
+
/**
|
|
1685
|
+
* NavigationItem 컴포넌트의 props / NavigationItem component props
|
|
1686
|
+
* @typedef {Object} NavigationItemProps
|
|
1687
|
+
* @property {string} value - 탭 값 / Tab value
|
|
1688
|
+
* @property {(value: string) => void} [onValueChange] - 탭 변경 콜백 / Tab change callback
|
|
1689
|
+
* @property {"pills" | "underline" | "cards"} [variant] - Navigation 스타일 변형 (자동으로 설정됨) / Navigation style variant (auto-set)
|
|
1690
|
+
* @property {"small" | "medium" | "large"} [scale] - Navigation 크기 (자동으로 설정됨) / Navigation size (auto-set)
|
|
1691
|
+
* @property {boolean} [active] - 활성 상태 (자동으로 설정됨) / Active state (auto-set)
|
|
1692
|
+
* @extends {Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'style'>}
|
|
1693
|
+
*/
|
|
1694
|
+
interface NavigationItemProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'style'> {
|
|
1695
|
+
value: string;
|
|
1696
|
+
onValueChange?: (value: string) => void;
|
|
1697
|
+
variant?: "pills" | "underline" | "cards";
|
|
1698
|
+
scale?: "small" | "medium" | "large";
|
|
1699
|
+
active?: boolean;
|
|
1700
|
+
}
|
|
1701
|
+
declare const NavigationItem: React.ForwardRefExoticComponent<NavigationItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
1702
|
+
/**
|
|
1703
|
+
* NavigationContent 컴포넌트의 props / NavigationContent component props
|
|
1704
|
+
* @typedef {Object} NavigationContentProps
|
|
1705
|
+
* @property {string} value - 탭 값 / Tab value
|
|
1706
|
+
* @property {boolean} [active] - 활성 상태 (자동으로 설정됨) / Active state (auto-set)
|
|
1707
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1708
|
+
*/
|
|
1709
|
+
interface NavigationContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1710
|
+
value: string;
|
|
1711
|
+
active?: boolean;
|
|
1712
|
+
}
|
|
1713
|
+
declare const NavigationContent: React.ForwardRefExoticComponent<NavigationContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
1714
|
+
interface NavigationComponent extends React.ForwardRefExoticComponent<NavigationProps & React.RefAttributes<HTMLDivElement>> {
|
|
1715
|
+
List: typeof NavigationList;
|
|
1716
|
+
Item: typeof NavigationItem;
|
|
1717
|
+
Content: typeof NavigationContent;
|
|
1718
|
+
}
|
|
1719
|
+
declare const NavigationComponent: NavigationComponent;
|
|
1720
|
+
|
|
1721
|
+
/**
|
|
1722
|
+
* Breadcrumb 항목 타입 / Breadcrumb item type
|
|
1723
|
+
*/
|
|
1724
|
+
interface BreadcrumbItemData {
|
|
1725
|
+
label: string;
|
|
1726
|
+
href?: string;
|
|
1727
|
+
icon?: string;
|
|
1728
|
+
}
|
|
1729
|
+
/**
|
|
1730
|
+
* Breadcrumb 컴포넌트의 props / Breadcrumb component props
|
|
1731
|
+
* @typedef {Object} BreadcrumbProps
|
|
1732
|
+
* @property {React.ReactNode} [children] - BreadcrumbItem 컴포넌트들 / BreadcrumbItem components
|
|
1733
|
+
* @property {BreadcrumbItemData[]} [items] - Breadcrumb 항목 배열 (children 대신 사용 가능) / Breadcrumb items array (alternative to children)
|
|
1734
|
+
* @property {number} [maxItems] - 최대 표시할 항목 수 (긴 경로 처리) / Maximum number of items to display (for long paths)
|
|
1735
|
+
* @property {boolean} [showHomeIcon] - 홈 아이콘 표시 여부 / Show home icon
|
|
1736
|
+
* @property {string} [homeLabel] - 홈 라벨 (기본: "Home") / Home label (default: "Home")
|
|
1737
|
+
* @property {React.ReactNode} [separator] - 항목 사이 구분자 (기본: chevronRight 아이콘) / Separator between items (default: chevronRight icon)
|
|
1738
|
+
* @property {'default' | 'subtle' | 'transparent' | 'glass'} [variant='default'] - Breadcrumb 스타일 변형 / Breadcrumb style variant
|
|
1739
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1740
|
+
*/
|
|
1741
|
+
interface BreadcrumbProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1742
|
+
children?: React.ReactNode;
|
|
1743
|
+
items?: BreadcrumbItemData[];
|
|
1744
|
+
maxItems?: number;
|
|
1745
|
+
showHomeIcon?: boolean;
|
|
1746
|
+
homeLabel?: string;
|
|
1747
|
+
separator?: React.ReactNode;
|
|
1748
|
+
variant?: 'default' | 'subtle' | 'transparent' | 'glass';
|
|
1749
|
+
}
|
|
1750
|
+
/**
|
|
1751
|
+
* BreadcrumbItem 컴포넌트의 props / BreadcrumbItem component props
|
|
1752
|
+
* @typedef {Object} BreadcrumbItemProps
|
|
1753
|
+
* @property {string} [href] - 링크 URL (없으면 일반 텍스트) / Link URL (plain text if not provided)
|
|
1754
|
+
* @property {boolean} [isCurrent=false] - 현재 페이지 여부 / Current page indicator
|
|
1755
|
+
* @property {React.ReactNode} children - 항목 텍스트 / Item text
|
|
1756
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
1757
|
+
*/
|
|
1758
|
+
interface BreadcrumbItemProps {
|
|
1759
|
+
href?: string;
|
|
1760
|
+
isCurrent?: boolean;
|
|
1761
|
+
children: React.ReactNode;
|
|
1762
|
+
className?: string;
|
|
1763
|
+
}
|
|
1764
|
+
/**
|
|
1765
|
+
* Breadcrumb 컴포넌트 / Breadcrumb component
|
|
1766
|
+
*
|
|
1767
|
+
* 네비게이션 경로를 표시하는 breadcrumb 컴포넌트입니다.
|
|
1768
|
+
* 현재 위치와 경로를 시각적으로 표현합니다.
|
|
1769
|
+
*
|
|
1770
|
+
* Breadcrumb component for displaying navigation paths.
|
|
1771
|
+
* Visually represents current location and path.
|
|
1772
|
+
*
|
|
1773
|
+
* @component
|
|
1774
|
+
* @example
|
|
1775
|
+
* // 기본 사용 / Basic usage
|
|
1776
|
+
* <Breadcrumb>
|
|
1777
|
+
* <BreadcrumbItem href="/">홈</BreadcrumbItem>
|
|
1778
|
+
* <BreadcrumbItem href="/products">상품</BreadcrumbItem>
|
|
1779
|
+
* <BreadcrumbItem isCurrent>상세</BreadcrumbItem>
|
|
1780
|
+
* </Breadcrumb>
|
|
1781
|
+
*
|
|
1782
|
+
* @example
|
|
1783
|
+
* // 커스텀 구분자 / Custom separator
|
|
1784
|
+
* <Breadcrumb separator={<span>/</span>}>
|
|
1785
|
+
* <BreadcrumbItem href="/">홈</BreadcrumbItem>
|
|
1786
|
+
* <BreadcrumbItem isCurrent>현재</BreadcrumbItem>
|
|
1787
|
+
* </Breadcrumb>
|
|
1788
|
+
*
|
|
1789
|
+
* @param {BreadcrumbProps} props - Breadcrumb 컴포넌트의 props / Breadcrumb component props
|
|
1790
|
+
* @param {React.Ref<HTMLDivElement>} ref - nav 요소 ref / nav element ref
|
|
1791
|
+
* @returns {JSX.Element} Breadcrumb 컴포넌트 / Breadcrumb component
|
|
1792
|
+
*/
|
|
1793
|
+
declare const Breadcrumb: React.ForwardRefExoticComponent<BreadcrumbProps & React.RefAttributes<HTMLDivElement>>;
|
|
1794
|
+
/**
|
|
1795
|
+
* BreadcrumbItem 컴포넌트
|
|
1796
|
+
* Breadcrumb의 개별 항목을 표시합니다.
|
|
1797
|
+
*
|
|
1798
|
+
* @component
|
|
1799
|
+
* @param {BreadcrumbItemProps} props - BreadcrumbItem 컴포넌트의 props
|
|
1800
|
+
* @param {React.Ref<HTMLLIElement>} ref - li 요소 ref
|
|
1801
|
+
* @returns {JSX.Element} BreadcrumbItem 컴포넌트
|
|
1802
|
+
*/
|
|
1803
|
+
declare const BreadcrumbItem: React.ForwardRefExoticComponent<BreadcrumbItemProps & React.RefAttributes<HTMLLIElement>>;
|
|
1804
|
+
|
|
1805
|
+
/**
|
|
1806
|
+
* Pagination 컴포넌트의 props / Pagination component props
|
|
1807
|
+
* @typedef {Object} PaginationProps
|
|
1808
|
+
* @property {number} currentPage - 현재 페이지 번호 / Current page number
|
|
1809
|
+
* @property {number} totalPages - 전체 페이지 수 / Total number of pages
|
|
1810
|
+
* @property {(page: number) => void} onPageChange - 페이지 변경 콜백 / Page change callback
|
|
1811
|
+
* @property {boolean} [showFirstLast=true] - 첫/마지막 페이지 버튼 표시 여부 / Show first/last page buttons
|
|
1812
|
+
* @property {boolean} [showPrevNext=true] - 이전/다음 페이지 버튼 표시 여부 / Show previous/next page buttons
|
|
1813
|
+
* @property {number} [maxVisiblePages=5] - 최대 표시 페이지 수 / Maximum visible page numbers
|
|
1814
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - Pagination 크기 / Pagination size
|
|
1815
|
+
* @property {"default" | "outlined" | "minimal"} [variant="default"] - Pagination 스타일 변형 / Pagination style variant
|
|
1816
|
+
* @property {"square" | "circle"} [shape="square"] - 버튼 모양 / Button shape
|
|
1817
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1818
|
+
*/
|
|
1819
|
+
interface PaginationProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1820
|
+
currentPage: number;
|
|
1821
|
+
totalPages: number;
|
|
1822
|
+
onPageChange: (page: number) => void;
|
|
1823
|
+
showFirstLast?: boolean;
|
|
1824
|
+
showPrevNext?: boolean;
|
|
1825
|
+
maxVisiblePages?: number;
|
|
1826
|
+
size?: "sm" | "md" | "lg";
|
|
1827
|
+
variant?: "default" | "outlined" | "minimal";
|
|
1828
|
+
shape?: "square" | "circle";
|
|
1829
|
+
}
|
|
1830
|
+
/**
|
|
1831
|
+
* Pagination 컴포넌트 / Pagination component
|
|
1832
|
+
*
|
|
1833
|
+
* 페이지네이션 컨트롤을 제공하는 컴포넌트입니다.
|
|
1834
|
+
* 첫/마지막 페이지, 이전/다음 페이지 버튼을 지원하며,
|
|
1835
|
+
* 많은 페이지가 있을 경우 자동으로 생략 표시(...)를 합니다.
|
|
1836
|
+
*
|
|
1837
|
+
* Component that provides pagination controls.
|
|
1838
|
+
* Supports first/last page and previous/next page buttons,
|
|
1839
|
+
* and automatically shows ellipsis (...) when there are many pages.
|
|
1840
|
+
*
|
|
1841
|
+
* @component
|
|
1842
|
+
* @example
|
|
1843
|
+
* // 기본 사용 / Basic usage
|
|
1844
|
+
* const [page, setPage] = useState(1)
|
|
1845
|
+
*
|
|
1846
|
+
* <Pagination
|
|
1847
|
+
* currentPage={page}
|
|
1848
|
+
* totalPages={10}
|
|
1849
|
+
* onPageChange={setPage}
|
|
1850
|
+
* />
|
|
1851
|
+
*
|
|
1852
|
+
* @example
|
|
1853
|
+
* // Outlined 스타일, 원형 버튼 / Outlined style, circular buttons
|
|
1854
|
+
* <Pagination
|
|
1855
|
+
* currentPage={page}
|
|
1856
|
+
* totalPages={20}
|
|
1857
|
+
* onPageChange={setPage}
|
|
1858
|
+
* variant="outlined"
|
|
1859
|
+
* shape="circle"
|
|
1860
|
+
* />
|
|
1861
|
+
*
|
|
1862
|
+
* @param {PaginationProps} props - Pagination 컴포넌트의 props / Pagination component props
|
|
1863
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1864
|
+
* @returns {JSX.Element} Pagination 컴포넌트 / Pagination component
|
|
1865
|
+
*/
|
|
1866
|
+
declare const Pagination: React.ForwardRefExoticComponent<PaginationProps & React.RefAttributes<HTMLDivElement>>;
|
|
1867
|
+
declare const PaginationOutlined: React.ForwardRefExoticComponent<Omit<PaginationProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
1868
|
+
declare const PaginationMinimal: React.ForwardRefExoticComponent<Omit<PaginationProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
1869
|
+
declare const PaginationWithInfo: React.ForwardRefExoticComponent<PaginationProps & {
|
|
1870
|
+
totalItems?: number;
|
|
1871
|
+
itemsPerPage?: number;
|
|
1872
|
+
showInfo?: boolean;
|
|
1873
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
1874
|
+
|
|
1875
|
+
/**
|
|
1876
|
+
* Table 컴포넌트의 props / Table component props
|
|
1877
|
+
* @typedef {Object} TableProps
|
|
1878
|
+
* @property {React.ReactNode} children - TableHeader, TableBody, TableFooter 등 / TableHeader, TableBody, TableFooter, etc.
|
|
1879
|
+
* @property {"default" | "bordered" | "striped"} [variant="default"] - Table 스타일 변형 / Table style variant
|
|
1880
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - Table 크기 / Table size
|
|
1881
|
+
* @extends {React.HTMLAttributes<HTMLTableElement>}
|
|
1882
|
+
*/
|
|
1883
|
+
interface TableProps extends React.HTMLAttributes<HTMLTableElement> {
|
|
1884
|
+
children: React.ReactNode;
|
|
1885
|
+
variant?: "default" | "bordered" | "striped";
|
|
1886
|
+
size?: "sm" | "md" | "lg";
|
|
1887
|
+
}
|
|
1888
|
+
/**
|
|
1889
|
+
* TableHeader 컴포넌트의 props / TableHeader component props
|
|
1890
|
+
* @typedef {Object} TableHeaderProps
|
|
1891
|
+
* @property {React.ReactNode} children - TableHead 컴포넌트들 / TableHead components
|
|
1892
|
+
* @extends {React.HTMLAttributes<HTMLTableSectionElement>}
|
|
1893
|
+
*/
|
|
1894
|
+
interface TableHeaderProps extends React.HTMLAttributes<HTMLTableSectionElement> {
|
|
1895
|
+
children: React.ReactNode;
|
|
1896
|
+
}
|
|
1897
|
+
/**
|
|
1898
|
+
* TableBody 컴포넌트의 props / TableBody component props
|
|
1899
|
+
* @typedef {Object} TableBodyProps
|
|
1900
|
+
* @property {React.ReactNode} children - TableRow 컴포넌트들 / TableRow components
|
|
1901
|
+
* @extends {React.HTMLAttributes<HTMLTableSectionElement>}
|
|
1902
|
+
*/
|
|
1903
|
+
interface TableBodyProps extends React.HTMLAttributes<HTMLTableSectionElement> {
|
|
1904
|
+
children: React.ReactNode;
|
|
1905
|
+
}
|
|
1906
|
+
/**
|
|
1907
|
+
* TableFooter 컴포넌트의 props / TableFooter component props
|
|
1908
|
+
* @typedef {Object} TableFooterProps
|
|
1909
|
+
* @property {React.ReactNode} children - TableRow 컴포넌트들 / TableRow components
|
|
1910
|
+
* @extends {React.HTMLAttributes<HTMLTableSectionElement>}
|
|
1911
|
+
*/
|
|
1912
|
+
interface TableFooterProps extends React.HTMLAttributes<HTMLTableSectionElement> {
|
|
1913
|
+
children: React.ReactNode;
|
|
1914
|
+
}
|
|
1915
|
+
/**
|
|
1916
|
+
* TableRow 컴포넌트의 props / TableRow component props
|
|
1917
|
+
* @typedef {Object} TableRowProps
|
|
1918
|
+
* @property {React.ReactNode} children - TableHead 또는 TableCell 컴포넌트들 / TableHead or TableCell components
|
|
1919
|
+
* @property {"default" | "hover"} [variant="default"] - Row 스타일 변형 / Row style variant
|
|
1920
|
+
* @extends {React.HTMLAttributes<HTMLTableRowElement>}
|
|
1921
|
+
*/
|
|
1922
|
+
interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {
|
|
1923
|
+
children: React.ReactNode;
|
|
1924
|
+
variant?: "default" | "hover";
|
|
1925
|
+
}
|
|
1926
|
+
/**
|
|
1927
|
+
* TableHead 컴포넌트의 props / TableHead component props
|
|
1928
|
+
* @typedef {Object} TableHeadProps
|
|
1929
|
+
* @property {React.ReactNode} children - 헤더 셀 내용 / Header cell content
|
|
1930
|
+
* @extends {React.ThHTMLAttributes<HTMLTableCellElement>}
|
|
1931
|
+
*/
|
|
1932
|
+
interface TableHeadProps extends React.ThHTMLAttributes<HTMLTableCellElement> {
|
|
1933
|
+
children: React.ReactNode;
|
|
1934
|
+
}
|
|
1935
|
+
/**
|
|
1936
|
+
* TableCell 컴포넌트의 props / TableCell component props
|
|
1937
|
+
* @typedef {Object} TableCellProps
|
|
1938
|
+
* @property {React.ReactNode} children - 셀 내용 / Cell content
|
|
1939
|
+
* @extends {React.TdHTMLAttributes<HTMLTableCellElement>}
|
|
1940
|
+
*/
|
|
1941
|
+
interface TableCellProps extends React.TdHTMLAttributes<HTMLTableCellElement> {
|
|
1942
|
+
children: React.ReactNode;
|
|
1943
|
+
}
|
|
1944
|
+
/**
|
|
1945
|
+
* Table 컴포넌트 / Table component
|
|
1946
|
+
*
|
|
1947
|
+
* 데이터를 표 형태로 표시하는 테이블 컴포넌트입니다.
|
|
1948
|
+
* TableHeader, TableBody, TableFooter, TableRow, TableHead, TableCell과 함께 사용합니다.
|
|
1949
|
+
*
|
|
1950
|
+
* Table component that displays data in tabular format.
|
|
1951
|
+
* Used with TableHeader, TableBody, TableFooter, TableRow, TableHead, and TableCell.
|
|
1952
|
+
*
|
|
1953
|
+
* @component
|
|
1954
|
+
* @example
|
|
1955
|
+
* // 기본 사용 / Basic usage
|
|
1956
|
+
* <Table>
|
|
1957
|
+
* <TableHeader>
|
|
1958
|
+
* <TableRow>
|
|
1959
|
+
* <TableHead>이름</TableHead>
|
|
1960
|
+
* <TableHead>나이</TableHead>
|
|
1961
|
+
* </TableRow>
|
|
1962
|
+
* </TableHeader>
|
|
1963
|
+
* <TableBody>
|
|
1964
|
+
* <TableRow>
|
|
1965
|
+
* <TableCell>홍길동</TableCell>
|
|
1966
|
+
* <TableCell>30</TableCell>
|
|
1967
|
+
* </TableRow>
|
|
1968
|
+
* </TableBody>
|
|
1969
|
+
* </Table>
|
|
1970
|
+
*
|
|
1971
|
+
* @example
|
|
1972
|
+
* // Bordered 스타일 / Bordered style
|
|
1973
|
+
* <Table variant="bordered">
|
|
1974
|
+
* <TableHeader>
|
|
1975
|
+
* <TableRow>
|
|
1976
|
+
* <TableHead>항목</TableHead>
|
|
1977
|
+
* </TableRow>
|
|
1978
|
+
* </TableHeader>
|
|
1979
|
+
* <TableBody>
|
|
1980
|
+
* <TableRow>
|
|
1981
|
+
* <TableCell>값</TableCell>
|
|
1982
|
+
* </TableRow>
|
|
1983
|
+
* </TableBody>
|
|
1984
|
+
* </Table>
|
|
1985
|
+
*
|
|
1986
|
+
* @example
|
|
1987
|
+
* // Striped 스타일, 호버 효과 / Striped style with hover effect
|
|
1988
|
+
* <Table variant="striped">
|
|
1989
|
+
* <TableBody>
|
|
1990
|
+
* <TableRow variant="hover">
|
|
1991
|
+
* <TableCell>데이터</TableCell>
|
|
1992
|
+
* </TableRow>
|
|
1993
|
+
* </TableBody>
|
|
1994
|
+
* </Table>
|
|
1995
|
+
*
|
|
1996
|
+
* @param {TableProps} props - Table 컴포넌트의 props / Table component props
|
|
1997
|
+
* @param {React.Ref<HTMLTableElement>} ref - table 요소 ref / table element ref
|
|
1998
|
+
* @returns {JSX.Element} Table 컴포넌트 / Table component
|
|
1999
|
+
*/
|
|
2000
|
+
declare const Table: React.ForwardRefExoticComponent<TableProps & React.RefAttributes<HTMLTableElement>>;
|
|
2001
|
+
/**
|
|
2002
|
+
* TableHeader 컴포넌트 / TableHeader component
|
|
2003
|
+
* 테이블의 헤더 영역을 표시합니다.
|
|
2004
|
+
* Displays the header area of a table.
|
|
2005
|
+
*
|
|
2006
|
+
* @component
|
|
2007
|
+
* @param {TableHeaderProps} props - TableHeader 컴포넌트의 props / TableHeader component props
|
|
2008
|
+
* @param {React.Ref<HTMLTableSectionElement>} ref - thead 요소 ref / thead element ref
|
|
2009
|
+
* @returns {JSX.Element} TableHeader 컴포넌트 / TableHeader component
|
|
2010
|
+
*/
|
|
2011
|
+
declare const TableHeader: React.ForwardRefExoticComponent<TableHeaderProps & React.RefAttributes<HTMLTableSectionElement>>;
|
|
2012
|
+
/**
|
|
2013
|
+
* TableBody 컴포넌트 / TableBody component
|
|
2014
|
+
* 테이블의 본문 영역을 표시합니다.
|
|
2015
|
+
* Displays the body area of a table.
|
|
2016
|
+
*
|
|
2017
|
+
* @component
|
|
2018
|
+
* @param {TableBodyProps} props - TableBody 컴포넌트의 props / TableBody component props
|
|
2019
|
+
* @param {React.Ref<HTMLTableSectionElement>} ref - tbody 요소 ref / tbody element ref
|
|
2020
|
+
* @returns {JSX.Element} TableBody 컴포넌트 / TableBody component
|
|
2021
|
+
*/
|
|
2022
|
+
declare const TableBody: React.ForwardRefExoticComponent<TableBodyProps & React.RefAttributes<HTMLTableSectionElement>>;
|
|
2023
|
+
/**
|
|
2024
|
+
* TableFooter 컴포넌트 / TableFooter component
|
|
2025
|
+
* 테이블의 푸터 영역을 표시합니다.
|
|
2026
|
+
* Displays the footer area of a table.
|
|
2027
|
+
*
|
|
2028
|
+
* @component
|
|
2029
|
+
* @param {TableFooterProps} props - TableFooter 컴포넌트의 props / TableFooter component props
|
|
2030
|
+
* @param {React.Ref<HTMLTableSectionElement>} ref - tfoot 요소 ref / tfoot element ref
|
|
2031
|
+
* @returns {JSX.Element} TableFooter 컴포넌트 / TableFooter component
|
|
2032
|
+
*/
|
|
2033
|
+
declare const TableFooter: React.ForwardRefExoticComponent<TableFooterProps & React.RefAttributes<HTMLTableSectionElement>>;
|
|
2034
|
+
/**
|
|
2035
|
+
* TableRow 컴포넌트 / TableRow component
|
|
2036
|
+
* 테이블의 행을 표시합니다.
|
|
2037
|
+
* Displays a table row.
|
|
2038
|
+
*
|
|
2039
|
+
* @component
|
|
2040
|
+
* @param {TableRowProps} props - TableRow 컴포넌트의 props / TableRow component props
|
|
2041
|
+
* @param {React.Ref<HTMLTableRowElement>} ref - tr 요소 ref / tr element ref
|
|
2042
|
+
* @returns {JSX.Element} TableRow 컴포넌트 / TableRow component
|
|
2043
|
+
*/
|
|
2044
|
+
declare const TableRow: React.ForwardRefExoticComponent<TableRowProps & React.RefAttributes<HTMLTableRowElement>>;
|
|
2045
|
+
/**
|
|
2046
|
+
* TableHead 컴포넌트 / TableHead component
|
|
2047
|
+
* 테이블의 헤더 셀을 표시합니다.
|
|
2048
|
+
* Displays a table header cell.
|
|
2049
|
+
*
|
|
2050
|
+
* @component
|
|
2051
|
+
* @param {TableHeadProps} props - TableHead 컴포넌트의 props / TableHead component props
|
|
2052
|
+
* @param {React.Ref<HTMLTableCellElement>} ref - th 요소 ref / th element ref
|
|
2053
|
+
* @returns {JSX.Element} TableHead 컴포넌트 / TableHead component
|
|
2054
|
+
*/
|
|
2055
|
+
declare const TableHead: React.ForwardRefExoticComponent<TableHeadProps & React.RefAttributes<HTMLTableCellElement>>;
|
|
2056
|
+
/**
|
|
2057
|
+
* TableCell 컴포넌트 / TableCell component
|
|
2058
|
+
* 테이블의 데이터 셀을 표시합니다.
|
|
2059
|
+
* Displays a table data cell.
|
|
2060
|
+
*
|
|
2061
|
+
* @component
|
|
2062
|
+
* @param {TableCellProps} props - TableCell 컴포넌트의 props / TableCell component props
|
|
2063
|
+
* @param {React.Ref<HTMLTableCellElement>} ref - td 요소 ref / td element ref
|
|
2064
|
+
* @returns {JSX.Element} TableCell 컴포넌트 / TableCell component
|
|
2065
|
+
*/
|
|
2066
|
+
declare const TableCell: React.ForwardRefExoticComponent<TableCellProps & React.RefAttributes<HTMLTableCellElement>>;
|
|
2067
|
+
/**
|
|
2068
|
+
* TableCaption 컴포넌트 / TableCaption component
|
|
2069
|
+
* 테이블의 캡션을 표시합니다.
|
|
2070
|
+
* Displays a table caption.
|
|
2071
|
+
*
|
|
2072
|
+
* @component
|
|
2073
|
+
* @param {React.HTMLAttributes<HTMLTableCaptionElement>} props - TableCaption 컴포넌트의 props / TableCaption component props
|
|
2074
|
+
* @param {React.Ref<HTMLTableCaptionElement>} ref - caption 요소 ref / caption element ref
|
|
2075
|
+
* @returns {JSX.Element} TableCaption 컴포넌트 / TableCaption component
|
|
2076
|
+
*/
|
|
2077
|
+
declare const TableCaption: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableCaptionElement> & React.RefAttributes<HTMLTableCaptionElement>>;
|
|
2078
|
+
|
|
2079
|
+
/**
|
|
2080
|
+
* Badge 컴포넌트의 props / Badge component props
|
|
2081
|
+
* @typedef {Object} BadgeProps
|
|
2082
|
+
* @property {"default" | "secondary" | "destructive" | "error" | "outline" | "glass"} [variant="default"] - Badge 스타일 변형 / Badge style variant
|
|
2083
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2084
|
+
*/
|
|
2085
|
+
interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2086
|
+
variant?: "default" | "secondary" | "destructive" | "error" | "outline" | "glass";
|
|
2087
|
+
}
|
|
2088
|
+
/**
|
|
2089
|
+
* Badge 컴포넌트 / Badge component
|
|
2090
|
+
*
|
|
2091
|
+
* 상태나 카테고리를 표시하는 작은 배지 컴포넌트입니다.
|
|
2092
|
+
* React.memo로 최적화되어 있어 불필요한 리렌더링을 방지합니다.
|
|
2093
|
+
*
|
|
2094
|
+
* Small badge component for displaying status or category.
|
|
2095
|
+
* Optimized with React.memo to prevent unnecessary re-renders.
|
|
2096
|
+
*
|
|
2097
|
+
* @component
|
|
2098
|
+
* @example
|
|
2099
|
+
* // 기본 사용 / Basic usage
|
|
2100
|
+
* <Badge>New</Badge>
|
|
2101
|
+
*
|
|
2102
|
+
* @example
|
|
2103
|
+
* // 다양한 변형 / Various variants
|
|
2104
|
+
* <Badge variant="destructive">완료</Badge>
|
|
2105
|
+
* <Badge variant="error">오류</Badge>
|
|
2106
|
+
* <Badge variant="outline">대기</Badge>
|
|
2107
|
+
*
|
|
2108
|
+
* @param {BadgeProps} props - Badge 컴포넌트의 props / Badge component props
|
|
2109
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2110
|
+
* @returns {JSX.Element} Badge 컴포넌트 / Badge component
|
|
2111
|
+
*/
|
|
2112
|
+
declare const Badge: React.NamedExoticComponent<BadgeProps & React.RefAttributes<HTMLDivElement>>;
|
|
2113
|
+
|
|
2114
|
+
/**
|
|
2115
|
+
* Progress 컴포넌트의 props
|
|
2116
|
+
* @typedef {Object} ProgressProps
|
|
2117
|
+
* @property {number} [value=0] - 진행률 값
|
|
2118
|
+
* @property {number} [max=100] - 최대값
|
|
2119
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - Progress 바 크기
|
|
2120
|
+
* @property {"default" | "success" | "warning" | "error" | "info" | "glass"} [variant="default"] - Progress 스타일 변형
|
|
2121
|
+
* @property {boolean} [showValue=false] - 진행률 퍼센트 표시 여부
|
|
2122
|
+
* @property {boolean} [animated=true] - 애니메이션 활성화 여부
|
|
2123
|
+
* @property {boolean} [striped=false] - 줄무늬 패턴 표시 여부
|
|
2124
|
+
* @property {string} [label] - Progress 라벨 텍스트
|
|
2125
|
+
* @property {string} [description] - Progress 설명 텍스트
|
|
2126
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2127
|
+
*/
|
|
2128
|
+
interface ProgressProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2129
|
+
value?: number;
|
|
2130
|
+
max?: number;
|
|
2131
|
+
size?: "sm" | "md" | "lg";
|
|
2132
|
+
variant?: "default" | "success" | "warning" | "error" | "info" | "glass";
|
|
2133
|
+
showValue?: boolean;
|
|
2134
|
+
animated?: boolean;
|
|
2135
|
+
striped?: boolean;
|
|
2136
|
+
label?: string;
|
|
2137
|
+
description?: string;
|
|
2138
|
+
}
|
|
2139
|
+
/**
|
|
2140
|
+
* Progress 컴포넌트 / Progress component
|
|
2141
|
+
*
|
|
2142
|
+
* 진행률을 표시하는 프로그레스 바 컴포넌트입니다.
|
|
2143
|
+
* 다양한 스타일과 애니메이션을 지원합니다.
|
|
2144
|
+
*
|
|
2145
|
+
* Progress bar component that displays progress.
|
|
2146
|
+
* Supports various styles and animations.
|
|
2147
|
+
*
|
|
2148
|
+
* @component
|
|
2149
|
+
* @example
|
|
2150
|
+
* // 기본 사용 / Basic usage
|
|
2151
|
+
* <Progress value={50} />
|
|
2152
|
+
*
|
|
2153
|
+
* @example
|
|
2154
|
+
* // 라벨과 값 표시 / Show label and value
|
|
2155
|
+
* <Progress
|
|
2156
|
+
* value={75}
|
|
2157
|
+
* label="업로드 진행률"
|
|
2158
|
+
* showValue
|
|
2159
|
+
* />
|
|
2160
|
+
*
|
|
2161
|
+
* @example
|
|
2162
|
+
* // Success 스타일, 줄무늬 패턴 / Success style, striped pattern
|
|
2163
|
+
* <Progress
|
|
2164
|
+
* value={90}
|
|
2165
|
+
* variant="success"
|
|
2166
|
+
* striped
|
|
2167
|
+
* animated
|
|
2168
|
+
* />
|
|
2169
|
+
*
|
|
2170
|
+
* @param {ProgressProps} props - Progress 컴포넌트의 props / Progress component props
|
|
2171
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2172
|
+
* @returns {JSX.Element} Progress 컴포넌트 / Progress component
|
|
2173
|
+
*/
|
|
2174
|
+
declare const Progress: React.ForwardRefExoticComponent<ProgressProps & React.RefAttributes<HTMLDivElement>>;
|
|
2175
|
+
declare const ProgressSuccess: React.ForwardRefExoticComponent<Omit<ProgressProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2176
|
+
declare const ProgressWarning: React.ForwardRefExoticComponent<Omit<ProgressProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2177
|
+
declare const ProgressError: React.ForwardRefExoticComponent<Omit<ProgressProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2178
|
+
declare const ProgressInfo: React.ForwardRefExoticComponent<Omit<ProgressProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2179
|
+
declare const ProgressGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2180
|
+
|
|
2181
|
+
/**
|
|
2182
|
+
* Skeleton 컴포넌트의 props
|
|
2183
|
+
* @typedef {Object} SkeletonProps
|
|
2184
|
+
* @property {"text" | "circular" | "rectangular" | "rounded"} [variant="text"] - Skeleton 모양
|
|
2185
|
+
* @property {string | number} [width] - 너비 (기본값: variant에 따라 다름)
|
|
2186
|
+
* @property {string | number} [height] - 높이 (기본값: variant에 따라 다름)
|
|
2187
|
+
* @property {"pulse" | "wave" | "shimmer"} [animation="pulse"] - 애니메이션 타입
|
|
2188
|
+
* @property {string} [className] - 추가 CSS 클래스
|
|
2189
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2190
|
+
*/
|
|
2191
|
+
interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2192
|
+
variant?: "text" | "circular" | "rectangular" | "rounded";
|
|
2193
|
+
width?: string | number;
|
|
2194
|
+
height?: string | number;
|
|
2195
|
+
animation?: "pulse" | "wave" | "shimmer";
|
|
2196
|
+
className?: string;
|
|
2197
|
+
}
|
|
2198
|
+
/**
|
|
2199
|
+
* Skeleton 컴포넌트 / Skeleton component
|
|
2200
|
+
*
|
|
2201
|
+
* 로딩 중 콘텐츠의 플레이스홀더를 표시하는 스켈레톤 컴포넌트입니다.
|
|
2202
|
+
* 다양한 모양과 애니메이션을 지원합니다.
|
|
2203
|
+
*
|
|
2204
|
+
* Skeleton component that displays placeholders for content while loading.
|
|
2205
|
+
* Supports various shapes and animations.
|
|
2206
|
+
*
|
|
2207
|
+
* @component
|
|
2208
|
+
* @example
|
|
2209
|
+
* // 기본 사용 (텍스트) / Basic usage (text)
|
|
2210
|
+
* <Skeleton />
|
|
2211
|
+
*
|
|
2212
|
+
* @example
|
|
2213
|
+
* // 원형 아바타 / Circular avatar
|
|
2214
|
+
* <Skeleton variant="circular" width={40} height={40} />
|
|
2215
|
+
*
|
|
2216
|
+
* @example
|
|
2217
|
+
* // Wave 애니메이션 / Wave animation
|
|
2218
|
+
* <Skeleton
|
|
2219
|
+
* variant="rounded"
|
|
2220
|
+
* width="100%"
|
|
2221
|
+
* height={200}
|
|
2222
|
+
* animation="wave"
|
|
2223
|
+
* />
|
|
2224
|
+
*
|
|
2225
|
+
* @param {SkeletonProps} props - Skeleton 컴포넌트의 props / Skeleton component props
|
|
2226
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2227
|
+
* @returns {JSX.Element} Skeleton 컴포넌트 / Skeleton component
|
|
2228
|
+
*/
|
|
2229
|
+
declare const Skeleton: React.ForwardRefExoticComponent<SkeletonProps & React.RefAttributes<HTMLDivElement>>;
|
|
2230
|
+
declare const SkeletonText: React.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2231
|
+
declare const SkeletonCircle: React.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2232
|
+
declare const SkeletonRectangle: React.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2233
|
+
declare const SkeletonRounded: React.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2234
|
+
declare const SkeletonCard: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2235
|
+
declare const SkeletonAvatar: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2236
|
+
declare const SkeletonImage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2237
|
+
declare const SkeletonUserProfile: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2238
|
+
declare const SkeletonList: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2239
|
+
declare const SkeletonTable: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2240
|
+
|
|
2241
|
+
/**
|
|
2242
|
+
* Alert 컴포넌트의 props
|
|
2243
|
+
* @typedef {Object} AlertProps
|
|
2244
|
+
* @property {"default" | "success" | "warning" | "error" | "info"} [variant="default"] - Alert 스타일 변형
|
|
2245
|
+
* @property {string} [title] - Alert 제목
|
|
2246
|
+
* @property {string} [description] - Alert 설명
|
|
2247
|
+
* @property {React.ReactNode} [icon] - 커스텀 아이콘
|
|
2248
|
+
* @property {React.ReactNode} [action] - 액션 버튼/요소
|
|
2249
|
+
* @property {boolean} [closable=false] - 닫기 버튼 표시 여부
|
|
2250
|
+
* @property {() => void} [onClose] - 닫기 버튼 클릭 시 호출되는 콜백
|
|
2251
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2252
|
+
*/
|
|
2253
|
+
interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2254
|
+
variant?: "default" | "success" | "warning" | "error" | "info";
|
|
2255
|
+
title?: string;
|
|
2256
|
+
description?: string;
|
|
2257
|
+
icon?: React.ReactNode;
|
|
2258
|
+
action?: React.ReactNode;
|
|
2259
|
+
closable?: boolean;
|
|
2260
|
+
onClose?: () => void;
|
|
2261
|
+
}
|
|
2262
|
+
/**
|
|
2263
|
+
* Alert 컴포넌트 / Alert component
|
|
2264
|
+
*
|
|
2265
|
+
* 사용자에게 중요한 정보나 경고를 표시하는 컴포넌트입니다.
|
|
2266
|
+
* 다양한 변형(variant)을 지원하며, 아이콘, 제목, 설명, 액션 버튼을 포함할 수 있습니다.
|
|
2267
|
+
*
|
|
2268
|
+
* Component for displaying important information or warnings to users.
|
|
2269
|
+
* Supports various variants and can include icons, titles, descriptions, and action buttons.
|
|
2270
|
+
*
|
|
2271
|
+
* @component
|
|
2272
|
+
* @example
|
|
2273
|
+
* // 기본 사용 / Basic usage
|
|
2274
|
+
* <Alert variant="info" title="정보" description="이것은 정보 메시지입니다." />
|
|
2275
|
+
*
|
|
2276
|
+
* @example
|
|
2277
|
+
* // 닫기 버튼 포함 / With close button
|
|
2278
|
+
* <Alert
|
|
2279
|
+
* variant="warning"
|
|
2280
|
+
* title="경고"
|
|
2281
|
+
* closable
|
|
2282
|
+
* onClose={() => console.log('닫기')}
|
|
2283
|
+
* />
|
|
2284
|
+
*
|
|
2285
|
+
* @example
|
|
2286
|
+
* // 커스텀 아이콘과 액션 / Custom icon and action
|
|
2287
|
+
* <Alert
|
|
2288
|
+
* variant="success"
|
|
2289
|
+
* icon={<Icon name="check" />}
|
|
2290
|
+
* action={<Button size="sm">확인</Button>}
|
|
2291
|
+
* >
|
|
2292
|
+
* 작업이 완료되었습니다.
|
|
2293
|
+
* </Alert>
|
|
2294
|
+
*
|
|
2295
|
+
* @param {AlertProps} props - Alert 컴포넌트의 props / Alert component props
|
|
2296
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2297
|
+
* @returns {JSX.Element} Alert 컴포넌트 / Alert component
|
|
2298
|
+
*/
|
|
2299
|
+
declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
|
|
2300
|
+
declare const AlertSuccess: React.ForwardRefExoticComponent<Omit<AlertProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2301
|
+
declare const AlertWarning: React.ForwardRefExoticComponent<Omit<AlertProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2302
|
+
declare const AlertError: React.ForwardRefExoticComponent<Omit<AlertProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2303
|
+
declare const AlertInfo: React.ForwardRefExoticComponent<Omit<AlertProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2304
|
+
|
|
2305
|
+
/**
|
|
2306
|
+
* LoadingSpinner 컴포넌트의 props / LoadingSpinner component props
|
|
2307
|
+
* @typedef {Object} LoadingSpinnerProps
|
|
2308
|
+
* @property {"sm" | "md" | "lg" | "xl"} [size="md"] - Spinner 크기 / Spinner size
|
|
2309
|
+
* @property {"default" | "dots" | "bars" | "ring" | "ripple"} [variant="default"] - Spinner 애니메이션 타입 / Spinner animation type
|
|
2310
|
+
* @property {string} [text] - Spinner 아래 표시할 텍스트 / Text to display below spinner
|
|
2311
|
+
* @property {"default" | "primary" | "secondary" | "success" | "warning" | "error" | "glass"} [color="default"] - Spinner 색상 / Spinner color
|
|
2312
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2313
|
+
*/
|
|
2314
|
+
interface LoadingSpinnerProps {
|
|
2315
|
+
size?: "sm" | "md" | "lg" | "xl";
|
|
2316
|
+
variant?: "default" | "dots" | "bars" | "ring" | "ripple";
|
|
2317
|
+
text?: string;
|
|
2318
|
+
color?: "default" | "primary" | "secondary" | "success" | "warning" | "error" | "glass";
|
|
2319
|
+
className?: string;
|
|
2320
|
+
}
|
|
2321
|
+
/**
|
|
2322
|
+
* LoadingSpinner 컴포넌트 / LoadingSpinner component
|
|
2323
|
+
*
|
|
2324
|
+
* 로딩 상태를 표시하는 스피너 컴포넌트입니다.
|
|
2325
|
+
* 다양한 애니메이션 타입과 크기를 지원합니다.
|
|
2326
|
+
*
|
|
2327
|
+
* Spinner component that displays loading state.
|
|
2328
|
+
* Supports various animation types and sizes.
|
|
2329
|
+
*
|
|
2330
|
+
* @component
|
|
2331
|
+
* @example
|
|
2332
|
+
* // 기본 사용 / Basic usage
|
|
2333
|
+
* <LoadingSpinner />
|
|
2334
|
+
*
|
|
2335
|
+
* @example
|
|
2336
|
+
* // 텍스트와 함께 / With text
|
|
2337
|
+
* <LoadingSpinner
|
|
2338
|
+
* text="로딩 중..."
|
|
2339
|
+
* size="lg"
|
|
2340
|
+
* color="primary"
|
|
2341
|
+
* />
|
|
2342
|
+
*
|
|
2343
|
+
* @example
|
|
2344
|
+
* // 다양한 애니메이션 / Various animations
|
|
2345
|
+
* <LoadingSpinner variant="dots" />
|
|
2346
|
+
* <LoadingSpinner variant="bars" color="success" />
|
|
2347
|
+
* <LoadingSpinner variant="ripple" size="xl" />
|
|
2348
|
+
*
|
|
2349
|
+
* @param {LoadingSpinnerProps} props - LoadingSpinner 컴포넌트의 props / LoadingSpinner component props
|
|
2350
|
+
* @returns {JSX.Element} LoadingSpinner 컴포넌트 / LoadingSpinner component
|
|
2351
|
+
*/
|
|
2352
|
+
declare function LoadingSpinner({ className, size, variant, text, color }: LoadingSpinnerProps): react_jsx_runtime.JSX.Element;
|
|
2353
|
+
|
|
2354
|
+
/**
|
|
2355
|
+
* Tooltip 컴포넌트의 props / Tooltip component props
|
|
2356
|
+
* @typedef {Object} TooltipProps
|
|
2357
|
+
* @property {string} content - Tooltip 내용 / Tooltip content
|
|
2358
|
+
* @property {React.ReactNode} children - Tooltip이 연결될 요소 / Element to attach tooltip to
|
|
2359
|
+
* @property {"top" | "bottom" | "left" | "right"} [position="top"] - Tooltip 표시 위치 / Tooltip display position
|
|
2360
|
+
* @property {"default" | "light" | "dark"} [variant="default"] - Tooltip 스타일 변형 / Tooltip style variant
|
|
2361
|
+
* @property {number} [delay=300] - Tooltip 표시 지연 시간(ms) / Tooltip display delay (ms)
|
|
2362
|
+
* @property {boolean} [disabled=false] - Tooltip 비활성화 여부 / Disable tooltip
|
|
2363
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2364
|
+
*/
|
|
2365
|
+
interface TooltipProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2366
|
+
content: string;
|
|
2367
|
+
children: React.ReactNode;
|
|
2368
|
+
position?: "top" | "bottom" | "left" | "right";
|
|
2369
|
+
variant?: "default" | "light" | "dark";
|
|
2370
|
+
delay?: number;
|
|
2371
|
+
disabled?: boolean;
|
|
2372
|
+
}
|
|
2373
|
+
/**
|
|
2374
|
+
* Tooltip 컴포넌트 / Tooltip component
|
|
2375
|
+
*
|
|
2376
|
+
* 호버 시 추가 정보를 표시하는 툴팁 컴포넌트입니다.
|
|
2377
|
+
* 마우스 호버 시 지연 시간 후 표시됩니다.
|
|
2378
|
+
*
|
|
2379
|
+
* Tooltip component that displays additional information on hover.
|
|
2380
|
+
* Appears after a delay when the mouse hovers over the element.
|
|
2381
|
+
*
|
|
2382
|
+
* @component
|
|
2383
|
+
* @example
|
|
2384
|
+
* // 기본 사용 / Basic usage
|
|
2385
|
+
* <Tooltip content="이것은 도움말입니다">
|
|
2386
|
+
* <Button>호버하세요</Button>
|
|
2387
|
+
* </Tooltip>
|
|
2388
|
+
*
|
|
2389
|
+
* @example
|
|
2390
|
+
* // 다양한 위치 / Different positions
|
|
2391
|
+
* <Tooltip content="위치 변경" position="bottom">
|
|
2392
|
+
* <Icon name="info" />
|
|
2393
|
+
* </Tooltip>
|
|
2394
|
+
*
|
|
2395
|
+
* @example
|
|
2396
|
+
* // 커스텀 스타일 / Custom styles
|
|
2397
|
+
* <Tooltip content="라이트 스타일" variant="light" delay={500}>
|
|
2398
|
+
* <span>호버</span>
|
|
2399
|
+
* </Tooltip>
|
|
2400
|
+
*
|
|
2401
|
+
* @param {TooltipProps} props - Tooltip 컴포넌트의 props / Tooltip component props
|
|
2402
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2403
|
+
* @returns {JSX.Element} Tooltip 컴포넌트 / Tooltip component
|
|
2404
|
+
*
|
|
2405
|
+
* @todo 접근성 개선: role="tooltip" 추가 필요 / Accessibility: Add role="tooltip"
|
|
2406
|
+
* @todo 접근성 개선: aria-describedby 연결 필요 / Accessibility: Connect aria-describedby
|
|
2407
|
+
* @todo 접근성 개선: 키보드 포커스 시 Tooltip 표시 필요 / Accessibility: Show tooltip on keyboard focus
|
|
2408
|
+
*/
|
|
2409
|
+
declare const Tooltip: React.ForwardRefExoticComponent<TooltipProps & React.RefAttributes<HTMLDivElement>>;
|
|
2410
|
+
declare const TooltipLight: React.ForwardRefExoticComponent<Omit<TooltipProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2411
|
+
declare const TooltipDark: React.ForwardRefExoticComponent<Omit<TooltipProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
2412
|
+
|
|
2413
|
+
/**
|
|
2414
|
+
* Popover 컴포넌트의 props / Popover component props
|
|
2415
|
+
* @typedef {Object} PopoverProps
|
|
2416
|
+
* @property {React.ReactNode} children - Popover 내용 / Popover content
|
|
2417
|
+
* @property {React.ReactNode} trigger - Popover를 열기 위한 트리거 요소 / Trigger element to open popover
|
|
2418
|
+
* @property {boolean} [open] - 제어 모드에서 열림/닫힘 상태 / Open/close state in controlled mode
|
|
2419
|
+
* @property {(open: boolean) => void} [onOpenChange] - 상태 변경 콜백 / State change callback
|
|
2420
|
+
* @property {"top" | "bottom" | "left" | "right"} [position="bottom"] - Popover 표시 위치 / Popover display position
|
|
2421
|
+
* @property {"start" | "center" | "end"} [align="center"] - Popover 정렬 / Popover alignment
|
|
2422
|
+
* @property {number} [offset=8] - 트리거와 Popover 사이 간격 (px) / Spacing between trigger and popover (px)
|
|
2423
|
+
* @property {boolean} [disabled=false] - Popover 비활성화 여부 / Disable popover
|
|
2424
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2425
|
+
*/
|
|
2426
|
+
interface PopoverProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2427
|
+
children: React.ReactNode;
|
|
2428
|
+
trigger: React.ReactNode;
|
|
2429
|
+
open?: boolean;
|
|
2430
|
+
onOpenChange?: (open: boolean) => void;
|
|
2431
|
+
position?: "top" | "bottom" | "left" | "right";
|
|
2432
|
+
align?: "start" | "center" | "end";
|
|
2433
|
+
offset?: number;
|
|
2434
|
+
disabled?: boolean;
|
|
2435
|
+
}
|
|
2436
|
+
/**
|
|
2437
|
+
* Popover 컴포넌트 / Popover component
|
|
2438
|
+
*
|
|
2439
|
+
* 트리거 요소를 클릭하면 표시되는 팝오버 컴포넌트입니다.
|
|
2440
|
+
* 외부 클릭 시 자동으로 닫힙니다.
|
|
2441
|
+
*
|
|
2442
|
+
* Popover component that appears when the trigger element is clicked.
|
|
2443
|
+
* Automatically closes when clicking outside.
|
|
2444
|
+
*
|
|
2445
|
+
* @component
|
|
2446
|
+
* @example
|
|
2447
|
+
* // 기본 사용 / Basic usage
|
|
2448
|
+
* <Popover trigger={<Button>열기</Button>}>
|
|
2449
|
+
* <div className="p-4">Popover 내용</div>
|
|
2450
|
+
* </Popover>
|
|
2451
|
+
*
|
|
2452
|
+
* @example
|
|
2453
|
+
* // 제어 모드 / Controlled mode
|
|
2454
|
+
* const [open, setOpen] = useState(false)
|
|
2455
|
+
* <Popover
|
|
2456
|
+
* open={open}
|
|
2457
|
+
* onOpenChange={setOpen}
|
|
2458
|
+
* trigger={<Button>제어 모드</Button>}
|
|
2459
|
+
* position="top"
|
|
2460
|
+
* >
|
|
2461
|
+
* <div className="p-4">내용</div>
|
|
2462
|
+
* </Popover>
|
|
2463
|
+
*
|
|
2464
|
+
* @param {PopoverProps} props - Popover 컴포넌트의 props / Popover component props
|
|
2465
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2466
|
+
* @returns {JSX.Element} Popover 컴포넌트 / Popover component
|
|
2467
|
+
*/
|
|
2468
|
+
declare const Popover: React.ForwardRefExoticComponent<PopoverProps & React.RefAttributes<HTMLDivElement>>;
|
|
2469
|
+
declare const PopoverTrigger: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2470
|
+
declare const PopoverContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2471
|
+
|
|
2472
|
+
/**
|
|
2473
|
+
* Dropdown 컴포넌트의 props / Dropdown component props
|
|
2474
|
+
* @typedef {Object} DropdownProps
|
|
2475
|
+
* @property {React.ReactNode} trigger - Dropdown을 열기 위한 트리거 요소 / Trigger element to open dropdown
|
|
2476
|
+
* @property {React.ReactNode} children - Dropdown 내용 / Dropdown content
|
|
2477
|
+
* @property {boolean} [open] - 제어 모드에서 열림/닫힘 상태 / Open/close state in controlled mode
|
|
2478
|
+
* @property {(open: boolean) => void} [onOpenChange] - 상태 변경 콜백 / State change callback
|
|
2479
|
+
* @property {"top" | "bottom" | "left" | "right"} [placement="bottom"] - Dropdown 표시 위치 / Dropdown display position
|
|
2480
|
+
* @property {"start" | "center" | "end"} [align="start"] - Dropdown 정렬 / Dropdown alignment
|
|
2481
|
+
* @property {number} [offset=8] - 트리거와 Dropdown 사이 간격 (px) / Spacing between trigger and dropdown (px)
|
|
2482
|
+
* @property {boolean} [disabled=false] - Dropdown 비활성화 여부 / Disable dropdown
|
|
2483
|
+
* @property {boolean} [showArrow=true] - 화살표 표시 여부 / Show arrow
|
|
2484
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2485
|
+
*/
|
|
2486
|
+
interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2487
|
+
trigger: React.ReactNode;
|
|
2488
|
+
children: React.ReactNode;
|
|
2489
|
+
open?: boolean;
|
|
2490
|
+
onOpenChange?: (open: boolean) => void;
|
|
2491
|
+
placement?: "top" | "bottom" | "left" | "right";
|
|
2492
|
+
align?: "start" | "center" | "end";
|
|
2493
|
+
offset?: number;
|
|
2494
|
+
disabled?: boolean;
|
|
2495
|
+
showArrow?: boolean;
|
|
2496
|
+
}
|
|
2497
|
+
/**
|
|
2498
|
+
* Dropdown 컴포넌트 / Dropdown component
|
|
2499
|
+
*
|
|
2500
|
+
* 트리거 요소를 클릭하면 표시되는 드롭다운 메뉴 컴포넌트입니다.
|
|
2501
|
+
* 외부 클릭 시 자동으로 닫히며, 뷰포트 경계를 자동으로 감지하여 위치를 조정합니다.
|
|
2502
|
+
*
|
|
2503
|
+
* Dropdown menu component that appears when the trigger element is clicked.
|
|
2504
|
+
* Automatically closes on outside click and adjusts position by detecting viewport boundaries.
|
|
2505
|
+
*
|
|
2506
|
+
* @component
|
|
2507
|
+
* @example
|
|
2508
|
+
* // 기본 사용 / Basic usage
|
|
2509
|
+
* <Dropdown trigger={<Button>메뉴</Button>}>
|
|
2510
|
+
* <Menu>
|
|
2511
|
+
* <MenuItem>항목 1</MenuItem>
|
|
2512
|
+
* <MenuItem>항목 2</MenuItem>
|
|
2513
|
+
* </Menu>
|
|
2514
|
+
* </Dropdown>
|
|
2515
|
+
*
|
|
2516
|
+
* @example
|
|
2517
|
+
* // 제어 모드, 화살표 없음 / Controlled mode, no arrow
|
|
2518
|
+
* const [open, setOpen] = useState(false)
|
|
2519
|
+
* <Dropdown
|
|
2520
|
+
* open={open}
|
|
2521
|
+
* onOpenChange={setOpen}
|
|
2522
|
+
* trigger={<Button>제어 모드</Button>}
|
|
2523
|
+
* placement="top"
|
|
2524
|
+
* showArrow={false}
|
|
2525
|
+
* >
|
|
2526
|
+
* <div className="p-4">내용</div>
|
|
2527
|
+
* </Dropdown>
|
|
2528
|
+
*
|
|
2529
|
+
* @param {DropdownProps} props - Dropdown 컴포넌트의 props / Dropdown component props
|
|
2530
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2531
|
+
* @returns {JSX.Element} Dropdown 컴포넌트 / Dropdown component
|
|
2532
|
+
*/
|
|
2533
|
+
declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLDivElement>>;
|
|
2534
|
+
interface DropdownItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
2535
|
+
icon?: React.ReactNode;
|
|
2536
|
+
variant?: "default" | "destructive" | "disabled";
|
|
2537
|
+
}
|
|
2538
|
+
declare const DropdownItem: React.ForwardRefExoticComponent<DropdownItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
2539
|
+
interface DropdownSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2540
|
+
}
|
|
2541
|
+
declare const DropdownSeparator: React.ForwardRefExoticComponent<DropdownSeparatorProps & React.RefAttributes<HTMLDivElement>>;
|
|
2542
|
+
interface DropdownLabelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2543
|
+
}
|
|
2544
|
+
declare const DropdownLabel: React.ForwardRefExoticComponent<DropdownLabelProps & React.RefAttributes<HTMLDivElement>>;
|
|
2545
|
+
declare const DropdownMenu: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2546
|
+
declare const DropdownGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
2547
|
+
|
|
2548
|
+
/**
|
|
2549
|
+
* Drawer 컴포넌트의 props / Drawer component props
|
|
2550
|
+
* @typedef {Object} DrawerProps
|
|
2551
|
+
* @property {boolean} open - Drawer 열림/닫힘 상태 / Drawer open/close state
|
|
2552
|
+
* @property {(open: boolean) => void} onOpenChange - 상태 변경 콜백 / State change callback
|
|
2553
|
+
* @property {React.ReactNode} children - Drawer 내용 / Drawer content
|
|
2554
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2555
|
+
* @property {"left" | "right" | "top" | "bottom"} [side="right"] - Drawer 표시 위치 / Drawer display position
|
|
2556
|
+
* @property {"sm" | "md" | "lg" | "xl" | "full"} [size="md"] - Drawer 크기 / Drawer size
|
|
2557
|
+
* @property {boolean} [showBackdrop=true] - 배경 오버레이 표시 여부 / Show backdrop overlay
|
|
2558
|
+
* @property {string} [backdropClassName] - 배경 오버레이 추가 CSS 클래스 / Backdrop overlay additional CSS class
|
|
2559
|
+
* @property {boolean} [closeOnBackdropClick=true] - 배경 클릭 시 닫기 여부 / Close on backdrop click
|
|
2560
|
+
* @property {boolean} [closeOnEscape=true] - ESC 키로 닫기 여부 / Close on ESC key
|
|
2561
|
+
*/
|
|
2562
|
+
interface DrawerProps {
|
|
2563
|
+
open: boolean;
|
|
2564
|
+
onOpenChange: (open: boolean) => void;
|
|
2565
|
+
children: React.ReactNode;
|
|
2566
|
+
className?: string;
|
|
2567
|
+
side?: "left" | "right" | "top" | "bottom";
|
|
2568
|
+
size?: "sm" | "md" | "lg" | "xl" | "full";
|
|
2569
|
+
showBackdrop?: boolean;
|
|
2570
|
+
backdropClassName?: string;
|
|
2571
|
+
closeOnBackdropClick?: boolean;
|
|
2572
|
+
closeOnEscape?: boolean;
|
|
2573
|
+
}
|
|
2574
|
+
/**
|
|
2575
|
+
* Drawer 컴포넌트 / Drawer component
|
|
2576
|
+
*
|
|
2577
|
+
* 사이드에서 슬라이드되는 패널 컴포넌트입니다.
|
|
2578
|
+
* Modal과 유사하지만 특정 방향에서 슬라이드되는 애니메이션을 제공합니다.
|
|
2579
|
+
* ESC 키로 닫기, 배경 클릭으로 닫기 기능을 지원합니다.
|
|
2580
|
+
*
|
|
2581
|
+
* Panel component that slides from the side.
|
|
2582
|
+
* Similar to Modal but provides slide animation from a specific direction.
|
|
2583
|
+
* Supports closing with ESC key and backdrop click.
|
|
2584
|
+
*
|
|
2585
|
+
* @component
|
|
2586
|
+
* @example
|
|
2587
|
+
* // 기본 사용 / Basic usage
|
|
2588
|
+
* const [open, setOpen] = useState(false)
|
|
2589
|
+
*
|
|
2590
|
+
* <Drawer open={open} onOpenChange={setOpen}>
|
|
2591
|
+
* <DrawerHeader>제목</DrawerHeader>
|
|
2592
|
+
* <DrawerContent>내용</DrawerContent>
|
|
2593
|
+
* <DrawerFooter>
|
|
2594
|
+
* <Button onClick={() => setOpen(false)}>닫기</Button>
|
|
2595
|
+
* </DrawerFooter>
|
|
2596
|
+
* </Drawer>
|
|
2597
|
+
*
|
|
2598
|
+
* @example
|
|
2599
|
+
* // 왼쪽에서 열기 / Open from left
|
|
2600
|
+
* <Drawer open={open} onOpenChange={setOpen} side="left" size="lg">
|
|
2601
|
+
* <DrawerContent>사이드바 내용</DrawerContent>
|
|
2602
|
+
* </Drawer>
|
|
2603
|
+
*
|
|
2604
|
+
* @param {DrawerProps} props - Drawer 컴포넌트의 props / Drawer component props
|
|
2605
|
+
* @param {React.Ref<HTMLDivElement>} ref - Drawer 컨테이너 ref / Drawer container ref
|
|
2606
|
+
* @returns {JSX.Element} Drawer 컴포넌트 / Drawer component
|
|
2607
|
+
*
|
|
2608
|
+
* @todo 접근성 개선: role="dialog", aria-modal="true" 추가 필요 / Accessibility: Add role="dialog", aria-modal="true"
|
|
2609
|
+
* @todo 접근성 개선: aria-labelledby, aria-describedby 연결 필요 / Accessibility: Connect aria-labelledby, aria-describedby
|
|
2610
|
+
*/
|
|
2611
|
+
declare const Drawer: React.ForwardRefExoticComponent<DrawerProps & React.RefAttributes<HTMLDivElement>>;
|
|
2612
|
+
/**
|
|
2613
|
+
* DrawerHeader 컴포넌트의 props / DrawerHeader component props
|
|
2614
|
+
* @typedef {Object} DrawerHeaderProps
|
|
2615
|
+
* @property {React.ReactNode} children - 헤더 내용 / Header content
|
|
2616
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2617
|
+
* @property {boolean} [showCloseButton=true] - 닫기 버튼 표시 여부 / Show close button
|
|
2618
|
+
* @property {() => void} [onClose] - 닫기 버튼 클릭 콜백 / Close button click callback
|
|
2619
|
+
*/
|
|
2620
|
+
interface DrawerHeaderProps {
|
|
2621
|
+
children: React.ReactNode;
|
|
2622
|
+
className?: string;
|
|
2623
|
+
showCloseButton?: boolean;
|
|
2624
|
+
onClose?: () => void;
|
|
2625
|
+
}
|
|
2626
|
+
/**
|
|
2627
|
+
* DrawerHeader 컴포넌트 / DrawerHeader component
|
|
2628
|
+
* Drawer의 헤더 영역을 표시합니다.
|
|
2629
|
+
* Displays the header area of a Drawer.
|
|
2630
|
+
*
|
|
2631
|
+
* @component
|
|
2632
|
+
* @param {DrawerHeaderProps} props - DrawerHeader 컴포넌트의 props / DrawerHeader component props
|
|
2633
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2634
|
+
* @returns {JSX.Element} DrawerHeader 컴포넌트 / DrawerHeader component
|
|
2635
|
+
*/
|
|
2636
|
+
declare const DrawerHeader: React.ForwardRefExoticComponent<DrawerHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
2637
|
+
/**
|
|
2638
|
+
* DrawerContent 컴포넌트의 props / DrawerContent component props
|
|
2639
|
+
* @typedef {Object} DrawerContentProps
|
|
2640
|
+
* @property {React.ReactNode} children - 콘텐츠 / Content
|
|
2641
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2642
|
+
*/
|
|
2643
|
+
interface DrawerContentProps {
|
|
2644
|
+
children: React.ReactNode;
|
|
2645
|
+
className?: string;
|
|
2646
|
+
}
|
|
2647
|
+
/**
|
|
2648
|
+
* DrawerContent 컴포넌트 / DrawerContent component
|
|
2649
|
+
* Drawer의 메인 콘텐츠 영역을 표시합니다.
|
|
2650
|
+
* Displays the main content area of a Drawer.
|
|
2651
|
+
*
|
|
2652
|
+
* @component
|
|
2653
|
+
* @param {DrawerContentProps} props - DrawerContent 컴포넌트의 props / DrawerContent component props
|
|
2654
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2655
|
+
* @returns {JSX.Element} DrawerContent 컴포넌트 / DrawerContent component
|
|
2656
|
+
*/
|
|
2657
|
+
declare const DrawerContent: React.ForwardRefExoticComponent<DrawerContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
2658
|
+
/**
|
|
2659
|
+
* DrawerFooter 컴포넌트의 props / DrawerFooter component props
|
|
2660
|
+
* @typedef {Object} DrawerFooterProps
|
|
2661
|
+
* @property {React.ReactNode} children - 푸터 내용 / Footer content
|
|
2662
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2663
|
+
*/
|
|
2664
|
+
interface DrawerFooterProps {
|
|
2665
|
+
children: React.ReactNode;
|
|
2666
|
+
className?: string;
|
|
2667
|
+
}
|
|
2668
|
+
/**
|
|
2669
|
+
* DrawerFooter 컴포넌트 / DrawerFooter component
|
|
2670
|
+
* Drawer의 푸터 영역을 표시합니다. 주로 액션 버튼을 배치합니다.
|
|
2671
|
+
* Displays the footer area of a Drawer. Typically used for action buttons.
|
|
2672
|
+
*
|
|
2673
|
+
* @component
|
|
2674
|
+
* @param {DrawerFooterProps} props - DrawerFooter 컴포넌트의 props / DrawerFooter component props
|
|
2675
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2676
|
+
* @returns {JSX.Element} DrawerFooter 컴포넌트 / DrawerFooter component
|
|
2677
|
+
*/
|
|
2678
|
+
declare const DrawerFooter: React.ForwardRefExoticComponent<DrawerFooterProps & React.RefAttributes<HTMLDivElement>>;
|
|
2679
|
+
|
|
2680
|
+
/**
|
|
2681
|
+
* BottomSheet 컴포넌트의 props / BottomSheet component props
|
|
2682
|
+
* @typedef {Object} BottomSheetProps
|
|
2683
|
+
* @property {boolean} open - BottomSheet 열림/닫힘 상태 / BottomSheet open/close state
|
|
2684
|
+
* @property {(open: boolean) => void} onOpenChange - 상태 변경 콜백 / State change callback
|
|
2685
|
+
* @property {React.ReactNode} children - BottomSheet 내용 / BottomSheet content
|
|
2686
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2687
|
+
* @property {"sm" | "md" | "lg" | "xl" | "full"} [height="md"] - BottomSheet 높이 / BottomSheet height
|
|
2688
|
+
* @property {boolean} [showBackdrop=true] - 배경 오버레이 표시 여부 / Show backdrop overlay
|
|
2689
|
+
* @property {string} [backdropClassName] - 배경 오버레이 추가 CSS 클래스 / Backdrop overlay additional CSS class
|
|
2690
|
+
* @property {boolean} [closeOnBackdropClick=true] - 배경 클릭 시 닫기 여부 / Close on backdrop click
|
|
2691
|
+
* @property {boolean} [closeOnEscape=true] - ESC 키로 닫기 여부 / Close on ESC key
|
|
2692
|
+
* @property {boolean} [showDragHandle=true] - 드래그 핸들 표시 여부 / Show drag handle
|
|
2693
|
+
* @property {number[]} [snapPoints=[25, 50, 75, 100]] - 스냅 포인트 (퍼센트) / Snap points (percentage)
|
|
2694
|
+
* @property {number} [defaultSnap=50] - 기본 스냅 포인트 (퍼센트) / Default snap point (percentage)
|
|
2695
|
+
*/
|
|
2696
|
+
interface BottomSheetProps {
|
|
2697
|
+
open: boolean;
|
|
2698
|
+
onOpenChange: (open: boolean) => void;
|
|
2699
|
+
children: React.ReactNode;
|
|
2700
|
+
className?: string;
|
|
2701
|
+
height?: "sm" | "md" | "lg" | "xl" | "full";
|
|
2702
|
+
showBackdrop?: boolean;
|
|
2703
|
+
backdropClassName?: string;
|
|
2704
|
+
closeOnBackdropClick?: boolean;
|
|
2705
|
+
closeOnEscape?: boolean;
|
|
2706
|
+
showDragHandle?: boolean;
|
|
2707
|
+
snapPoints?: number[];
|
|
2708
|
+
defaultSnap?: number;
|
|
2709
|
+
}
|
|
2710
|
+
/**
|
|
2711
|
+
* BottomSheet 컴포넌트 / BottomSheet component
|
|
2712
|
+
*
|
|
2713
|
+
* 화면 하단에서 올라오는 시트 컴포넌트입니다.
|
|
2714
|
+
* 모바일 친화적인 UI를 제공하며, 드래그로 높이를 조절할 수 있습니다.
|
|
2715
|
+
* 스냅 포인트를 지원하여 특정 높이에서 멈출 수 있습니다.
|
|
2716
|
+
*
|
|
2717
|
+
* Sheet component that slides up from the bottom of the screen.
|
|
2718
|
+
* Provides mobile-friendly UI and allows height adjustment by dragging.
|
|
2719
|
+
* Supports snap points to stop at specific heights.
|
|
2720
|
+
*
|
|
2721
|
+
* @component
|
|
2722
|
+
* @example
|
|
2723
|
+
* // 기본 사용 / Basic usage
|
|
2724
|
+
* const [open, setOpen] = useState(false)
|
|
2725
|
+
*
|
|
2726
|
+
* <BottomSheet open={open} onOpenChange={setOpen}>
|
|
2727
|
+
* <BottomSheetHeader>제목</BottomSheetHeader>
|
|
2728
|
+
* <BottomSheetContent>내용</BottomSheetContent>
|
|
2729
|
+
* </BottomSheet>
|
|
2730
|
+
*
|
|
2731
|
+
* @example
|
|
2732
|
+
* // 커스텀 스냅 포인트 / Custom snap points
|
|
2733
|
+
* <BottomSheet
|
|
2734
|
+
* open={open}
|
|
2735
|
+
* onOpenChange={setOpen}
|
|
2736
|
+
* snapPoints={[30, 60, 90]}
|
|
2737
|
+
* defaultSnap={30}
|
|
2738
|
+
* >
|
|
2739
|
+
* <BottomSheetContent>내용</BottomSheetContent>
|
|
2740
|
+
* </BottomSheet>
|
|
2741
|
+
*
|
|
2742
|
+
* @param {BottomSheetProps} props - BottomSheet 컴포넌트의 props / BottomSheet component props
|
|
2743
|
+
* @param {React.Ref<HTMLDivElement>} ref - BottomSheet 컨테이너 ref / BottomSheet container ref
|
|
2744
|
+
* @returns {JSX.Element} BottomSheet 컴포넌트 / BottomSheet component
|
|
2745
|
+
*
|
|
2746
|
+
* @todo 접근성 개선: role="dialog", aria-modal="true" 추가 필요 / Accessibility: Add role="dialog", aria-modal="true"
|
|
2747
|
+
* @todo 접근성 개선: aria-labelledby, aria-describedby 연결 필요 / Accessibility: Connect aria-labelledby, aria-describedby
|
|
2748
|
+
*/
|
|
2749
|
+
declare const BottomSheet: React.ForwardRefExoticComponent<BottomSheetProps & React.RefAttributes<HTMLDivElement>>;
|
|
2750
|
+
|
|
2751
|
+
/**
|
|
2752
|
+
* ConfirmModal 컴포넌트의 props / ConfirmModal component props
|
|
2753
|
+
* @typedef {Object} ConfirmModalProps
|
|
2754
|
+
* @property {boolean} isOpen - 모달 열림/닫힘 상태 / Modal open/close state
|
|
2755
|
+
* @property {() => void} onClose - 닫기 콜백 / Close callback
|
|
2756
|
+
* @property {() => void} onConfirm - 확인 콜백 / Confirm callback
|
|
2757
|
+
* @property {string} title - 모달 제목 / Modal title
|
|
2758
|
+
* @property {string} message - 모달 메시지 / Modal message
|
|
2759
|
+
* @property {string} [warning] - 경고 메시지 / Warning message
|
|
2760
|
+
* @property {string} [confirmText="확인"] - 확인 버튼 텍스트 / Confirm button text
|
|
2761
|
+
* @property {string} [cancelText="취소"] - 취소 버튼 텍스트 / Cancel button text
|
|
2762
|
+
* @property {string} [confirmButtonText] - 확인 버튼 커스텀 텍스트 / Custom confirm button text
|
|
2763
|
+
* @property {"danger" | "warning" | "info" | "success" | "error"} [type="danger"] - 모달 타입 / Modal type
|
|
2764
|
+
* @property {boolean} [loading=false] - 로딩 상태 / Loading state
|
|
2765
|
+
* @property {boolean} [disabled=false] - 비활성화 여부 / Disabled state
|
|
2766
|
+
* @property {boolean} [showInput=false] - 입력 필드 표시 여부 / Show input field
|
|
2767
|
+
* @property {string} [inputValue=""] - 입력 필드 값 / Input field value
|
|
2768
|
+
* @property {(value: string) => void} [onInputChange] - 입력 값 변경 콜백 / Input value change callback
|
|
2769
|
+
* @property {string} [inputPlaceholder] - 입력 필드 플레이스홀더 / Input field placeholder
|
|
2770
|
+
* @property {string} [inputLabel] - 입력 필드 라벨 / Input field label
|
|
2771
|
+
* @property {string} [requiredInputValue] - 필수 입력 값 (확인 버튼 활성화 조건) / Required input value (confirm button activation condition)
|
|
2772
|
+
* @property {boolean} [showCancel=true] - 취소 버튼 표시 여부 / Show cancel button
|
|
2773
|
+
* @property {"sm" | "md" | "lg" | "xl" | "2xl"} [size="md"] - 모달 크기 / Modal size
|
|
2774
|
+
*/
|
|
2775
|
+
interface ConfirmModalProps {
|
|
2776
|
+
isOpen: boolean;
|
|
2777
|
+
onClose: () => void;
|
|
2778
|
+
onConfirm: () => void;
|
|
2779
|
+
title: string;
|
|
2780
|
+
message: string;
|
|
2781
|
+
warning?: string;
|
|
2782
|
+
confirmText?: string;
|
|
2783
|
+
cancelText?: string;
|
|
2784
|
+
confirmButtonText?: string;
|
|
2785
|
+
type?: "danger" | "warning" | "info" | "success" | "error";
|
|
2786
|
+
loading?: boolean;
|
|
2787
|
+
disabled?: boolean;
|
|
2788
|
+
showInput?: boolean;
|
|
2789
|
+
inputValue?: string;
|
|
2790
|
+
onInputChange?: (value: string) => void;
|
|
2791
|
+
inputPlaceholder?: string;
|
|
2792
|
+
inputLabel?: string;
|
|
2793
|
+
requiredInputValue?: string;
|
|
2794
|
+
showCancel?: boolean;
|
|
2795
|
+
size?: "sm" | "md" | "lg" | "xl" | "2xl";
|
|
2796
|
+
}
|
|
2797
|
+
/**
|
|
2798
|
+
* ConfirmModal 컴포넌트 / ConfirmModal component
|
|
2799
|
+
*
|
|
2800
|
+
* 확인/취소가 필요한 모달 컴포넌트입니다.
|
|
2801
|
+
* 다양한 타입(danger, warning, info, success, error)을 지원하며,
|
|
2802
|
+
* 입력 필드와 필수 입력 값 검증을 지원합니다.
|
|
2803
|
+
*
|
|
2804
|
+
* Modal component that requires confirmation/cancellation.
|
|
2805
|
+
* Supports various types (danger, warning, info, success, error),
|
|
2806
|
+
* and supports input fields and required input value validation.
|
|
2807
|
+
*
|
|
2808
|
+
* @component
|
|
2809
|
+
* @example
|
|
2810
|
+
* // 기본 사용 / Basic usage
|
|
2811
|
+
* <ConfirmModal
|
|
2812
|
+
* isOpen={isOpen}
|
|
2813
|
+
* onClose={() => setIsOpen(false)}
|
|
2814
|
+
* onConfirm={handleConfirm}
|
|
2815
|
+
* title="삭제 확인"
|
|
2816
|
+
* message="정말 삭제하시겠습니까?"
|
|
2817
|
+
* />
|
|
2818
|
+
*
|
|
2819
|
+
* @example
|
|
2820
|
+
* // 입력 필드와 함께 / With input field
|
|
2821
|
+
* <ConfirmModal
|
|
2822
|
+
* isOpen={isOpen}
|
|
2823
|
+
* onClose={() => setIsOpen(false)}
|
|
2824
|
+
* onConfirm={handleDelete}
|
|
2825
|
+
* title="삭제 확인"
|
|
2826
|
+
* message="삭제하려면 'DELETE'를 입력하세요"
|
|
2827
|
+
* showInput
|
|
2828
|
+
* inputLabel="확인 입력"
|
|
2829
|
+
* requiredInputValue="DELETE"
|
|
2830
|
+
* inputValue={inputValue}
|
|
2831
|
+
* onInputChange={setInputValue}
|
|
2832
|
+
* />
|
|
2833
|
+
*
|
|
2834
|
+
* @param {ConfirmModalProps} props - ConfirmModal 컴포넌트의 props / ConfirmModal component props
|
|
2835
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2836
|
+
* @returns {JSX.Element} ConfirmModal 컴포넌트 / ConfirmModal component
|
|
2837
|
+
*/
|
|
2838
|
+
declare const ConfirmModal: React.ForwardRefExoticComponent<ConfirmModalProps & React.RefAttributes<HTMLDivElement>>;
|
|
2839
|
+
|
|
2840
|
+
/**
|
|
2841
|
+
* Accordion 컴포넌트의 props / Accordion component props
|
|
2842
|
+
* @typedef {Object} AccordionProps
|
|
2843
|
+
* @property {React.ReactNode} children - AccordionItem 컴포넌트들 / AccordionItem components
|
|
2844
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2845
|
+
* @property {"single" | "multiple"} [type="single"] - 단일 또는 다중 아이템 열기 허용 / Allow single or multiple items to be open
|
|
2846
|
+
* @property {string | string[]} [defaultValue] - 초기 열린 아이템 값 (비제어 컴포넌트) / Initial open item value (uncontrolled component)
|
|
2847
|
+
* @property {string | string[]} [value] - 현재 열린 아이템 값 (제어 컴포넌트) / Current open item value (controlled component)
|
|
2848
|
+
* @property {(value: string | string[]) => void} [onValueChange] - 아이템 열림/닫힘 콜백 / Item open/close callback
|
|
2849
|
+
* @property {boolean} [collapsible=false] - 단일 모드에서 열린 아이템을 닫을 수 있는지 여부 / Whether open item can be closed in single mode
|
|
2850
|
+
*/
|
|
2851
|
+
interface AccordionProps {
|
|
2852
|
+
children: React.ReactNode;
|
|
2853
|
+
className?: string;
|
|
2854
|
+
type?: "single" | "multiple";
|
|
2855
|
+
defaultValue?: string | string[];
|
|
2856
|
+
value?: string | string[];
|
|
2857
|
+
onValueChange?: (value: string | string[]) => void;
|
|
2858
|
+
collapsible?: boolean;
|
|
2859
|
+
}
|
|
2860
|
+
/**
|
|
2861
|
+
* Accordion 컴포넌트 / Accordion component
|
|
2862
|
+
*
|
|
2863
|
+
* 접을 수 있는 콘텐츠 섹션을 제공하는 컴포넌트입니다.
|
|
2864
|
+
* 키보드 네비게이션(Arrow keys, Home/End)을 지원하며, ARIA 속성을 자동으로 설정합니다.
|
|
2865
|
+
*
|
|
2866
|
+
* Component that provides collapsible content sections.
|
|
2867
|
+
* Supports keyboard navigation (Arrow keys, Home/End) and automatically sets ARIA attributes.
|
|
2868
|
+
*
|
|
2869
|
+
* @component
|
|
2870
|
+
* @example
|
|
2871
|
+
* // 기본 사용 (단일 열기) / Basic usage (single open)
|
|
2872
|
+
* <Accordion type="single">
|
|
2873
|
+
* <AccordionItem value="item1">
|
|
2874
|
+
* <AccordionTrigger>제목 1</AccordionTrigger>
|
|
2875
|
+
* <AccordionContent>내용 1</AccordionContent>
|
|
2876
|
+
* </AccordionItem>
|
|
2877
|
+
* <AccordionItem value="item2">
|
|
2878
|
+
* <AccordionTrigger>제목 2</AccordionTrigger>
|
|
2879
|
+
* <AccordionContent>내용 2</AccordionContent>
|
|
2880
|
+
* </AccordionItem>
|
|
2881
|
+
* </Accordion>
|
|
2882
|
+
*
|
|
2883
|
+
* @example
|
|
2884
|
+
* // 다중 열기 / Multiple open
|
|
2885
|
+
* <Accordion type="multiple" defaultValue={["item1", "item2"]}>
|
|
2886
|
+
* <AccordionItem value="item1">
|
|
2887
|
+
* <AccordionTrigger>제목 1</AccordionTrigger>
|
|
2888
|
+
* <AccordionContent>내용 1</AccordionContent>
|
|
2889
|
+
* </AccordionItem>
|
|
2890
|
+
* </Accordion>
|
|
2891
|
+
*
|
|
2892
|
+
* @example
|
|
2893
|
+
* // 제어 컴포넌트 / Controlled component
|
|
2894
|
+
* const [openItems, setOpenItems] = useState<string[]>([])
|
|
2895
|
+
* <Accordion type="multiple" value={openItems} onValueChange={setOpenItems}>
|
|
2896
|
+
* <AccordionItem value="item1">
|
|
2897
|
+
* <AccordionTrigger>제목</AccordionTrigger>
|
|
2898
|
+
* <AccordionContent>내용</AccordionContent>
|
|
2899
|
+
* </AccordionItem>
|
|
2900
|
+
* </Accordion>
|
|
2901
|
+
*
|
|
2902
|
+
* @param {AccordionProps} props - Accordion 컴포넌트의 props / Accordion component props
|
|
2903
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2904
|
+
* @returns {JSX.Element} Accordion 컴포넌트 / Accordion component
|
|
2905
|
+
*/
|
|
2906
|
+
declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
|
|
2907
|
+
/**
|
|
2908
|
+
* AccordionItem 컴포넌트의 props / AccordionItem component props
|
|
2909
|
+
* @typedef {Object} AccordionItemProps
|
|
2910
|
+
* @property {string} value - 아이템의 고유 값 / Item unique value
|
|
2911
|
+
* @property {React.ReactNode} children - AccordionTrigger와 AccordionContent / AccordionTrigger and AccordionContent
|
|
2912
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
2913
|
+
* @property {boolean} [disabled=false] - 아이템 비활성화 여부 / Item disabled state
|
|
2914
|
+
* @property {string[]} [openItems] - 열린 아이템 목록 (Accordion에서 자동 전달) / Open items list (auto-passed from Accordion)
|
|
2915
|
+
* @property {(value: string) => void} [onToggle] - 토글 콜백 (Accordion에서 자동 전달) / Toggle callback (auto-passed from Accordion)
|
|
2916
|
+
*/
|
|
2917
|
+
interface AccordionItemProps {
|
|
2918
|
+
value: string;
|
|
2919
|
+
children: React.ReactNode;
|
|
2920
|
+
className?: string;
|
|
2921
|
+
disabled?: boolean;
|
|
2922
|
+
openItems?: string[];
|
|
2923
|
+
onToggle?: (value: string) => void;
|
|
2924
|
+
}
|
|
2925
|
+
/**
|
|
2926
|
+
* AccordionItem 컴포넌트 / AccordionItem component
|
|
2927
|
+
* 아코디언의 개별 아이템을 감싸는 컨테이너입니다.
|
|
2928
|
+
* Container that wraps an individual accordion item.
|
|
2929
|
+
*
|
|
2930
|
+
* @component
|
|
2931
|
+
* @param {AccordionItemProps} props - AccordionItem 컴포넌트의 props / AccordionItem component props
|
|
2932
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2933
|
+
* @returns {JSX.Element} AccordionItem 컴포넌트 / AccordionItem component
|
|
2934
|
+
*/
|
|
2935
|
+
declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
2936
|
+
interface AccordionTriggerProps {
|
|
2937
|
+
children: React.ReactNode;
|
|
2938
|
+
className?: string;
|
|
2939
|
+
icon?: React.ReactNode;
|
|
2940
|
+
iconPosition?: "left" | "right";
|
|
2941
|
+
value?: string;
|
|
2942
|
+
isOpen?: boolean;
|
|
2943
|
+
disabled?: boolean;
|
|
2944
|
+
onToggle?: () => void;
|
|
2945
|
+
}
|
|
2946
|
+
declare const AccordionTrigger: React.ForwardRefExoticComponent<AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
2947
|
+
/**
|
|
2948
|
+
* AccordionTrigger 컴포넌트 / AccordionTrigger component
|
|
2949
|
+
* 아코디언 아이템을 열고 닫는 트리거 버튼입니다.
|
|
2950
|
+
* Button that opens and closes an accordion item.
|
|
2951
|
+
*
|
|
2952
|
+
* @component
|
|
2953
|
+
* @param {AccordionTriggerProps} props - AccordionTrigger 컴포넌트의 props / AccordionTrigger component props
|
|
2954
|
+
* @param {React.Ref<HTMLButtonElement>} ref - button 요소 ref / button element ref
|
|
2955
|
+
* @returns {JSX.Element} AccordionTrigger 컴포넌트 / AccordionTrigger component
|
|
2956
|
+
*/
|
|
2957
|
+
/**
|
|
2958
|
+
* AccordionContent 컴포넌트의 props
|
|
2959
|
+
* @typedef {Object} AccordionContentProps
|
|
2960
|
+
* @property {React.ReactNode} children - 콘텐츠
|
|
2961
|
+
* @property {string} [className] - 추가 CSS 클래스
|
|
2962
|
+
* @property {boolean} [isOpen] - 열림 상태 (AccordionItem에서 자동 전달)
|
|
2963
|
+
* @property {string} [value] - 아이템 값 (AccordionItem에서 자동 전달)
|
|
2964
|
+
* @property {string} ['data-accordion-value'] - 아이템 값 (내부 사용)
|
|
2965
|
+
*/
|
|
2966
|
+
interface AccordionContentProps {
|
|
2967
|
+
children: React.ReactNode;
|
|
2968
|
+
className?: string;
|
|
2969
|
+
isOpen?: boolean;
|
|
2970
|
+
value?: string;
|
|
2971
|
+
'data-accordion-value'?: string;
|
|
2972
|
+
}
|
|
2973
|
+
/**
|
|
2974
|
+
* AccordionContent 컴포넌트 / AccordionContent component
|
|
2975
|
+
* 아코디언 아이템의 콘텐츠를 표시합니다.
|
|
2976
|
+
* Displays the content of an accordion item.
|
|
2977
|
+
*
|
|
2978
|
+
* @component
|
|
2979
|
+
* @param {AccordionContentProps} props - AccordionContent 컴포넌트의 props / AccordionContent component props
|
|
2980
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
2981
|
+
* @returns {JSX.Element} AccordionContent 컴포넌트 / AccordionContent component
|
|
2982
|
+
*/
|
|
2983
|
+
declare const AccordionContent: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
2984
|
+
|
|
2985
|
+
/**
|
|
2986
|
+
* TabsContent 컴포넌트의 props / TabsContent component props
|
|
2987
|
+
* @typedef {Object} TabsContentProps
|
|
2988
|
+
* @property {string} value - 탭 패널의 고유 값 (TabsTrigger의 value와 일치해야 함) / Unique value for tab panel (must match TabsTrigger value)
|
|
2989
|
+
* @property {boolean} [active] - 탭 패널 활성화 상태 (자동 설정됨) / Tab panel active state (auto-set)
|
|
2990
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
2991
|
+
*/
|
|
2992
|
+
interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2993
|
+
value: string;
|
|
2994
|
+
active?: boolean;
|
|
2995
|
+
}
|
|
2996
|
+
/**
|
|
2997
|
+
* TabsContent 컴포넌트 / TabsContent component
|
|
2998
|
+
* 탭의 콘텐츠 패널을 표시합니다. Tabs 컴포넌트 내부에서 사용됩니다.
|
|
2999
|
+
* Displays the tab content panel. Used inside Tabs component.
|
|
3000
|
+
*
|
|
3001
|
+
* @component
|
|
3002
|
+
* @param {TabsContentProps} props - TabsContent 컴포넌트의 props / TabsContent component props
|
|
3003
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3004
|
+
* @returns {JSX.Element} TabsContent 컴포넌트 / TabsContent component
|
|
3005
|
+
*/
|
|
3006
|
+
declare const TabsContent: React.ForwardRefExoticComponent<TabsContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
3007
|
+
/**
|
|
3008
|
+
* Tabs 컴포넌트의 props / Tabs component props
|
|
3009
|
+
* @typedef {Object} TabsProps
|
|
3010
|
+
* @property {string} [value] - 현재 활성화된 탭 값 (제어 컴포넌트) / Currently active tab value (controlled component)
|
|
3011
|
+
* @property {string} [defaultValue] - 초기 활성화된 탭 값 (비제어 컴포넌트) / Initial active tab value (uncontrolled component)
|
|
3012
|
+
* @property {(value: string) => void} [onValueChange] - 탭 변경 시 호출되는 콜백 / Callback when tab changes
|
|
3013
|
+
* @property {"horizontal" | "vertical"} [orientation="horizontal"] - 탭 방향 / Tab orientation
|
|
3014
|
+
* @property {"default" | "pills" | "underline" | "cards"} [variant="default"] - 탭 스타일 변형 / Tab style variant
|
|
3015
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - 탭 크기 / Tab size
|
|
3016
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3017
|
+
*/
|
|
3018
|
+
interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3019
|
+
value?: string;
|
|
3020
|
+
defaultValue?: string;
|
|
3021
|
+
onValueChange?: (value: string) => void;
|
|
3022
|
+
orientation?: "horizontal" | "vertical";
|
|
3023
|
+
variant?: "default" | "pills" | "underline" | "cards";
|
|
3024
|
+
size?: "sm" | "md" | "lg";
|
|
3025
|
+
}
|
|
3026
|
+
/**
|
|
3027
|
+
* Tabs 컴포넌트 / Tabs component
|
|
3028
|
+
*
|
|
3029
|
+
* 탭 네비게이션을 제공하는 컴포넌트입니다.
|
|
3030
|
+
* 키보드 네비게이션(Arrow keys, Home/End)을 지원하며, ARIA 속성을 자동으로 설정합니다.
|
|
3031
|
+
*
|
|
3032
|
+
* Component that provides tab navigation.
|
|
3033
|
+
* Supports keyboard navigation (Arrow keys, Home/End) and automatically sets ARIA attributes.
|
|
3034
|
+
*
|
|
3035
|
+
* @component
|
|
3036
|
+
* @example
|
|
3037
|
+
* // 기본 사용 / Basic usage
|
|
3038
|
+
* <Tabs defaultValue="tab1">
|
|
3039
|
+
* <TabsList>
|
|
3040
|
+
* <TabsTrigger value="tab1">탭 1</TabsTrigger>
|
|
3041
|
+
* <TabsTrigger value="tab2">탭 2</TabsTrigger>
|
|
3042
|
+
* </TabsList>
|
|
3043
|
+
* <TabsContent value="tab1">탭 1 내용</TabsContent>
|
|
3044
|
+
* <TabsContent value="tab2">탭 2 내용</TabsContent>
|
|
3045
|
+
* </Tabs>
|
|
3046
|
+
*
|
|
3047
|
+
* @example
|
|
3048
|
+
* // 제어 컴포넌트 / Controlled component
|
|
3049
|
+
* const [activeTab, setActiveTab] = useState("tab1")
|
|
3050
|
+
* <Tabs value={activeTab} onValueChange={setActiveTab}>
|
|
3051
|
+
* <TabsList>
|
|
3052
|
+
* <TabsTrigger value="tab1">탭 1</TabsTrigger>
|
|
3053
|
+
* </TabsList>
|
|
3054
|
+
* <TabsContent value="tab1">내용</TabsContent>
|
|
3055
|
+
* </Tabs>
|
|
3056
|
+
*
|
|
3057
|
+
* @example
|
|
3058
|
+
* // 다양한 변형 / Various variants
|
|
3059
|
+
* <Tabs variant="pills" size="lg">
|
|
3060
|
+
* <TabsList>
|
|
3061
|
+
* <TabsTrigger value="tab1">Pills 스타일</TabsTrigger>
|
|
3062
|
+
* </TabsList>
|
|
3063
|
+
* </Tabs>
|
|
3064
|
+
*
|
|
3065
|
+
* @param {TabsProps} props - Tabs 컴포넌트의 props / Tabs component props
|
|
3066
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3067
|
+
* @returns {JSX.Element} Tabs 컴포넌트 / Tabs component
|
|
3068
|
+
*/
|
|
3069
|
+
declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
3070
|
+
/**
|
|
3071
|
+
* TabsList 컴포넌트의 props / TabsList component props
|
|
3072
|
+
* @typedef {Object} TabsListProps
|
|
3073
|
+
* @property {string} [value] - 현재 활성화된 탭 값 (Tabs에서 자동 전달) / Currently active tab value (auto-passed from Tabs)
|
|
3074
|
+
* @property {(value: string) => void} [onValueChange] - 탭 변경 콜백 (Tabs에서 자동 전달) / Tab change callback (auto-passed from Tabs)
|
|
3075
|
+
* @property {"horizontal" | "vertical"} [orientation] - 탭 방향 (Tabs에서 자동 전달) / Tab orientation (auto-passed from Tabs)
|
|
3076
|
+
* @property {"default" | "pills" | "underline" | "cards"} [variant] - 탭 스타일 (Tabs에서 자동 전달) / Tab style (auto-passed from Tabs)
|
|
3077
|
+
* @property {"sm" | "md" | "lg"} [size] - 탭 크기 (Tabs에서 자동 전달) / Tab size (auto-passed from Tabs)
|
|
3078
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3079
|
+
*/
|
|
3080
|
+
interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3081
|
+
value?: string;
|
|
3082
|
+
onValueChange?: (value: string) => void;
|
|
3083
|
+
orientation?: "horizontal" | "vertical";
|
|
3084
|
+
variant?: "default" | "pills" | "underline" | "cards";
|
|
3085
|
+
size?: "sm" | "md" | "lg";
|
|
3086
|
+
}
|
|
3087
|
+
/**
|
|
3088
|
+
* TabsList 컴포넌트 / TabsList component
|
|
3089
|
+
* 탭 트리거 목록을 표시합니다. Tabs 컴포넌트 내부에서 사용됩니다.
|
|
3090
|
+
* Displays the list of tab triggers. Used inside Tabs component.
|
|
3091
|
+
*
|
|
3092
|
+
* @component
|
|
3093
|
+
* @param {TabsListProps} props - TabsList 컴포넌트의 props / TabsList component props
|
|
3094
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3095
|
+
* @returns {JSX.Element} TabsList 컴포넌트 / TabsList component
|
|
3096
|
+
*/
|
|
3097
|
+
declare const TabsList: React.ForwardRefExoticComponent<TabsListProps & React.RefAttributes<HTMLDivElement>>;
|
|
3098
|
+
/**
|
|
3099
|
+
* TabsTrigger 컴포넌트의 props
|
|
3100
|
+
* @typedef {Object} TabsTriggerProps
|
|
3101
|
+
* @property {string} value - 탭 트리거의 고유 값 (TabsContent의 value와 일치해야 함)
|
|
3102
|
+
* @property {(value: string) => void} [onValueChange] - 탭 변경 콜백 (TabsList에서 자동 전달)
|
|
3103
|
+
* @property {"horizontal" | "vertical"} [orientation] - 탭 방향 (TabsList에서 자동 전달)
|
|
3104
|
+
* @property {"default" | "pills" | "underline" | "cards"} [variant] - 탭 스타일 (TabsList에서 자동 전달)
|
|
3105
|
+
* @property {"sm" | "md" | "lg"} [size] - 탭 크기 (TabsList에서 자동 전달)
|
|
3106
|
+
* @property {boolean} [active] - 탭 활성화 상태 (자동 설정됨)
|
|
3107
|
+
* @extends {React.ButtonHTMLAttributes<HTMLButtonElement>}
|
|
3108
|
+
*/
|
|
3109
|
+
interface TabsTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3110
|
+
value: string;
|
|
3111
|
+
onValueChange?: (value: string) => void;
|
|
3112
|
+
orientation?: "horizontal" | "vertical";
|
|
3113
|
+
variant?: "default" | "pills" | "underline" | "cards";
|
|
3114
|
+
size?: "sm" | "md" | "lg";
|
|
3115
|
+
active?: boolean;
|
|
3116
|
+
}
|
|
3117
|
+
/**
|
|
3118
|
+
* TabsTrigger 컴포넌트 / TabsTrigger component
|
|
3119
|
+
* 탭을 활성화하는 버튼입니다. TabsList 컴포넌트 내부에서 사용됩니다.
|
|
3120
|
+
* Button that activates a tab. Used inside TabsList component.
|
|
3121
|
+
*
|
|
3122
|
+
* @component
|
|
3123
|
+
* @param {TabsTriggerProps} props - TabsTrigger 컴포넌트의 props / TabsTrigger component props
|
|
3124
|
+
* @param {React.Ref<HTMLButtonElement>} ref - button 요소 ref / button element ref
|
|
3125
|
+
* @returns {JSX.Element} TabsTrigger 컴포넌트 / TabsTrigger component
|
|
3126
|
+
*/
|
|
3127
|
+
declare const TabsTrigger: React.ForwardRefExoticComponent<TabsTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
3128
|
+
declare const TabsPills: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
3129
|
+
declare const TabsUnderline: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
3130
|
+
declare const TabsCards: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
|
|
3131
|
+
|
|
3132
|
+
/**
|
|
3133
|
+
* Menu 컴포넌트의 props / Menu component props
|
|
3134
|
+
* @typedef {Object} MenuProps
|
|
3135
|
+
* @property {React.ReactNode} children - MenuItem, MenuSeparator, MenuLabel 컴포넌트들 / MenuItem, MenuSeparator, MenuLabel components
|
|
3136
|
+
* @property {"default" | "horizontal" | "vertical" | "compact"} [variant="default"] - 메뉴 방향 및 스타일 / Menu direction and style
|
|
3137
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - 메뉴 아이템 크기 / Menu item size
|
|
3138
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3139
|
+
*/
|
|
3140
|
+
interface MenuProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3141
|
+
children: React.ReactNode;
|
|
3142
|
+
variant?: "default" | "horizontal" | "vertical" | "compact";
|
|
3143
|
+
size?: "sm" | "md" | "lg";
|
|
3144
|
+
}
|
|
3145
|
+
/**
|
|
3146
|
+
* Menu 컴포넌트 / Menu component
|
|
3147
|
+
*
|
|
3148
|
+
* 메뉴 리스트를 제공하는 컴포넌트입니다.
|
|
3149
|
+
* MenuItem, MenuSeparator, MenuLabel과 함께 사용합니다.
|
|
3150
|
+
*
|
|
3151
|
+
* Component that provides menu lists.
|
|
3152
|
+
* Used with MenuItem, MenuSeparator, and MenuLabel.
|
|
3153
|
+
*
|
|
3154
|
+
* @component
|
|
3155
|
+
* @example
|
|
3156
|
+
* // 기본 수직 메뉴 / Basic vertical menu
|
|
3157
|
+
* <Menu>
|
|
3158
|
+
* <MenuItem icon={<Icon name="home" />}>홈</MenuItem>
|
|
3159
|
+
* <MenuItem icon={<Icon name="settings" />}>설정</MenuItem>
|
|
3160
|
+
* <MenuSeparator />
|
|
3161
|
+
* <MenuItem>로그아웃</MenuItem>
|
|
3162
|
+
* </Menu>
|
|
3163
|
+
*
|
|
3164
|
+
* @example
|
|
3165
|
+
* // 수평 메뉴 / Horizontal menu
|
|
3166
|
+
* <Menu variant="horizontal">
|
|
3167
|
+
* <MenuItem>메뉴 1</MenuItem>
|
|
3168
|
+
* <MenuItem>메뉴 2</MenuItem>
|
|
3169
|
+
* </Menu>
|
|
3170
|
+
*
|
|
3171
|
+
* @param {MenuProps} props - Menu 컴포넌트의 props / Menu component props
|
|
3172
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3173
|
+
* @returns {JSX.Element} Menu 컴포넌트 / Menu component
|
|
3174
|
+
*/
|
|
3175
|
+
declare const Menu: React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLDivElement>>;
|
|
3176
|
+
/**
|
|
3177
|
+
* MenuItem 컴포넌트의 props / MenuItem component props
|
|
3178
|
+
* @typedef {Object} MenuItemProps
|
|
3179
|
+
* @property {React.ReactNode} [icon] - 메뉴 아이템 아이콘 / Menu item icon
|
|
3180
|
+
* @property {"default" | "horizontal" | "vertical" | "compact"} [variant] - 메뉴 변형 (Menu에서 자동 전달) / Menu variant (auto-passed from Menu)
|
|
3181
|
+
* @property {"sm" | "md" | "lg"} [size] - 메뉴 크기 (Menu에서 자동 전달) / Menu size (auto-passed from Menu)
|
|
3182
|
+
* @property {boolean} [active=false] - 활성화 상태 / Active state
|
|
3183
|
+
* @property {boolean} [disabled=false] - 비활성화 상태 / Disabled state
|
|
3184
|
+
* @extends {React.ButtonHTMLAttributes<HTMLButtonElement>}
|
|
3185
|
+
*/
|
|
3186
|
+
interface MenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3187
|
+
icon?: React.ReactNode;
|
|
3188
|
+
variant?: "default" | "horizontal" | "vertical" | "compact";
|
|
3189
|
+
size?: "sm" | "md" | "lg";
|
|
3190
|
+
active?: boolean;
|
|
3191
|
+
disabled?: boolean;
|
|
3192
|
+
}
|
|
3193
|
+
/**
|
|
3194
|
+
* MenuItem 컴포넌트 / MenuItem component
|
|
3195
|
+
* 메뉴의 개별 아이템을 표시합니다.
|
|
3196
|
+
* Displays an individual menu item.
|
|
3197
|
+
*
|
|
3198
|
+
* @component
|
|
3199
|
+
* @param {MenuItemProps} props - MenuItem 컴포넌트의 props / MenuItem component props
|
|
3200
|
+
* @param {React.Ref<HTMLButtonElement>} ref - button 요소 ref / button element ref
|
|
3201
|
+
* @returns {JSX.Element} MenuItem 컴포넌트 / MenuItem component
|
|
3202
|
+
*/
|
|
3203
|
+
declare const MenuItem: React.ForwardRefExoticComponent<MenuItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
3204
|
+
/**
|
|
3205
|
+
* MenuSeparator 컴포넌트의 props / MenuSeparator component props
|
|
3206
|
+
* @typedef {Object} MenuSeparatorProps
|
|
3207
|
+
* @property {"default" | "horizontal" | "vertical" | "compact"} [variant] - 메뉴 변형 (Menu에서 자동 전달) / Menu variant (auto-passed from Menu)
|
|
3208
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3209
|
+
*/
|
|
3210
|
+
interface MenuSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3211
|
+
variant?: "default" | "horizontal" | "vertical" | "compact";
|
|
3212
|
+
}
|
|
3213
|
+
/**
|
|
3214
|
+
* MenuSeparator 컴포넌트 / MenuSeparator component
|
|
3215
|
+
* 메뉴 아이템들을 구분하는 구분선을 표시합니다.
|
|
3216
|
+
* Displays a separator line between menu items.
|
|
3217
|
+
*
|
|
3218
|
+
* @component
|
|
3219
|
+
* @param {MenuSeparatorProps} props - MenuSeparator 컴포넌트의 props / MenuSeparator component props
|
|
3220
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3221
|
+
* @returns {JSX.Element} MenuSeparator 컴포넌트 / MenuSeparator component
|
|
3222
|
+
*/
|
|
3223
|
+
declare const MenuSeparator: React.ForwardRefExoticComponent<MenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
|
|
3224
|
+
/**
|
|
3225
|
+
* MenuLabel 컴포넌트의 props / MenuLabel component props
|
|
3226
|
+
* @typedef {Object} MenuLabelProps
|
|
3227
|
+
* @property {"default" | "horizontal" | "vertical" | "compact"} [variant] - 메뉴 변형 (Menu에서 자동 전달) / Menu variant (auto-passed from Menu)
|
|
3228
|
+
* @property {"sm" | "md" | "lg"} [size] - 메뉴 크기 (Menu에서 자동 전달) / Menu size (auto-passed from Menu)
|
|
3229
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3230
|
+
*/
|
|
3231
|
+
interface MenuLabelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3232
|
+
variant?: "default" | "horizontal" | "vertical" | "compact";
|
|
3233
|
+
size?: "sm" | "md" | "lg";
|
|
3234
|
+
}
|
|
3235
|
+
/**
|
|
3236
|
+
* MenuLabel 컴포넌트 / MenuLabel component
|
|
3237
|
+
* 메뉴 섹션의 레이블을 표시합니다.
|
|
3238
|
+
* Displays a label for a menu section.
|
|
3239
|
+
*
|
|
3240
|
+
* @component
|
|
3241
|
+
* @param {MenuLabelProps} props - MenuLabel 컴포넌트의 props / MenuLabel component props
|
|
3242
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3243
|
+
* @returns {JSX.Element} MenuLabel 컴포넌트 / MenuLabel component
|
|
3244
|
+
*/
|
|
3245
|
+
declare const MenuLabel: React.ForwardRefExoticComponent<MenuLabelProps & React.RefAttributes<HTMLDivElement>>;
|
|
3246
|
+
declare const MenuHorizontal: React.ForwardRefExoticComponent<Omit<MenuProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
3247
|
+
declare const MenuVertical: React.ForwardRefExoticComponent<Omit<MenuProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
3248
|
+
declare const MenuCompact: React.ForwardRefExoticComponent<Omit<MenuProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
3249
|
+
|
|
3250
|
+
/**
|
|
3251
|
+
* ContextMenu 컴포넌트의 props / ContextMenu component props
|
|
3252
|
+
* @typedef {Object} ContextMenuProps
|
|
3253
|
+
* @property {React.ReactNode} children - ContextMenu 내용 / ContextMenu content
|
|
3254
|
+
* @property {boolean} [open] - 제어 모드에서 열림/닫힘 상태 / Open/close state in controlled mode
|
|
3255
|
+
* @property {(open: boolean) => void} [onOpenChange] - 상태 변경 콜백 / State change callback
|
|
3256
|
+
* @property {React.ReactNode} [trigger] - ContextMenu를 열기 위한 트리거 요소 (우클릭 이벤트) / Trigger element to open context menu (right-click event)
|
|
3257
|
+
* @property {"top" | "bottom" | "left" | "right"} [placement="bottom"] - ContextMenu 표시 위치 / ContextMenu display position
|
|
3258
|
+
* @property {"start" | "center" | "end"} [align="start"] - ContextMenu 정렬 / ContextMenu alignment
|
|
3259
|
+
* @property {number} [offset=8] - 트리거와 ContextMenu 사이 간격 (px) / Spacing between trigger and context menu (px)
|
|
3260
|
+
* @property {boolean} [disabled=false] - ContextMenu 비활성화 여부 / Disable context menu
|
|
3261
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3262
|
+
*/
|
|
3263
|
+
interface ContextMenuProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3264
|
+
children: React.ReactNode;
|
|
3265
|
+
open?: boolean;
|
|
3266
|
+
onOpenChange?: (open: boolean) => void;
|
|
3267
|
+
trigger?: React.ReactNode;
|
|
3268
|
+
placement?: "top" | "bottom" | "left" | "right";
|
|
3269
|
+
align?: "start" | "center" | "end";
|
|
3270
|
+
offset?: number;
|
|
3271
|
+
disabled?: boolean;
|
|
3272
|
+
}
|
|
3273
|
+
/**
|
|
3274
|
+
* ContextMenu 컴포넌트 / ContextMenu component
|
|
3275
|
+
*
|
|
3276
|
+
* 우클릭 시 표시되는 컨텍스트 메뉴 컴포넌트입니다.
|
|
3277
|
+
* 트리거 요소에 우클릭 이벤트를 자동으로 연결합니다.
|
|
3278
|
+
*
|
|
3279
|
+
* Context menu component that appears on right-click.
|
|
3280
|
+
* Automatically connects right-click events to the trigger element.
|
|
3281
|
+
*
|
|
3282
|
+
* @component
|
|
3283
|
+
* @example
|
|
3284
|
+
* // 기본 사용 / Basic usage
|
|
3285
|
+
* <ContextMenu trigger={<div>우클릭하세요</div>}>
|
|
3286
|
+
* <div className="p-2">
|
|
3287
|
+
* <button>항목 1</button>
|
|
3288
|
+
* <button>항목 2</button>
|
|
3289
|
+
* </div>
|
|
3290
|
+
* </ContextMenu>
|
|
3291
|
+
*
|
|
3292
|
+
* @example
|
|
3293
|
+
* // 제어 모드 / Controlled mode
|
|
3294
|
+
* const [open, setOpen] = useState(false)
|
|
3295
|
+
* <ContextMenu
|
|
3296
|
+
* open={open}
|
|
3297
|
+
* onOpenChange={setOpen}
|
|
3298
|
+
* trigger={<div>우클릭</div>}
|
|
3299
|
+
* >
|
|
3300
|
+
* <Menu>
|
|
3301
|
+
* <MenuItem>복사</MenuItem>
|
|
3302
|
+
* <MenuItem>삭제</MenuItem>
|
|
3303
|
+
* </Menu>
|
|
3304
|
+
* </ContextMenu>
|
|
3305
|
+
*
|
|
3306
|
+
* @param {ContextMenuProps} props - ContextMenu 컴포넌트의 props / ContextMenu component props
|
|
3307
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3308
|
+
* @returns {JSX.Element} ContextMenu 컴포넌트 / ContextMenu component
|
|
3309
|
+
*/
|
|
3310
|
+
declare const ContextMenu: React.ForwardRefExoticComponent<ContextMenuProps & React.RefAttributes<HTMLDivElement>>;
|
|
3311
|
+
interface ContextMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3312
|
+
icon?: React.ReactNode;
|
|
3313
|
+
variant?: "default" | "destructive" | "disabled";
|
|
3314
|
+
}
|
|
3315
|
+
declare const ContextMenuItem: React.ForwardRefExoticComponent<ContextMenuItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
3316
|
+
interface ContextMenuSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3317
|
+
}
|
|
3318
|
+
declare const ContextMenuSeparator: React.ForwardRefExoticComponent<ContextMenuSeparatorProps & React.RefAttributes<HTMLDivElement>>;
|
|
3319
|
+
interface ContextMenuLabelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3320
|
+
}
|
|
3321
|
+
declare const ContextMenuLabel: React.ForwardRefExoticComponent<ContextMenuLabelProps & React.RefAttributes<HTMLDivElement>>;
|
|
3322
|
+
declare const ContextMenuGroup: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
3323
|
+
|
|
3324
|
+
/**
|
|
3325
|
+
* Command 컴포넌트의 props / Command component props
|
|
3326
|
+
* @typedef {Object} CommandProps
|
|
3327
|
+
* @property {React.ReactNode} children - CommandList, CommandItem 등 / CommandList, CommandItem, etc.
|
|
3328
|
+
* @property {boolean} [open] - 제어 모드에서 열림/닫힘 상태 / Open/close state in controlled mode
|
|
3329
|
+
* @property {(open: boolean) => void} [onOpenChange] - 상태 변경 콜백 / State change callback
|
|
3330
|
+
* @property {string} [placeholder="명령어를 검색하세요..."] - 검색 입력 플레이스홀더 / Search input placeholder
|
|
3331
|
+
* @property {string} [searchValue] - 제어 모드에서 검색 값 / Search value in controlled mode
|
|
3332
|
+
* @property {(value: string) => void} [onSearchChange] - 검색 값 변경 콜백 / Search value change callback
|
|
3333
|
+
* @property {boolean} [disabled=false] - Command 비활성화 여부 / Disable command
|
|
3334
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3335
|
+
*/
|
|
3336
|
+
interface CommandProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3337
|
+
children: React.ReactNode;
|
|
3338
|
+
open?: boolean;
|
|
3339
|
+
onOpenChange?: (open: boolean) => void;
|
|
3340
|
+
placeholder?: string;
|
|
3341
|
+
searchValue?: string;
|
|
3342
|
+
onSearchChange?: (value: string) => void;
|
|
3343
|
+
disabled?: boolean;
|
|
3344
|
+
}
|
|
3345
|
+
/**
|
|
3346
|
+
* Command 컴포넌트 / Command component
|
|
3347
|
+
*
|
|
3348
|
+
* 명령 팔레트(Command Palette) 컴포넌트입니다.
|
|
3349
|
+
* Cmd+K (Mac) 또는 Ctrl+K (Windows)로 열 수 있습니다.
|
|
3350
|
+
* 키보드 네비게이션(Arrow keys, Enter, Escape)을 지원합니다.
|
|
3351
|
+
*
|
|
3352
|
+
* Command Palette component.
|
|
3353
|
+
* Can be opened with Cmd+K (Mac) or Ctrl+K (Windows).
|
|
3354
|
+
* Supports keyboard navigation (Arrow keys, Enter, Escape).
|
|
3355
|
+
*
|
|
3356
|
+
* @component
|
|
3357
|
+
* @example
|
|
3358
|
+
* // 기본 사용 / Basic usage
|
|
3359
|
+
* <Command>
|
|
3360
|
+
* <CommandInput placeholder="검색..." />
|
|
3361
|
+
* <CommandList>
|
|
3362
|
+
* <CommandItem>항목 1</CommandItem>
|
|
3363
|
+
* <CommandItem>항목 2</CommandItem>
|
|
3364
|
+
* </CommandList>
|
|
3365
|
+
* </Command>
|
|
3366
|
+
*
|
|
3367
|
+
* @example
|
|
3368
|
+
* // 제어 모드 / Controlled mode
|
|
3369
|
+
* const [open, setOpen] = useState(false)
|
|
3370
|
+
* <Command
|
|
3371
|
+
* open={open}
|
|
3372
|
+
* onOpenChange={setOpen}
|
|
3373
|
+
* >
|
|
3374
|
+
* <CommandList>
|
|
3375
|
+
* <CommandGroup heading="파일">
|
|
3376
|
+
* <CommandItem>새 파일</CommandItem>
|
|
3377
|
+
* </CommandGroup>
|
|
3378
|
+
* </CommandList>
|
|
3379
|
+
* </Command>
|
|
3380
|
+
*
|
|
3381
|
+
* @param {CommandProps} props - Command 컴포넌트의 props / Command component props
|
|
3382
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3383
|
+
* @returns {JSX.Element} Command 컴포넌트 / Command component
|
|
3384
|
+
*/
|
|
3385
|
+
declare const Command: React.ForwardRefExoticComponent<CommandProps & React.RefAttributes<HTMLDivElement>>;
|
|
3386
|
+
/**
|
|
3387
|
+
* CommandInput 컴포넌트의 props / CommandInput component props
|
|
3388
|
+
* @typedef {Object} CommandInputProps
|
|
3389
|
+
* @extends {React.InputHTMLAttributes<HTMLInputElement>}
|
|
3390
|
+
*/
|
|
3391
|
+
interface CommandInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
3392
|
+
}
|
|
3393
|
+
declare const CommandInput: React.ForwardRefExoticComponent<CommandInputProps & React.RefAttributes<HTMLInputElement>>;
|
|
3394
|
+
interface CommandListProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3395
|
+
}
|
|
3396
|
+
declare const CommandList: React.ForwardRefExoticComponent<CommandListProps & React.RefAttributes<HTMLDivElement>>;
|
|
3397
|
+
/**
|
|
3398
|
+
* CommandItem 컴포넌트의 props / CommandItem component props
|
|
3399
|
+
* @typedef {Object} CommandItemProps
|
|
3400
|
+
* @property {React.ReactNode} [icon] - 항목 아이콘 / Item icon
|
|
3401
|
+
* @property {boolean} [selected=false] - 선택 상태 / Selected state
|
|
3402
|
+
* @property {() => void} [onSelect] - 선택 시 콜백 / Selection callback
|
|
3403
|
+
* @extends {React.ButtonHTMLAttributes<HTMLButtonElement>}
|
|
3404
|
+
*/
|
|
3405
|
+
interface CommandItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
3406
|
+
icon?: React.ReactNode;
|
|
3407
|
+
selected?: boolean;
|
|
3408
|
+
onSelect?: () => void;
|
|
3409
|
+
}
|
|
3410
|
+
declare const CommandItem: React.ForwardRefExoticComponent<CommandItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
3411
|
+
/**
|
|
3412
|
+
* CommandGroup 컴포넌트의 props / CommandGroup component props
|
|
3413
|
+
* @typedef {Object} CommandGroupProps
|
|
3414
|
+
* @property {React.ReactNode} [heading] - 그룹 제목 / Group heading
|
|
3415
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3416
|
+
*/
|
|
3417
|
+
interface CommandGroupProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3418
|
+
heading?: React.ReactNode;
|
|
3419
|
+
}
|
|
3420
|
+
declare const CommandGroup: React.ForwardRefExoticComponent<CommandGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
3421
|
+
/**
|
|
3422
|
+
* CommandSeparator 컴포넌트의 props / CommandSeparator component props
|
|
3423
|
+
* @typedef {Object} CommandSeparatorProps
|
|
3424
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3425
|
+
*/
|
|
3426
|
+
interface CommandSeparatorProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3427
|
+
}
|
|
3428
|
+
declare const CommandSeparator: React.ForwardRefExoticComponent<CommandSeparatorProps & React.RefAttributes<HTMLDivElement>>;
|
|
3429
|
+
/**
|
|
3430
|
+
* CommandEmpty 컴포넌트의 props / CommandEmpty component props
|
|
3431
|
+
* @typedef {Object} CommandEmptyProps
|
|
3432
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3433
|
+
*/
|
|
3434
|
+
interface CommandEmptyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3435
|
+
}
|
|
3436
|
+
declare const CommandEmpty: React.ForwardRefExoticComponent<CommandEmptyProps & React.RefAttributes<HTMLDivElement>>;
|
|
3437
|
+
declare const CommandDialog: React.ForwardRefExoticComponent<CommandProps & React.RefAttributes<HTMLDivElement>>;
|
|
3438
|
+
|
|
3439
|
+
/**
|
|
3440
|
+
* ScrollArea 컴포넌트의 props / ScrollArea component props
|
|
3441
|
+
* @typedef {Object} ScrollAreaProps
|
|
3442
|
+
* @property {React.ReactNode} children - 스크롤 영역 내용 / Scroll area content
|
|
3443
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
3444
|
+
* @property {"vertical" | "horizontal" | "both"} [orientation="vertical"] - 스크롤 방향 / Scroll direction
|
|
3445
|
+
* @property {number} [scrollHideDelay=600] - 스크롤바 숨김 지연 시간 (ms) / Scrollbar hide delay (ms)
|
|
3446
|
+
* @property {"auto" | "always" | "scroll" | "hover"} [type="hover"] - 스크롤바 표시 타입 / Scrollbar display type
|
|
3447
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
3448
|
+
*/
|
|
3449
|
+
interface ScrollAreaProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3450
|
+
children: React.ReactNode;
|
|
3451
|
+
className?: string;
|
|
3452
|
+
orientation?: "vertical" | "horizontal" | "both";
|
|
3453
|
+
scrollHideDelay?: number;
|
|
3454
|
+
type?: "auto" | "always" | "scroll" | "hover";
|
|
3455
|
+
}
|
|
3456
|
+
/**
|
|
3457
|
+
* ScrollArea 컴포넌트 / ScrollArea component
|
|
3458
|
+
*
|
|
3459
|
+
* 커스텀 스크롤바를 가진 스크롤 영역 컴포넌트입니다.
|
|
3460
|
+
* 호버 시 스크롤바를 표시하거나 항상 표시할 수 있습니다.
|
|
3461
|
+
*
|
|
3462
|
+
* Scroll area component with custom scrollbar.
|
|
3463
|
+
* Can display scrollbar on hover or always.
|
|
3464
|
+
*
|
|
3465
|
+
* @component
|
|
3466
|
+
* @example
|
|
3467
|
+
* // 기본 사용 / Basic usage
|
|
3468
|
+
* <ScrollArea className="h-64">
|
|
3469
|
+
* <div>긴 내용...</div>
|
|
3470
|
+
* </ScrollArea>
|
|
3471
|
+
*
|
|
3472
|
+
* @example
|
|
3473
|
+
* // 가로 스크롤, 항상 표시 / Horizontal scroll, always visible
|
|
3474
|
+
* <ScrollArea orientation="horizontal" type="always">
|
|
3475
|
+
* <div className="flex space-x-4">...</div>
|
|
3476
|
+
* </ScrollArea>
|
|
3477
|
+
*
|
|
3478
|
+
* @param {ScrollAreaProps} props - ScrollArea 컴포넌트의 props / ScrollArea component props
|
|
3479
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
3480
|
+
* @returns {JSX.Element} ScrollArea 컴포넌트 / ScrollArea component
|
|
3481
|
+
*/
|
|
3482
|
+
declare const ScrollArea: React.ForwardRefExoticComponent<ScrollAreaProps & React.RefAttributes<HTMLDivElement>>;
|
|
3483
|
+
|
|
3484
|
+
/**
|
|
3485
|
+
* ScrollToTop 컴포넌트의 props / ScrollToTop component props
|
|
3486
|
+
* @typedef {Object} ScrollToTopProps
|
|
3487
|
+
* @property {number} [threshold=400] - 표시 임계값 (px, 이 값 이상 스크롤 시 표시) / Display threshold (px, shows when scrolled beyond this value)
|
|
3488
|
+
* @property {boolean} [smooth=true] - 부드러운 스크롤 여부 / Smooth scroll
|
|
3489
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
3490
|
+
* @property {IconName} [icon='arrowUp'] - 아이콘 이름 / Icon name
|
|
3491
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - 버튼 크기 / Button size
|
|
3492
|
+
* @property {"default" | "primary" | "secondary" | "outline" | "ghost"} [variant="default"] - 버튼 스타일 변형 / Button style variant
|
|
3493
|
+
* @property {boolean} [showOnMount=false] - 마운트 시 즉시 표시 여부 / Show immediately on mount
|
|
3494
|
+
* @extends {React.HTMLAttributes<HTMLButtonElement>}
|
|
3495
|
+
*/
|
|
3496
|
+
interface ScrollToTopProps extends React.HTMLAttributes<HTMLButtonElement> {
|
|
3497
|
+
threshold?: number;
|
|
3498
|
+
smooth?: boolean;
|
|
3499
|
+
className?: string;
|
|
3500
|
+
icon?: IconName;
|
|
3501
|
+
size?: "sm" | "md" | "lg";
|
|
3502
|
+
variant?: "default" | "primary" | "secondary" | "outline" | "ghost";
|
|
3503
|
+
showOnMount?: boolean;
|
|
3504
|
+
}
|
|
3505
|
+
/**
|
|
3506
|
+
* ScrollToTop 컴포넌트 / ScrollToTop component
|
|
3507
|
+
*
|
|
3508
|
+
* 페이지 상단으로 스크롤하는 버튼 컴포넌트입니다.
|
|
3509
|
+
* 지정된 임계값 이상 스크롤 시 자동으로 표시됩니다.
|
|
3510
|
+
*
|
|
3511
|
+
* Button component that scrolls to top of page.
|
|
3512
|
+
* Automatically appears when scrolled beyond specified threshold.
|
|
3513
|
+
*
|
|
3514
|
+
* @component
|
|
3515
|
+
* @example
|
|
3516
|
+
* // 기본 사용 / Basic usage
|
|
3517
|
+
* <ScrollToTop />
|
|
3518
|
+
*
|
|
3519
|
+
* @example
|
|
3520
|
+
* // 커스텀 설정 / Custom settings
|
|
3521
|
+
* <ScrollToTop
|
|
3522
|
+
* threshold={500}
|
|
3523
|
+
* variant="primary"
|
|
3524
|
+
* size="lg"
|
|
3525
|
+
* icon="arrowUp"
|
|
3526
|
+
* />
|
|
3527
|
+
*
|
|
3528
|
+
* @param {ScrollToTopProps} props - ScrollToTop 컴포넌트의 props / ScrollToTop component props
|
|
3529
|
+
* @returns {JSX.Element} ScrollToTop 컴포넌트 / ScrollToTop component
|
|
3530
|
+
*/
|
|
3531
|
+
declare const ScrollToTop: ({ className, threshold, smooth, icon, size, variant, showOnMount, ...props }: ScrollToTopProps) => react_jsx_runtime.JSX.Element;
|
|
3532
|
+
|
|
3533
|
+
type Theme = "light" | "dark" | "system";
|
|
3534
|
+
/**
|
|
3535
|
+
* ThemeProvider 컴포넌트의 props / ThemeProvider component props
|
|
3536
|
+
* @typedef {Object} ThemeProviderProps
|
|
3537
|
+
* @property {React.ReactNode} children - 자식 컴포넌트 / Child components
|
|
3538
|
+
* @property {"light" | "dark" | "system"} [defaultTheme="light"] - 기본 테마 / Default theme
|
|
3539
|
+
* @property {string} [storageKey="hua-ui-theme"] - localStorage 키 / localStorage key
|
|
3540
|
+
* @property {boolean} [enableSystem=true] - 시스템 테마 감지 활성화 / Enable system theme detection
|
|
3541
|
+
* @property {boolean} [enableTransition=true] - 테마 전환 애니메이션 활성화 / Enable theme transition animation
|
|
3542
|
+
*/
|
|
3543
|
+
interface ThemeProviderProps {
|
|
3544
|
+
children: React.ReactNode;
|
|
3545
|
+
defaultTheme?: Theme;
|
|
3546
|
+
storageKey?: string;
|
|
3547
|
+
enableSystem?: boolean;
|
|
3548
|
+
enableTransition?: boolean;
|
|
3549
|
+
}
|
|
3550
|
+
/**
|
|
3551
|
+
* ThemeProvider의 상태 타입 / ThemeProvider state type
|
|
3552
|
+
* @typedef {Object} ThemeProviderState
|
|
3553
|
+
* @property {"light" | "dark" | "system"} theme - 현재 테마 / Current theme
|
|
3554
|
+
* @property {(theme: "light" | "dark" | "system") => void} setTheme - 테마 설정 함수 / Theme setter function
|
|
3555
|
+
* @property {"light" | "dark"} resolvedTheme - 실제 적용된 테마 (system일 경우 시스템 테마) / Actually applied theme (system theme when system is selected)
|
|
3556
|
+
* @property {() => void} toggleTheme - 테마 토글 함수 / Theme toggle function
|
|
3557
|
+
*/
|
|
3558
|
+
interface ThemeProviderState {
|
|
3559
|
+
theme: Theme;
|
|
3560
|
+
setTheme: (theme: Theme) => void;
|
|
3561
|
+
resolvedTheme: "light" | "dark";
|
|
3562
|
+
toggleTheme: () => void;
|
|
3563
|
+
}
|
|
3564
|
+
/**
|
|
3565
|
+
* ThemeProvider 컴포넌트 / ThemeProvider component
|
|
3566
|
+
*
|
|
3567
|
+
* 테마 관리를 위한 Context Provider 컴포넌트입니다.
|
|
3568
|
+
* localStorage에 테마를 저장하고, 시스템 테마를 감지할 수 있습니다.
|
|
3569
|
+
* useTheme 훅을 통해 테마 상태에 접근할 수 있습니다.
|
|
3570
|
+
*
|
|
3571
|
+
* Context Provider component for theme management.
|
|
3572
|
+
* Saves theme to localStorage and can detect system theme.
|
|
3573
|
+
* Access theme state through useTheme hook.
|
|
3574
|
+
*
|
|
3575
|
+
* @component
|
|
3576
|
+
* @example
|
|
3577
|
+
* // 기본 사용 / Basic usage
|
|
3578
|
+
* <ThemeProvider>
|
|
3579
|
+
* <App />
|
|
3580
|
+
* </ThemeProvider>
|
|
3581
|
+
*
|
|
3582
|
+
* @example
|
|
3583
|
+
* // 커스텀 설정 / Custom settings
|
|
3584
|
+
* <ThemeProvider
|
|
3585
|
+
* defaultTheme="dark"
|
|
3586
|
+
* storageKey="my-app-theme"
|
|
3587
|
+
* enableSystem={true}
|
|
3588
|
+
* enableTransition={true}
|
|
3589
|
+
* >
|
|
3590
|
+
* <App />
|
|
3591
|
+
* </ThemeProvider>
|
|
3592
|
+
*
|
|
3593
|
+
* @param {ThemeProviderProps} props - ThemeProvider 컴포넌트의 props / ThemeProvider component props
|
|
3594
|
+
* @returns {JSX.Element} ThemeProvider 컴포넌트 / ThemeProvider component
|
|
3595
|
+
*/
|
|
3596
|
+
declare function ThemeProvider({ children, defaultTheme, // system에서 light로 변경
|
|
3597
|
+
storageKey, enableSystem, enableTransition, ...props }: ThemeProviderProps): React.ReactElement;
|
|
3598
|
+
/**
|
|
3599
|
+
* useTheme 훅 / useTheme hook
|
|
3600
|
+
*
|
|
3601
|
+
* ThemeProvider의 테마 상태에 접근하는 훅입니다.
|
|
3602
|
+
* ThemeProvider 내부에서만 사용할 수 있습니다.
|
|
3603
|
+
*
|
|
3604
|
+
* Hook to access ThemeProvider's theme state.
|
|
3605
|
+
* Can only be used inside ThemeProvider.
|
|
3606
|
+
*
|
|
3607
|
+
* @example
|
|
3608
|
+
* const { theme, setTheme, resolvedTheme, toggleTheme } = useTheme()
|
|
3609
|
+
*
|
|
3610
|
+
* @returns {ThemeProviderState} 테마 상태와 함수들 / Theme state and functions
|
|
3611
|
+
* @throws {Error} ThemeProvider 외부에서 사용 시 에러 발생 / Error when used outside ThemeProvider
|
|
3612
|
+
*/
|
|
3613
|
+
declare const useTheme: () => ThemeProviderState;
|
|
3614
|
+
|
|
3615
|
+
/**
|
|
3616
|
+
* ThemeToggle 컴포넌트의 props / ThemeToggle component props
|
|
3617
|
+
* @typedef {Object} ThemeToggleProps
|
|
3618
|
+
* @property {string} [className] - 추가 CSS 클래스 / Additional CSS class
|
|
3619
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - Toggle 크기 / Toggle size
|
|
3620
|
+
* @property {"button" | "icon" | "switch"} [variant="button"] - Toggle 스타일 변형 / Toggle style variant
|
|
3621
|
+
* @property {boolean} [showLabel=false] - 라벨 표시 여부 / Show label
|
|
3622
|
+
* @property {Object} [label] - 커스텀 라벨 텍스트 / Custom label text
|
|
3623
|
+
* @property {string} [label.light="라이트"] - 라이트 모드 라벨 / Light mode label
|
|
3624
|
+
* @property {string} [label.dark="다크"] - 다크 모드 라벨 / Dark mode label
|
|
3625
|
+
* @property {string} [label.system="시스템"] - 시스템 모드 라벨 / System mode label
|
|
3626
|
+
*/
|
|
3627
|
+
interface ThemeToggleProps {
|
|
3628
|
+
className?: string;
|
|
3629
|
+
size?: "sm" | "md" | "lg";
|
|
3630
|
+
variant?: "button" | "icon" | "switch";
|
|
3631
|
+
showLabel?: boolean;
|
|
3632
|
+
label?: {
|
|
3633
|
+
light?: string;
|
|
3634
|
+
dark?: string;
|
|
3635
|
+
system?: string;
|
|
3636
|
+
};
|
|
3637
|
+
}
|
|
3638
|
+
/**
|
|
3639
|
+
* ThemeToggle 컴포넌트 / ThemeToggle component
|
|
3640
|
+
*
|
|
3641
|
+
* 테마를 전환하는 토글 컴포넌트입니다.
|
|
3642
|
+
* ThemeProvider와 함께 사용하며, light/dark/system 테마를 지원합니다.
|
|
3643
|
+
*
|
|
3644
|
+
* Toggle component for switching themes.
|
|
3645
|
+
* Used with ThemeProvider, supports light/dark/system themes.
|
|
3646
|
+
*
|
|
3647
|
+
* @component
|
|
3648
|
+
* @example
|
|
3649
|
+
* // 기본 사용 (버튼 스타일) / Basic usage (button style)
|
|
3650
|
+
* <ThemeToggle />
|
|
3651
|
+
*
|
|
3652
|
+
* @example
|
|
3653
|
+
* // 아이콘만 표시 / Icon only
|
|
3654
|
+
* <ThemeToggle variant="icon" size="lg" />
|
|
3655
|
+
*
|
|
3656
|
+
* @example
|
|
3657
|
+
* // Switch 스타일 / Switch style
|
|
3658
|
+
* <ThemeToggle variant="switch" />
|
|
3659
|
+
*
|
|
3660
|
+
* @example
|
|
3661
|
+
* // 라벨과 함께 / With label
|
|
3662
|
+
* <ThemeToggle
|
|
3663
|
+
* showLabel
|
|
3664
|
+
* label={{ light: "밝게", dark: "어둡게" }}
|
|
3665
|
+
* />
|
|
3666
|
+
*
|
|
3667
|
+
* @param {ThemeToggleProps} props - ThemeToggle 컴포넌트의 props / ThemeToggle component props
|
|
3668
|
+
* @returns {JSX.Element} ThemeToggle 컴포넌트 / ThemeToggle component
|
|
3669
|
+
*/
|
|
3670
|
+
declare function ThemeToggle({ className, size, variant, showLabel, label, ...props }: ThemeToggleProps): react_jsx_runtime.JSX.Element;
|
|
3671
|
+
|
|
3672
|
+
/**
|
|
3673
|
+
* Icon Aliases
|
|
3674
|
+
*
|
|
3675
|
+
* 여러 이름이 같은 아이콘을 가리키도록 하는 alias 시스템
|
|
3676
|
+
* DX 향상을 위해 직관적인 이름들을 지원합니다.
|
|
3677
|
+
*/
|
|
3678
|
+
declare const ICON_ALIASES: Record<string, string>;
|
|
3679
|
+
/**
|
|
3680
|
+
* Resolve icon alias to actual icon name
|
|
3681
|
+
*
|
|
3682
|
+
* @param iconName - 아이콘 이름 또는 별칭 / Icon name or alias
|
|
3683
|
+
* @returns 실제 아이콘 이름 / Actual icon name
|
|
3684
|
+
* @throws {TypeError} iconName이 문자열이 아닌 경우
|
|
3685
|
+
*/
|
|
3686
|
+
declare function resolveIconAlias(iconName: string): string;
|
|
3687
|
+
/**
|
|
3688
|
+
* Get all aliases for an icon name
|
|
3689
|
+
*
|
|
3690
|
+
* @param iconName - 아이콘 이름 / Icon name
|
|
3691
|
+
* @returns 해당 아이콘의 모든 별칭 배열 / Array of all aliases for the icon
|
|
3692
|
+
* @throws {TypeError} iconName이 문자열이 아닌 경우
|
|
3693
|
+
*/
|
|
3694
|
+
declare function getIconAliases(iconName: string): string[];
|
|
3695
|
+
|
|
3696
|
+
/**
|
|
3697
|
+
* HUA UI의 스마트 클래스 병합 유틸리티
|
|
3698
|
+
* clsx와 tailwind-merge를 결합하여 중복 클래스를 자동으로 해결합니다.
|
|
3699
|
+
*
|
|
3700
|
+
* @param inputs - 병합할 클래스 값들
|
|
3701
|
+
* @returns 병합된 클래스 문자열
|
|
3702
|
+
*
|
|
3703
|
+
* @example
|
|
3704
|
+
* ```tsx
|
|
3705
|
+
* merge("px-2 py-1", "px-4") // "py-1 px-4"
|
|
3706
|
+
* merge("text-red-500", "text-blue-500") // "text-blue-500"
|
|
3707
|
+
* merge("bg-white", "dark:bg-slate-900") // "bg-white dark:bg-slate-900"
|
|
3708
|
+
* ```
|
|
3709
|
+
*/
|
|
3710
|
+
declare function merge(...inputs: ClassValue[]): string;
|
|
3711
|
+
/**
|
|
3712
|
+
* 조건부 클래스 병합 유틸리티
|
|
3713
|
+
* 조건에 따라 클래스를 선택적으로 병합합니다.
|
|
3714
|
+
*
|
|
3715
|
+
* @param condition - 클래스를 적용할 조건
|
|
3716
|
+
* @param trueClass - 조건이 true일 때 적용할 클래스
|
|
3717
|
+
* @param falseClass - 조건이 false일 때 적용할 클래스 (선택사항)
|
|
3718
|
+
* @returns 병합된 클래스 문자열
|
|
3719
|
+
*
|
|
3720
|
+
* @example
|
|
3721
|
+
* ```tsx
|
|
3722
|
+
* mergeIf(isActive, "bg-blue-500", "bg-gray-200")
|
|
3723
|
+
* mergeIf(isLoading, "opacity-50 cursor-not-allowed")
|
|
3724
|
+
* ```
|
|
3725
|
+
*/
|
|
3726
|
+
declare function mergeIf(condition: boolean, trueClass: ClassValue, falseClass?: ClassValue): string;
|
|
3727
|
+
/**
|
|
3728
|
+
* 상대 시간 포맷팅 유틸리티
|
|
3729
|
+
*
|
|
3730
|
+
* 날짜를 상대 시간 형식으로 포맷팅합니다 (예: "방금 전", "5분 전", "2시간 전", "3일 전").
|
|
3731
|
+
* 7일 이상 경과한 경우 절대 날짜를 반환합니다.
|
|
3732
|
+
*
|
|
3733
|
+
* Formats a date as relative time (e.g., "방금 전", "5분 전", "2시간 전", "3일 전").
|
|
3734
|
+
* Returns absolute date for dates older than 7 days.
|
|
3735
|
+
*
|
|
3736
|
+
* @param timestamp - 포맷팅할 날짜 (Date 객체 또는 ISO 문자열) / Date to format (Date object or ISO string)
|
|
3737
|
+
* @param locale - 로케일 (기본값: "ko-KR") / Locale (default: "ko-KR")
|
|
3738
|
+
* @returns 포맷팅된 상대 시간 문자열 / Formatted relative time string
|
|
3739
|
+
*
|
|
3740
|
+
* @example
|
|
3741
|
+
* ```tsx
|
|
3742
|
+
* formatRelativeTime(new Date()) // "방금 전"
|
|
3743
|
+
* formatRelativeTime(new Date(Date.now() - 5 * 60000)) // "5분 전"
|
|
3744
|
+
* formatRelativeTime(new Date(Date.now() - 2 * 3600000)) // "2시간 전"
|
|
3745
|
+
* formatRelativeTime(new Date(Date.now() - 3 * 86400000)) // "3일 전"
|
|
3746
|
+
* formatRelativeTime(new Date("2024-01-01")) // "2024. 1. 1." (7일 이상 경과)
|
|
3747
|
+
* ```
|
|
3748
|
+
*/
|
|
3749
|
+
declare function formatRelativeTime(timestamp: Date | string, locale?: string): string;
|
|
3750
|
+
/**
|
|
3751
|
+
* 객체 기반 클래스 병합 유틸리티
|
|
3752
|
+
* 객체의 키-값 쌍을 기반으로 조건부 클래스를 병합합니다.
|
|
3753
|
+
*
|
|
3754
|
+
* @param classMap - 클래스 맵 객체
|
|
3755
|
+
* @returns 병합된 클래스 문자열
|
|
3756
|
+
*
|
|
3757
|
+
* @example
|
|
3758
|
+
* ```tsx
|
|
3759
|
+
* mergeMap({
|
|
3760
|
+
* "bg-blue-500": isPrimary,
|
|
3761
|
+
* "bg-gray-500": !isPrimary,
|
|
3762
|
+
* "text-white": true,
|
|
3763
|
+
* "opacity-50": isDisabled
|
|
3764
|
+
* })
|
|
3765
|
+
* ```
|
|
3766
|
+
*/
|
|
3767
|
+
declare function mergeMap(classMap: Record<string, boolean | undefined | null>): string;
|
|
3768
|
+
declare const cn: typeof merge;
|
|
3769
|
+
|
|
3770
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Action as Act, Action, type ActionButton, ActionToolbar, type ActionToolbarProps, Alert, AlertError, AlertInfo, AlertSuccess, AlertWarning, type AllIconName, Alert as Alt, Avatar, AvatarFallback, AvatarImage, Avatar as Avt, Badge, BottomSheet, Breadcrumb, BreadcrumbItem, type BreadcrumbItemData, type BreadcrumbItemProps, type BreadcrumbProps, Button as Btn, Button, type ButtonProps, Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, ConfirmModal, Container as Cont, Container, ContextMenu, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuSeparator, Card as Crd, Divider, Drawer, DrawerContent, DrawerFooter, DrawerHeader, Dropdown, DropdownGroup, DropdownItem, DropdownLabel, DropdownMenu, DropdownSeparator, EmotionIcon, ErrorIcon, Grid, ICON_ALIASES, Icon as Ic, Icon, type IconConfig, IconName, type IconProps, IconProvider, type IconProviderProps, type IconSet, Link, Link as Lnk, LoadingSpinner as Loading, LoadingIcon, LoadingSpinner, Modal as Mdl, Menu, MenuCompact, MenuHorizontal, MenuItem, MenuLabel, MenuSeparator, MenuVertical, Modal, type ModalProps, NavigationComponent as Navigation, NavigationContent, NavigationItem, NavigationList, Pagination, PaginationMinimal, PaginationOutlined, PaginationWithInfo, Panel, type PhosphorWeight, Popover, PopoverContent, PopoverTrigger, Progress, ProgressError, ProgressGroup, ProgressInfo, ProgressSuccess, ProgressWarning, type ProjectIconName, ScrollArea, ScrollToTop, Skeleton, SkeletonAvatar, SkeletonCard, SkeletonCircle, SkeletonImage, SkeletonList, SkeletonRectangle, SkeletonRounded, SkeletonTable, SkeletonText, SkeletonUserProfile, Stack, StatusIcon, SuccessIcon, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsCards, TabsContent, TabsList, TabsPills, TabsTrigger, TabsUnderline, Table as Tbl, ThemeProvider, ThemeToggle, Tooltip, TooltipDark, TooltipLight, cn, defaultIconConfig, emotionIcons, formatRelativeTime, getDefaultStrokeWidth, getIconAliases, getIconNameForProvider, iconNames, iconProviderMapping, isValidIconName, merge, mergeIf, mergeMap, resolveIconAlias, statusIcons, useIconContext, useTheme };
|