@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
|
@@ -0,0 +1,1801 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { I as IconName } from './icons-DoSGIez_.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* HUA UI 공통 타입 정의
|
|
6
|
+
* 모든 컴포넌트에서 사용하는 표준 타입들을 정의합니다.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* 공통 색상 타입
|
|
11
|
+
* 모든 컴포넌트에서 사용하는 표준 색상 팔레트
|
|
12
|
+
*/
|
|
13
|
+
type Color = "blue" | "purple" | "green" | "orange" | "red" | "indigo" | "pink" | "gray";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* StatCard 컴포넌트의 props / StatCard component props
|
|
17
|
+
* @typedef {Object} StatCardProps
|
|
18
|
+
* @property {string} title - 카드 제목 / Card title
|
|
19
|
+
* @property {string | number | null | undefined} value - 통계 값 / Statistic value
|
|
20
|
+
* @property {string} [description] - 카드 설명 / Card description
|
|
21
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
22
|
+
* @property {Object} [trend] - 추세 정보 / Trend information
|
|
23
|
+
* @property {number} trend.value - 추세 값 / Trend value
|
|
24
|
+
* @property {string} trend.label - 추세 라벨 / Trend label
|
|
25
|
+
* @property {boolean} [trend.positive] - 긍정적 추세 여부 / Positive trend
|
|
26
|
+
* @property {"default" | "gradient" | "outline" | "elevated"} [variant="default"] - 카드 스타일 변형 / Card style variant
|
|
27
|
+
* @property {"blue" | "purple" | "green" | "orange" | "red" | "indigo" | "pink" | "gray"} [color] - 카드 색상 / Card color
|
|
28
|
+
* @property {boolean} [loading] - 로딩 상태 / Loading state
|
|
29
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트 / Empty state component
|
|
30
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
31
|
+
*/
|
|
32
|
+
interface StatCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
33
|
+
title: string;
|
|
34
|
+
value: string | number | null | undefined;
|
|
35
|
+
description?: string;
|
|
36
|
+
icon?: IconName | React.ReactNode;
|
|
37
|
+
trend?: {
|
|
38
|
+
value: number;
|
|
39
|
+
label: string;
|
|
40
|
+
positive?: boolean;
|
|
41
|
+
};
|
|
42
|
+
variant?: "default" | "gradient" | "outline" | "elevated";
|
|
43
|
+
color?: Color;
|
|
44
|
+
loading?: boolean;
|
|
45
|
+
emptyState?: React.ReactNode;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* StatCard 컴포넌트 / StatCard component
|
|
49
|
+
*
|
|
50
|
+
* 통계 정보를 표시하는 카드 컴포넌트입니다.
|
|
51
|
+
* 제목, 값, 설명, 아이콘, 추세 정보를 포함할 수 있습니다.
|
|
52
|
+
*
|
|
53
|
+
* Card component that displays statistic information.
|
|
54
|
+
* Can include title, value, description, icon, and trend information.
|
|
55
|
+
*
|
|
56
|
+
* @component
|
|
57
|
+
* @example
|
|
58
|
+
* // 기본 사용 / Basic usage
|
|
59
|
+
* <StatCard
|
|
60
|
+
* title="총 사용자"
|
|
61
|
+
* value="1,234"
|
|
62
|
+
* description="지난 달 대비"
|
|
63
|
+
* icon="users"
|
|
64
|
+
* />
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* // 추세 정보 포함 / With trend information
|
|
68
|
+
* <StatCard
|
|
69
|
+
* title="매출"
|
|
70
|
+
* value="₩1,000,000"
|
|
71
|
+
* trend={{ value: 12.5, label: "전월 대비", positive: true }}
|
|
72
|
+
* color="green"
|
|
73
|
+
* variant="gradient"
|
|
74
|
+
* />
|
|
75
|
+
*
|
|
76
|
+
* @param {StatCardProps} props - StatCard 컴포넌트의 props / StatCard component props
|
|
77
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
78
|
+
* @returns {JSX.Element} StatCard 컴포넌트 / StatCard component
|
|
79
|
+
*/
|
|
80
|
+
declare const StatCard: React.ForwardRefExoticComponent<StatCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* QuickActionCard 컴포넌트의 props / QuickActionCard component props
|
|
84
|
+
* @typedef {Object} QuickActionCardProps
|
|
85
|
+
* @property {string} title - 카드 제목 / Card title
|
|
86
|
+
* @property {string} [description] - 카드 설명 / Card description
|
|
87
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
88
|
+
* @property {string} [href] - 링크 URL / Link URL
|
|
89
|
+
* @property {() => void} [onClick] - 클릭 핸들러 / Click handler
|
|
90
|
+
* @property {"gradient" | "outline" | "solid"} [variant="gradient"] - 카드 스타일 변형 / Card style variant
|
|
91
|
+
* @property {"blue" | "purple" | "green" | "orange" | "red" | "indigo" | "pink" | "gray"} [color="blue"] - 카드 색상 / Card color
|
|
92
|
+
* @property {boolean} [loading] - 로딩 상태 / Loading state
|
|
93
|
+
* @extends {React.HTMLAttributes<HTMLAnchorElement | HTMLButtonElement>}
|
|
94
|
+
*/
|
|
95
|
+
interface QuickActionCardProps extends React.HTMLAttributes<HTMLAnchorElement | HTMLButtonElement> {
|
|
96
|
+
title: string;
|
|
97
|
+
description?: string;
|
|
98
|
+
icon?: IconName | React.ReactNode;
|
|
99
|
+
href?: string;
|
|
100
|
+
onClick?: () => void;
|
|
101
|
+
variant?: "gradient" | "outline" | "solid";
|
|
102
|
+
color?: Color;
|
|
103
|
+
loading?: boolean;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* QuickActionCard 컴포넌트 / QuickActionCard component
|
|
107
|
+
*
|
|
108
|
+
* 빠른 액션을 수행하는 카드 컴포넌트입니다.
|
|
109
|
+
* 링크나 버튼으로 동작하며, 클릭 가능한 액션 카드로 사용됩니다.
|
|
110
|
+
*
|
|
111
|
+
* Card component for quick actions.
|
|
112
|
+
* Works as a link or button, used as a clickable action card.
|
|
113
|
+
*
|
|
114
|
+
* @component
|
|
115
|
+
* @example
|
|
116
|
+
* // 링크 카드 / Link card
|
|
117
|
+
* <QuickActionCard
|
|
118
|
+
* title="새 주문 생성"
|
|
119
|
+
* description="주문을 빠르게 생성하세요"
|
|
120
|
+
* icon="plus"
|
|
121
|
+
* href="/orders/new"
|
|
122
|
+
* color="blue"
|
|
123
|
+
* />
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* // 버튼 카드 / Button card
|
|
127
|
+
* <QuickActionCard
|
|
128
|
+
* title="리포트 다운로드"
|
|
129
|
+
* description="최신 리포트를 다운로드하세요"
|
|
130
|
+
* icon="download"
|
|
131
|
+
* onClick={handleDownload}
|
|
132
|
+
* variant="outline"
|
|
133
|
+
* color="green"
|
|
134
|
+
* />
|
|
135
|
+
*
|
|
136
|
+
* @param {QuickActionCardProps} props - QuickActionCard 컴포넌트의 props / QuickActionCard component props
|
|
137
|
+
* @param {React.Ref<HTMLAnchorElement | HTMLButtonElement>} ref - anchor 또는 button 요소 ref / anchor or button element ref
|
|
138
|
+
* @returns {JSX.Element} QuickActionCard 컴포넌트 / QuickActionCard component
|
|
139
|
+
*/
|
|
140
|
+
declare const QuickActionCard: React.ForwardRefExoticComponent<QuickActionCardProps & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement>>;
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* DashboardGrid 컴포넌트의 props
|
|
144
|
+
* @typedef {Object} DashboardGridProps
|
|
145
|
+
* @property {1 | 2 | 3 | 4 | 5 | 6} [columns=4] - 그리드 컬럼 수
|
|
146
|
+
* @property {"sm" | "md" | "lg" | "xl"} [gap="md"] - 그리드 간격
|
|
147
|
+
* @property {boolean} [responsive=true] - 반응형 여부
|
|
148
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
149
|
+
*/
|
|
150
|
+
interface DashboardGridProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
151
|
+
columns?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
152
|
+
gap?: "sm" | "md" | "lg" | "xl";
|
|
153
|
+
responsive?: boolean;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* DashboardGrid 컴포넌트
|
|
157
|
+
*
|
|
158
|
+
* 대시보드 그리드 레이아웃을 제공하는 컴포넌트입니다.
|
|
159
|
+
* 반응형 그리드를 지원하며, 다양한 컬럼 수와 간격을 설정할 수 있습니다.
|
|
160
|
+
*
|
|
161
|
+
* Dashboard grid layout component.
|
|
162
|
+
* Supports responsive grid with configurable column count and gap sizes.
|
|
163
|
+
*
|
|
164
|
+
* @component
|
|
165
|
+
* @example
|
|
166
|
+
* // 기본 사용 / Basic usage
|
|
167
|
+
* <DashboardGrid columns={4}>
|
|
168
|
+
* <StatCard title="항목 1" value="100" />
|
|
169
|
+
* <StatCard title="항목 2" value="200" />
|
|
170
|
+
* </DashboardGrid>
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* // 반응형 그리드 / Responsive grid
|
|
174
|
+
* <DashboardGrid columns={3} gap="lg" responsive>
|
|
175
|
+
* <MetricCard title="메트릭 1" value="1,000" />
|
|
176
|
+
* <MetricCard title="메트릭 2" value="2,000" />
|
|
177
|
+
* </DashboardGrid>
|
|
178
|
+
*
|
|
179
|
+
* @param {DashboardGridProps} props - DashboardGrid 컴포넌트의 props / DashboardGrid component props
|
|
180
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
181
|
+
* @returns {JSX.Element} DashboardGrid 컴포넌트 / DashboardGrid component
|
|
182
|
+
*/
|
|
183
|
+
declare const DashboardGrid: React.ForwardRefExoticComponent<DashboardGridProps & React.RefAttributes<HTMLDivElement>>;
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* ActivityItem 인터페이스 / ActivityItem interface
|
|
187
|
+
* @typedef {Object} ActivityItem
|
|
188
|
+
* @property {string} id - 활동 항목 고유 ID / Activity item unique ID
|
|
189
|
+
* @property {string} title - 활동 제목 / Activity title
|
|
190
|
+
* @property {string} [description] - 활동 설명 / Activity description
|
|
191
|
+
* @property {Date | string} timestamp - 활동 타임스탬프 / Activity timestamp
|
|
192
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
193
|
+
* @property {string | React.ReactNode} [badge] - 배지 / Badge
|
|
194
|
+
* @property {() => void} [onClick] - 클릭 핸들러 / Click handler
|
|
195
|
+
* @property {Record<string, unknown>} [metadata] - 추가 메타데이터 / Additional metadata
|
|
196
|
+
*/
|
|
197
|
+
interface ActivityItem {
|
|
198
|
+
id: string;
|
|
199
|
+
title: string;
|
|
200
|
+
description?: string;
|
|
201
|
+
timestamp: Date | string;
|
|
202
|
+
icon?: IconName | React.ReactNode;
|
|
203
|
+
badge?: string | React.ReactNode;
|
|
204
|
+
onClick?: () => void;
|
|
205
|
+
metadata?: Record<string, unknown>;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* ActivityFeed 컴포넌트의 props / ActivityFeed component props
|
|
209
|
+
* @typedef {Object} ActivityFeedProps
|
|
210
|
+
* @property {string} [title] - 피드 제목 / Feed title
|
|
211
|
+
* @property {ActivityItem[]} items - 활동 항목 배열 / Activity items array
|
|
212
|
+
* @property {string} [emptyMessage="활동 내역이 없습니다."] - 빈 상태 메시지 / Empty state message
|
|
213
|
+
* @property {boolean} [showHeader=true] - 헤더 표시 여부 / Show header
|
|
214
|
+
* @property {number} [maxItems] - 최대 표시 항목 수 / Maximum items to display
|
|
215
|
+
* @property {() => void} [onViewAll] - 전체 보기 핸들러 / View all handler
|
|
216
|
+
* @property {string} [viewAllLabel="전체 보기"] - 전체 보기 라벨 / View all label
|
|
217
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트 / Empty state component
|
|
218
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
219
|
+
*/
|
|
220
|
+
interface ActivityFeedProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
221
|
+
title?: string;
|
|
222
|
+
items: ActivityItem[];
|
|
223
|
+
emptyMessage?: string;
|
|
224
|
+
showHeader?: boolean;
|
|
225
|
+
maxItems?: number;
|
|
226
|
+
onViewAll?: () => void;
|
|
227
|
+
viewAllLabel?: string;
|
|
228
|
+
emptyState?: React.ReactNode;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* ActivityFeed 컴포넌트 / ActivityFeed component
|
|
232
|
+
*
|
|
233
|
+
* 활동 내역을 표시하는 피드 컴포넌트입니다.
|
|
234
|
+
* 타임스탬프를 상대 시간으로 표시하며, 최대 항목 수 제한을 지원합니다.
|
|
235
|
+
*
|
|
236
|
+
* Feed component that displays activity history.
|
|
237
|
+
* Shows timestamps as relative time and supports maximum items limit.
|
|
238
|
+
*
|
|
239
|
+
* @component
|
|
240
|
+
* @example
|
|
241
|
+
* // 기본 사용 / Basic usage
|
|
242
|
+
* <ActivityFeed
|
|
243
|
+
* title="최근 활동"
|
|
244
|
+
* items={[
|
|
245
|
+
* {
|
|
246
|
+
* id: "1",
|
|
247
|
+
* title: "새 주문 생성",
|
|
248
|
+
* description: "주문 #1234",
|
|
249
|
+
* timestamp: new Date(),
|
|
250
|
+
* icon: "shoppingCart"
|
|
251
|
+
* }
|
|
252
|
+
* ]}
|
|
253
|
+
* />
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* // 최대 항목 수 제한 / Maximum items limit
|
|
257
|
+
* <ActivityFeed
|
|
258
|
+
* title="활동 내역"
|
|
259
|
+
* items={activities}
|
|
260
|
+
* maxItems={10}
|
|
261
|
+
* onViewAll={() => navigate("/activities")}
|
|
262
|
+
* />
|
|
263
|
+
*
|
|
264
|
+
* @param {ActivityFeedProps} props - ActivityFeed 컴포넌트의 props / ActivityFeed component props
|
|
265
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
266
|
+
* @returns {JSX.Element} ActivityFeed 컴포넌트 / ActivityFeed component
|
|
267
|
+
*/
|
|
268
|
+
declare const ActivityFeed: React.ForwardRefExoticComponent<ActivityFeedProps & React.RefAttributes<HTMLDivElement>>;
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* 멤버십 등급 인터페이스
|
|
272
|
+
* @typedef {Object} MembershipTier
|
|
273
|
+
* @property {"basic" | "pro" | "premium" | "admin"} tier - 등급
|
|
274
|
+
* @property {string} label - 등급 라벨
|
|
275
|
+
*/
|
|
276
|
+
interface MembershipTier {
|
|
277
|
+
tier: "basic" | "pro" | "premium" | "admin";
|
|
278
|
+
label: string;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* ProfileCard 컴포넌트의 props / ProfileCard component props
|
|
282
|
+
* @typedef {Object} ProfileCardProps
|
|
283
|
+
* @property {string} name - 사용자 이름 / User name
|
|
284
|
+
* @property {string} [email] - 이메일 / Email
|
|
285
|
+
* @property {string} [avatar] - 아바타 이미지 URL / Avatar image URL
|
|
286
|
+
* @property {string} [avatarAlt] - 아바타 대체 텍스트 / Avatar alt text
|
|
287
|
+
* @property {string} [greeting] - 인사말 / Greeting
|
|
288
|
+
* @property {Date | string} [memberSince] - 가입일 / Member since date
|
|
289
|
+
* @property {MembershipTier["tier"]} [membershipTier] - 멤버십 등급 / Membership tier
|
|
290
|
+
* @property {string} [membershipLabel] - 멤버십 라벨 / Membership label
|
|
291
|
+
* @property {() => void} [onSettingsClick] - 설정 클릭 핸들러 / Settings click handler
|
|
292
|
+
* @property {string} [settingsHref] - 설정 링크 URL / Settings link URL
|
|
293
|
+
* @property {"default" | "gradient" | "minimal"} [variant="default"] - 스타일 변형 / Style variant
|
|
294
|
+
* @property {boolean} [showAvatar=true] - 아바타 표시 여부 / Show avatar
|
|
295
|
+
* @property {boolean} [showMembership=true] - 멤버십 표시 여부 / Show membership
|
|
296
|
+
* @property {boolean} [showSettings=true] - 설정 버튼 표시 여부 / Show settings button
|
|
297
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
298
|
+
*/
|
|
299
|
+
interface ProfileCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
300
|
+
name: string;
|
|
301
|
+
email?: string;
|
|
302
|
+
avatar?: string;
|
|
303
|
+
avatarAlt?: string;
|
|
304
|
+
greeting?: string;
|
|
305
|
+
memberSince?: Date | string;
|
|
306
|
+
membershipTier?: MembershipTier["tier"];
|
|
307
|
+
membershipLabel?: string;
|
|
308
|
+
onSettingsClick?: () => void;
|
|
309
|
+
settingsHref?: string;
|
|
310
|
+
variant?: "default" | "gradient" | "minimal";
|
|
311
|
+
showAvatar?: boolean;
|
|
312
|
+
showMembership?: boolean;
|
|
313
|
+
showSettings?: boolean;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* ProfileCard 컴포넌트
|
|
317
|
+
*
|
|
318
|
+
* 사용자 프로필 정보를 표시하는 카드 컴포넌트입니다.
|
|
319
|
+
* 아바타, 이름, 이메일, 멤버십 등급 등을 표시할 수 있습니다.
|
|
320
|
+
*
|
|
321
|
+
* Card component that displays user profile information.
|
|
322
|
+
* Can show avatar, name, email, membership tier, and more.
|
|
323
|
+
*
|
|
324
|
+
* @component
|
|
325
|
+
* @example
|
|
326
|
+
* // 기본 사용 / Basic usage
|
|
327
|
+
* <ProfileCard
|
|
328
|
+
* name="홍길동"
|
|
329
|
+
* email="hong@example.com"
|
|
330
|
+
* avatar="/avatar.jpg"
|
|
331
|
+
* membershipTier="premium"
|
|
332
|
+
* memberSince={new Date("2024-01-01")}
|
|
333
|
+
* />
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* // 그라디언트 스타일 / Gradient style
|
|
337
|
+
* <ProfileCard
|
|
338
|
+
* name="김철수"
|
|
339
|
+
* greeting="안녕하세요"
|
|
340
|
+
* variant="gradient"
|
|
341
|
+
* membershipTier="pro"
|
|
342
|
+
* onSettingsClick={() => navigate("/settings")}
|
|
343
|
+
* />
|
|
344
|
+
*
|
|
345
|
+
* @param {ProfileCardProps} props - ProfileCard 컴포넌트의 props / ProfileCard component props
|
|
346
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
347
|
+
* @returns {JSX.Element} ProfileCard 컴포넌트 / ProfileCard component
|
|
348
|
+
*/
|
|
349
|
+
declare const ProfileCard: React.ForwardRefExoticComponent<ProfileCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* MembershipBadge 컴포넌트의 props / MembershipBadge component props
|
|
353
|
+
* @typedef {Object} MembershipBadgeProps
|
|
354
|
+
* @property {"basic" | "pro" | "premium" | "admin"} tier - 멤버십 등급 / Membership tier
|
|
355
|
+
* @property {string} [label] - 커스텀 라벨 (기본값: 등급별 라벨) / Custom label (default: tier-specific label)
|
|
356
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - 배지 크기 / Badge size
|
|
357
|
+
* @property {boolean} [showIcon=true] - 아이콘 표시 여부 / Show icon
|
|
358
|
+
* @extends {React.HTMLAttributes<HTMLSpanElement>}
|
|
359
|
+
*/
|
|
360
|
+
interface MembershipBadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
361
|
+
tier: "basic" | "pro" | "premium" | "admin";
|
|
362
|
+
label?: string;
|
|
363
|
+
size?: "sm" | "md" | "lg";
|
|
364
|
+
showIcon?: boolean;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* MembershipBadge 컴포넌트
|
|
368
|
+
*
|
|
369
|
+
* 멤버십 등급을 표시하는 배지 컴포넌트입니다.
|
|
370
|
+
* 등급별로 다른 그라디언트 색상과 아이콘을 제공합니다.
|
|
371
|
+
*
|
|
372
|
+
* Badge component that displays membership tier.
|
|
373
|
+
* Provides different gradient colors and icons for each tier.
|
|
374
|
+
*
|
|
375
|
+
* @component
|
|
376
|
+
* @example
|
|
377
|
+
* // 기본 사용 / Basic usage
|
|
378
|
+
* <MembershipBadge tier="premium" />
|
|
379
|
+
*
|
|
380
|
+
* @example
|
|
381
|
+
* // 커스텀 라벨과 크기 / Custom label and size
|
|
382
|
+
* <MembershipBadge
|
|
383
|
+
* tier="pro"
|
|
384
|
+
* label="프로 플랜"
|
|
385
|
+
* size="lg"
|
|
386
|
+
* showIcon={false}
|
|
387
|
+
* />
|
|
388
|
+
*
|
|
389
|
+
* @param {MembershipBadgeProps} props - MembershipBadge 컴포넌트의 props / MembershipBadge component props
|
|
390
|
+
* @param {React.Ref<HTMLSpanElement>} ref - span 요소 ref / span element ref
|
|
391
|
+
* @returns {JSX.Element} MembershipBadge 컴포넌트 / MembershipBadge component
|
|
392
|
+
*/
|
|
393
|
+
declare const MembershipBadge: React.ForwardRefExoticComponent<MembershipBadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* MiniBarChart 컴포넌트의 props
|
|
397
|
+
* @typedef {Object} MiniBarChartProps
|
|
398
|
+
* @property {number[]} data - 차트 데이터 배열
|
|
399
|
+
* @property {string[]} [labels] - 라벨 배열
|
|
400
|
+
* @property {number} [maxValue] - 최대값 (자동 계산 시 생략)
|
|
401
|
+
* @property {number} [height=160] - 차트 높이 (px)
|
|
402
|
+
* @property {boolean} [showTooltip=true] - 툴팁 표시 여부
|
|
403
|
+
* @property {boolean} [showStats=true] - 통계 정보 표시 여부
|
|
404
|
+
* @property {"blue" | "purple" | "green" | "orange" | "red" | "indigo" | "pink" | "gray"} [color="blue"] - 색상
|
|
405
|
+
* @property {boolean} [highlightToday=true] - 오늘 항목 강조 여부
|
|
406
|
+
* @property {number} [todayIndex] - 오늘 인덱스 (기본값: 마지막 항목)
|
|
407
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
408
|
+
*/
|
|
409
|
+
interface MiniBarChartProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
410
|
+
data: number[];
|
|
411
|
+
labels?: string[];
|
|
412
|
+
maxValue?: number;
|
|
413
|
+
height?: number;
|
|
414
|
+
showTooltip?: boolean;
|
|
415
|
+
showStats?: boolean;
|
|
416
|
+
color?: Color;
|
|
417
|
+
highlightToday?: boolean;
|
|
418
|
+
todayIndex?: number;
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* MiniBarChart 컴포넌트
|
|
422
|
+
*
|
|
423
|
+
* 작은 막대 그래프 차트 컴포넌트입니다.
|
|
424
|
+
* 간단한 데이터 시각화에 적합하며, 오늘 항목 강조 기능을 제공합니다.
|
|
425
|
+
*
|
|
426
|
+
* Small bar chart component for simple data visualization.
|
|
427
|
+
* Suitable for compact displays with today's item highlight feature.
|
|
428
|
+
*
|
|
429
|
+
* @component
|
|
430
|
+
* @example
|
|
431
|
+
* // 기본 사용 / Basic usage
|
|
432
|
+
* <MiniBarChart
|
|
433
|
+
* data={[10, 20, 15, 30, 25, 40, 35]}
|
|
434
|
+
* labels={["월", "화", "수", "목", "금", "토", "일"]}
|
|
435
|
+
* />
|
|
436
|
+
*
|
|
437
|
+
* @example
|
|
438
|
+
* // 커스텀 색상과 통계 / Custom color and stats
|
|
439
|
+
* <MiniBarChart
|
|
440
|
+
* data={dailyData}
|
|
441
|
+
* color="purple"
|
|
442
|
+
* showStats={true}
|
|
443
|
+
* highlightToday={true}
|
|
444
|
+
* todayIndex={6}
|
|
445
|
+
* />
|
|
446
|
+
*
|
|
447
|
+
* @param {MiniBarChartProps} props - MiniBarChart 컴포넌트의 props / MiniBarChart component props
|
|
448
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
449
|
+
* @returns {JSX.Element} MiniBarChart 컴포넌트 / MiniBarChart component
|
|
450
|
+
*/
|
|
451
|
+
declare const MiniBarChart: React.ForwardRefExoticComponent<MiniBarChartProps & React.RefAttributes<HTMLDivElement>>;
|
|
452
|
+
|
|
453
|
+
/**
|
|
454
|
+
* SummaryCard 컴포넌트의 props
|
|
455
|
+
* @typedef {Object} SummaryCardProps
|
|
456
|
+
* @property {string} title - 카드 제목
|
|
457
|
+
* @property {string | number} value - 요약 값
|
|
458
|
+
* @property {string} [subtitle] - 부제목
|
|
459
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘
|
|
460
|
+
* @property {"blue" | "purple" | "green" | "orange" | "red" | "indigo" | "pink" | "gray"} [color] - 카드 색상
|
|
461
|
+
* @property {"default" | "gradient" | "outline"} [variant="default"] - 카드 스타일 변형
|
|
462
|
+
* @property {string} [href] - 링크 URL
|
|
463
|
+
* @property {() => void} [onClick] - 클릭 핸들러
|
|
464
|
+
* @property {boolean} [loading] - 로딩 상태
|
|
465
|
+
* @property {string | React.ReactNode} [badge] - 배지
|
|
466
|
+
* @property {React.ReactNode} [footer] - 푸터 콘텐츠
|
|
467
|
+
* @property {boolean} [showAction] - 액션 버튼 표시 여부
|
|
468
|
+
* @property {string} [actionLabel] - 액션 버튼 라벨
|
|
469
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
470
|
+
*/
|
|
471
|
+
interface SummaryCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
472
|
+
title: string;
|
|
473
|
+
value: string | number;
|
|
474
|
+
subtitle?: string;
|
|
475
|
+
icon?: IconName | React.ReactNode;
|
|
476
|
+
color?: Color;
|
|
477
|
+
variant?: "default" | "gradient" | "outline";
|
|
478
|
+
href?: string;
|
|
479
|
+
onClick?: () => void;
|
|
480
|
+
loading?: boolean;
|
|
481
|
+
badge?: string | React.ReactNode;
|
|
482
|
+
footer?: React.ReactNode;
|
|
483
|
+
showAction?: boolean;
|
|
484
|
+
actionLabel?: string;
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* SummaryCard 컴포넌트 / SummaryCard component
|
|
488
|
+
*
|
|
489
|
+
* 요약 정보를 표시하는 카드 컴포넌트입니다.
|
|
490
|
+
* 제목, 값, 부제목, 아이콘을 포함하며, 클릭 가능한 링크나 액션 버튼을 지원합니다.
|
|
491
|
+
*
|
|
492
|
+
* Card component that displays summary information.
|
|
493
|
+
* Includes title, value, subtitle, icon, and supports clickable links or action buttons.
|
|
494
|
+
*
|
|
495
|
+
* @component
|
|
496
|
+
* @example
|
|
497
|
+
* // 기본 사용 / Basic usage
|
|
498
|
+
* <SummaryCard
|
|
499
|
+
* title="총 매출"
|
|
500
|
+
* value="₩10,000,000"
|
|
501
|
+
* subtitle="이번 달"
|
|
502
|
+
* icon="dollarSign"
|
|
503
|
+
* />
|
|
504
|
+
*
|
|
505
|
+
* @example
|
|
506
|
+
* // 클릭 가능한 카드 / Clickable card
|
|
507
|
+
* <SummaryCard
|
|
508
|
+
* title="주문"
|
|
509
|
+
* value="1,234"
|
|
510
|
+
* href="/orders"
|
|
511
|
+
* showAction
|
|
512
|
+
* actionLabel="자세히 보기"
|
|
513
|
+
* color="blue"
|
|
514
|
+
* variant="gradient"
|
|
515
|
+
* />
|
|
516
|
+
*
|
|
517
|
+
* @param {SummaryCardProps} props - SummaryCard 컴포넌트의 props / SummaryCard component props
|
|
518
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
519
|
+
* @returns {JSX.Element} SummaryCard 컴포넌트 / SummaryCard component
|
|
520
|
+
*/
|
|
521
|
+
declare const SummaryCard: React.ForwardRefExoticComponent<SummaryCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* NotificationItem 인터페이스
|
|
525
|
+
* @typedef {Object} NotificationItem
|
|
526
|
+
* @property {string} id - 알림 고유 ID
|
|
527
|
+
* @property {string} title - 알림 제목
|
|
528
|
+
* @property {string} message - 알림 메시지
|
|
529
|
+
* @property {Date | string} timestamp - 알림 타임스탬프
|
|
530
|
+
* @property {"info" | "warning" | "error" | "success"} [type] - 알림 타입
|
|
531
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘
|
|
532
|
+
* @property {() => void} [onClick] - 클릭 핸들러
|
|
533
|
+
* @property {string} [href] - 링크 URL
|
|
534
|
+
*/
|
|
535
|
+
interface NotificationItem {
|
|
536
|
+
id: string;
|
|
537
|
+
title: string;
|
|
538
|
+
message: string;
|
|
539
|
+
timestamp: Date | string;
|
|
540
|
+
type?: "info" | "warning" | "error" | "success";
|
|
541
|
+
icon?: IconName | React.ReactNode;
|
|
542
|
+
onClick?: () => void;
|
|
543
|
+
href?: string;
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* NotificationCard 컴포넌트의 props / NotificationCard component props
|
|
547
|
+
* @typedef {Object} NotificationCardProps
|
|
548
|
+
* @property {string} [title="알림 및 공지"] - 카드 제목 / Card title
|
|
549
|
+
* @property {NotificationItem[]} items - 알림 항목 배열 / Notification items array
|
|
550
|
+
* @property {string} [emptyMessage="알림이 없습니다."] - 빈 상태 메시지 / Empty state message
|
|
551
|
+
* @property {number} [maxItems] - 최대 표시 항목 수 / Maximum items to display
|
|
552
|
+
* @property {() => void} [onViewAll] - 전체 보기 핸들러 / View all handler
|
|
553
|
+
* @property {string} [viewAllLabel="모든 알림 보기"] - 전체 보기 라벨 / View all label
|
|
554
|
+
* @property {boolean} [showHeader=true] - 헤더 표시 여부 / Show header
|
|
555
|
+
* @property {boolean} [showCount=true] - 개수 표시 여부 / Show count
|
|
556
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트 / Empty state component
|
|
557
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
558
|
+
*/
|
|
559
|
+
interface NotificationCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
560
|
+
title?: string;
|
|
561
|
+
items: NotificationItem[];
|
|
562
|
+
emptyMessage?: string;
|
|
563
|
+
maxItems?: number;
|
|
564
|
+
onViewAll?: () => void;
|
|
565
|
+
viewAllLabel?: string;
|
|
566
|
+
showHeader?: boolean;
|
|
567
|
+
showCount?: boolean;
|
|
568
|
+
emptyState?: React.ReactNode;
|
|
569
|
+
}
|
|
570
|
+
/**
|
|
571
|
+
* NotificationCard 컴포넌트 / NotificationCard component
|
|
572
|
+
*
|
|
573
|
+
* 알림 목록을 표시하는 카드 컴포넌트입니다.
|
|
574
|
+
* 여러 알림 항목을 표시하며, 타입별로 다른 스타일을 적용할 수 있습니다.
|
|
575
|
+
*
|
|
576
|
+
* Card component that displays a list of notifications.
|
|
577
|
+
* Shows multiple notification items and can apply different styles by type.
|
|
578
|
+
*
|
|
579
|
+
* @component
|
|
580
|
+
* @example
|
|
581
|
+
* // 기본 사용 / Basic usage
|
|
582
|
+
* <NotificationCard
|
|
583
|
+
* items={[
|
|
584
|
+
* {
|
|
585
|
+
* id: "1",
|
|
586
|
+
* title: "새 주문",
|
|
587
|
+
* message: "주문 #1234가 생성되었습니다",
|
|
588
|
+
* timestamp: new Date(),
|
|
589
|
+
* type: "success"
|
|
590
|
+
* }
|
|
591
|
+
* ]}
|
|
592
|
+
* />
|
|
593
|
+
*
|
|
594
|
+
* @example
|
|
595
|
+
* // 최대 항목 수 제한 / Maximum items limit
|
|
596
|
+
* <NotificationCard
|
|
597
|
+
* title="최근 알림"
|
|
598
|
+
* items={notifications}
|
|
599
|
+
* maxItems={5}
|
|
600
|
+
* onViewAll={() => navigate("/notifications")}
|
|
601
|
+
* showCount
|
|
602
|
+
* />
|
|
603
|
+
*
|
|
604
|
+
* @param {NotificationCardProps} props - NotificationCard 컴포넌트의 props / NotificationCard component props
|
|
605
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
606
|
+
* @returns {JSX.Element} NotificationCard 컴포넌트 / NotificationCard component
|
|
607
|
+
*/
|
|
608
|
+
declare const NotificationCard: React.ForwardRefExoticComponent<NotificationCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
609
|
+
|
|
610
|
+
/**
|
|
611
|
+
* MetricCard 컴포넌트의 props / MetricCard component props
|
|
612
|
+
* @typedef {Object} MetricCardProps
|
|
613
|
+
* @property {string} title - 카드 제목 / Card title
|
|
614
|
+
* @property {string | number} value - 메트릭 값 / Metric value
|
|
615
|
+
* @property {string} [description] - 카드 설명 / Card description
|
|
616
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
617
|
+
* @property {Object} [trend] - 추세 정보 / Trend information
|
|
618
|
+
* @property {number} trend.value - 추세 값 / Trend value
|
|
619
|
+
* @property {string} trend.label - 추세 라벨 / Trend label
|
|
620
|
+
* @property {boolean} [trend.positive] - 긍정적 추세 여부 / Positive trend
|
|
621
|
+
* @property {number[]} [chartData] - 차트 데이터 / Chart data
|
|
622
|
+
* @property {string[]} [chartLabels] - 차트 라벨 / Chart labels
|
|
623
|
+
* @property {"default" | "gradient" | "outline" | "elevated"} [variant="default"] - 카드 스타일 변형 / Card style variant
|
|
624
|
+
* @property {"blue" | "purple" | "green" | "orange" | "red" | "indigo" | "pink" | "gray"} [color] - 카드 색상 / Card color
|
|
625
|
+
* @property {boolean} [loading] - 로딩 상태 / Loading state
|
|
626
|
+
* @property {boolean} [showChart] - 차트 표시 여부 / Show chart
|
|
627
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
628
|
+
*/
|
|
629
|
+
interface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
630
|
+
title: string;
|
|
631
|
+
value: string | number;
|
|
632
|
+
description?: string;
|
|
633
|
+
icon?: IconName | React.ReactNode;
|
|
634
|
+
trend?: {
|
|
635
|
+
value: number;
|
|
636
|
+
label: string;
|
|
637
|
+
positive?: boolean;
|
|
638
|
+
};
|
|
639
|
+
chartData?: number[];
|
|
640
|
+
chartLabels?: string[];
|
|
641
|
+
variant?: "default" | "gradient" | "outline" | "elevated";
|
|
642
|
+
color?: Color;
|
|
643
|
+
loading?: boolean;
|
|
644
|
+
showChart?: boolean;
|
|
645
|
+
}
|
|
646
|
+
/**
|
|
647
|
+
* MetricCard 컴포넌트 / MetricCard component
|
|
648
|
+
*
|
|
649
|
+
* 메트릭 정보를 표시하는 카드 컴포넌트입니다.
|
|
650
|
+
* StatCard와 유사하지만 차트 데이터를 포함할 수 있습니다.
|
|
651
|
+
*
|
|
652
|
+
* Card component that displays metric information.
|
|
653
|
+
* Similar to StatCard but can include chart data.
|
|
654
|
+
*
|
|
655
|
+
* @component
|
|
656
|
+
* @example
|
|
657
|
+
* // 기본 사용 / Basic usage
|
|
658
|
+
* <MetricCard
|
|
659
|
+
* title="페이지뷰"
|
|
660
|
+
* value="10,234"
|
|
661
|
+
* description="오늘"
|
|
662
|
+
* icon="eye"
|
|
663
|
+
* />
|
|
664
|
+
*
|
|
665
|
+
* @example
|
|
666
|
+
* // 차트 포함 / With chart
|
|
667
|
+
* <MetricCard
|
|
668
|
+
* title="방문자"
|
|
669
|
+
* value="5,678"
|
|
670
|
+
* chartData={[100, 200, 150, 300, 250]}
|
|
671
|
+
* chartLabels={["월", "화", "수", "목", "금"]}
|
|
672
|
+
* showChart
|
|
673
|
+
* color="blue"
|
|
674
|
+
* />
|
|
675
|
+
*
|
|
676
|
+
* @param {MetricCardProps} props - MetricCard 컴포넌트의 props / MetricCard component props
|
|
677
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
678
|
+
* @returns {JSX.Element} MetricCard 컴포넌트 / MetricCard component
|
|
679
|
+
*/
|
|
680
|
+
declare const MetricCard: React.ForwardRefExoticComponent<MetricCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
* ProgressCard 컴포넌트의 props / ProgressCard component props
|
|
684
|
+
* @typedef {Object} ProgressCardProps
|
|
685
|
+
* @property {string} title - 카드 제목 / Card title
|
|
686
|
+
* @property {number} current - 현재 값 / Current value
|
|
687
|
+
* @property {number} total - 전체 값 / Total value
|
|
688
|
+
* @property {string} [unit] - 단위 / Unit
|
|
689
|
+
* @property {string} [description] - 카드 설명 / Card description
|
|
690
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
691
|
+
* @property {"blue" | "purple" | "green" | "orange" | "red" | "indigo" | "pink" | "gray"} [color] - 카드 색상 / Card color
|
|
692
|
+
* @property {"default" | "gradient" | "outline" | "elevated"} [variant="default"] - 카드 스타일 변형 / Card style variant
|
|
693
|
+
* @property {boolean} [showPercentage] - 퍼센트 표시 여부 / Show percentage
|
|
694
|
+
* @property {boolean} [showLabel] - 라벨 표시 여부 / Show label
|
|
695
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - 카드 크기 / Card size
|
|
696
|
+
* @property {boolean} [loading] - 로딩 상태 / Loading state
|
|
697
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
698
|
+
*/
|
|
699
|
+
interface ProgressCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
700
|
+
title: string;
|
|
701
|
+
current: number;
|
|
702
|
+
total: number;
|
|
703
|
+
unit?: string;
|
|
704
|
+
description?: string;
|
|
705
|
+
icon?: IconName | React.ReactNode;
|
|
706
|
+
color?: Color;
|
|
707
|
+
variant?: "default" | "gradient" | "outline" | "elevated";
|
|
708
|
+
showPercentage?: boolean;
|
|
709
|
+
showLabel?: boolean;
|
|
710
|
+
size?: "sm" | "md" | "lg";
|
|
711
|
+
loading?: boolean;
|
|
712
|
+
}
|
|
713
|
+
/**
|
|
714
|
+
* ProgressCard 컴포넌트 / ProgressCard component
|
|
715
|
+
*
|
|
716
|
+
* 진행률을 표시하는 카드 컴포넌트입니다.
|
|
717
|
+
* 현재 값과 전체 값을 비교하여 진행률을 시각적으로 표시합니다.
|
|
718
|
+
*
|
|
719
|
+
* Card component that displays progress.
|
|
720
|
+
* Compares current value with total value to visually display progress.
|
|
721
|
+
*
|
|
722
|
+
* @component
|
|
723
|
+
* @example
|
|
724
|
+
* // 기본 사용 / Basic usage
|
|
725
|
+
* <ProgressCard
|
|
726
|
+
* title="목표 달성률"
|
|
727
|
+
* current={75}
|
|
728
|
+
* total={100}
|
|
729
|
+
* unit="%"
|
|
730
|
+
* description="이번 달 목표"
|
|
731
|
+
* />
|
|
732
|
+
*
|
|
733
|
+
* @example
|
|
734
|
+
* // 퍼센트 표시 / Show percentage
|
|
735
|
+
* <ProgressCard
|
|
736
|
+
* title="판매 진행률"
|
|
737
|
+
* current={150}
|
|
738
|
+
* total={200}
|
|
739
|
+
* showPercentage
|
|
740
|
+
* color="green"
|
|
741
|
+
* variant="gradient"
|
|
742
|
+
* />
|
|
743
|
+
*
|
|
744
|
+
* @param {ProgressCardProps} props - ProgressCard 컴포넌트의 props / ProgressCard component props
|
|
745
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
746
|
+
* @returns {JSX.Element} ProgressCard 컴포넌트 / ProgressCard component
|
|
747
|
+
*/
|
|
748
|
+
declare const ProgressCard: React.ForwardRefExoticComponent<ProgressCardProps & React.RefAttributes<HTMLDivElement>>;
|
|
749
|
+
|
|
750
|
+
/**
|
|
751
|
+
* DashboardEmptyState 컴포넌트의 props / DashboardEmptyState component props
|
|
752
|
+
* @typedef {Object} DashboardEmptyStateProps
|
|
753
|
+
* @property {IconName | React.ReactNode} [icon="inbox"] - 아이콘 / Icon
|
|
754
|
+
* @property {string} title - 제목 / Title
|
|
755
|
+
* @property {string} [description] - 설명 / Description
|
|
756
|
+
* @property {string} [actionText] - 액션 버튼 텍스트 / Action button text
|
|
757
|
+
* @property {string} [actionHref] - 액션 버튼 링크 URL / Action button link URL
|
|
758
|
+
* @property {() => void} [actionOnClick] - 액션 버튼 클릭 핸들러 / Action button click handler
|
|
759
|
+
* @property {"default" | "warning" | "info" | "error" | "success"} [variant="default"] - 스타일 변형 / Style variant
|
|
760
|
+
* @property {"sm" | "md" | "lg"} [size="md"] - 크기 / Size
|
|
761
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
762
|
+
*/
|
|
763
|
+
interface DashboardEmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
764
|
+
icon?: IconName | React.ReactNode;
|
|
765
|
+
title: string;
|
|
766
|
+
description?: string;
|
|
767
|
+
actionText?: string;
|
|
768
|
+
actionHref?: string;
|
|
769
|
+
actionOnClick?: () => void;
|
|
770
|
+
variant?: "default" | "warning" | "info" | "error" | "success";
|
|
771
|
+
size?: "sm" | "md" | "lg";
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* DashboardEmptyState 컴포넌트
|
|
775
|
+
*
|
|
776
|
+
* 대시보드에서 빈 상태를 표시하는 컴포넌트입니다.
|
|
777
|
+
* 데이터가 없을 때 사용자에게 안내 메시지와 액션을 제공합니다.
|
|
778
|
+
*
|
|
779
|
+
* Empty state component for dashboards.
|
|
780
|
+
* Displays a message and action when there is no data to show.
|
|
781
|
+
*
|
|
782
|
+
* @component
|
|
783
|
+
* @example
|
|
784
|
+
* // 기본 사용 / Basic usage
|
|
785
|
+
* <DashboardEmptyState
|
|
786
|
+
* icon="inbox"
|
|
787
|
+
* title="데이터가 없습니다"
|
|
788
|
+
* description="새로운 데이터를 추가해보세요"
|
|
789
|
+
* actionText="데이터 추가"
|
|
790
|
+
* actionOnClick={handleAdd}
|
|
791
|
+
* />
|
|
792
|
+
*
|
|
793
|
+
* @example
|
|
794
|
+
* // 경고 스타일 / Warning style
|
|
795
|
+
* <DashboardEmptyState
|
|
796
|
+
* icon="warning"
|
|
797
|
+
* title="오류가 발생했습니다"
|
|
798
|
+
* description="잠시 후 다시 시도해주세요"
|
|
799
|
+
* variant="warning"
|
|
800
|
+
* size="lg"
|
|
801
|
+
* />
|
|
802
|
+
*
|
|
803
|
+
* @param {DashboardEmptyStateProps} props - DashboardEmptyState 컴포넌트의 props / DashboardEmptyState component props
|
|
804
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
805
|
+
* @returns {JSX.Element} DashboardEmptyState 컴포넌트 / DashboardEmptyState component
|
|
806
|
+
*/
|
|
807
|
+
declare const DashboardEmptyState: React.ForwardRefExoticComponent<DashboardEmptyStateProps & React.RefAttributes<HTMLDivElement>>;
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* 사이드바 네비게이션 아이템 인터페이스 / SidebarNavItem interface
|
|
811
|
+
* @typedef {Object} SidebarNavItem
|
|
812
|
+
* @property {string} id - 아이템 고유 ID / Item unique ID
|
|
813
|
+
* @property {string} label - 아이템 라벨 / Item label
|
|
814
|
+
* @property {string} [href] - 링크 URL / Link URL
|
|
815
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
816
|
+
* @property {React.ReactNode} [badge] - 배지 / Badge
|
|
817
|
+
* @property {boolean} [active] - 활성 상태 / Active state
|
|
818
|
+
* @property {() => void} [onClick] - 클릭 핸들러 / Click handler
|
|
819
|
+
*/
|
|
820
|
+
interface SidebarNavItem {
|
|
821
|
+
id: string;
|
|
822
|
+
label: string;
|
|
823
|
+
href?: string;
|
|
824
|
+
icon?: IconName | React.ReactNode;
|
|
825
|
+
badge?: React.ReactNode;
|
|
826
|
+
active?: boolean;
|
|
827
|
+
onClick?: () => void;
|
|
828
|
+
}
|
|
829
|
+
/**
|
|
830
|
+
* 사이드바 섹션 인터페이스 / SidebarSection interface
|
|
831
|
+
* @typedef {Object} SidebarSection
|
|
832
|
+
* @property {string} id - 섹션 고유 ID / Section unique ID
|
|
833
|
+
* @property {string} [label] - 섹션 라벨 / Section label
|
|
834
|
+
* @property {SidebarNavItem[]} items - 섹션 내 아이템 배열 / Items array in section
|
|
835
|
+
*/
|
|
836
|
+
interface SidebarSection {
|
|
837
|
+
id: string;
|
|
838
|
+
label?: string;
|
|
839
|
+
items: SidebarNavItem[];
|
|
840
|
+
}
|
|
841
|
+
/**
|
|
842
|
+
* DashboardSidebar 컴포넌트의 props / DashboardSidebar component props
|
|
843
|
+
* @typedef {Object} DashboardSidebarProps
|
|
844
|
+
* @property {React.ReactNode} [logo] - 로고 컴포넌트 / Logo component
|
|
845
|
+
* @property {React.ReactNode} [productSwitcher] - 제품 전환 컴포넌트 / Product switcher component
|
|
846
|
+
* @property {SidebarSection[]} sections - 사이드바 섹션 배열 / Sidebar sections array
|
|
847
|
+
* @property {React.ReactNode} [footerActions] - 푸터 액션 컴포넌트 / Footer actions component
|
|
848
|
+
* @property {boolean} [isCollapsed] - 접힘 상태 (제어) / Collapsed state (controlled)
|
|
849
|
+
* @property {boolean} [defaultCollapsed=false] - 기본 접힘 상태 / Default collapsed state
|
|
850
|
+
* @property {(collapsed: boolean) => void} [onToggleCollapsed] - 접힘 상태 변경 핸들러 / Collapsed state change handler
|
|
851
|
+
* @property {number} [collapsedWidth=72] - 접힘 상태 너비 (px) / Collapsed width (px)
|
|
852
|
+
* @property {number} [expandedWidth=264] - 펼침 상태 너비 (px) / Expanded width (px)
|
|
853
|
+
* @property {number} [mobileBreakpoint=1024] - 모바일 브레이크포인트 (px) / Mobile breakpoint (px)
|
|
854
|
+
* @property {string} [overlayBackground] - 모바일 오버레이 배경색 / Mobile overlay background color
|
|
855
|
+
* @extends {React.HTMLAttributes<HTMLElement>}
|
|
856
|
+
*/
|
|
857
|
+
interface DashboardSidebarProps extends React.HTMLAttributes<HTMLElement> {
|
|
858
|
+
logo?: React.ReactNode;
|
|
859
|
+
productSwitcher?: React.ReactNode;
|
|
860
|
+
sections: SidebarSection[];
|
|
861
|
+
footerActions?: React.ReactNode;
|
|
862
|
+
isCollapsed?: boolean;
|
|
863
|
+
defaultCollapsed?: boolean;
|
|
864
|
+
onToggleCollapsed?: (collapsed: boolean) => void;
|
|
865
|
+
collapsedWidth?: number;
|
|
866
|
+
expandedWidth?: number;
|
|
867
|
+
mobileBreakpoint?: number;
|
|
868
|
+
overlayBackground?: string;
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* DashboardSidebar 컴포넌트
|
|
872
|
+
*
|
|
873
|
+
* 대시보드용 사이드바 네비게이션 컴포넌트입니다.
|
|
874
|
+
* 접기/펼치기 기능과 모바일 반응형을 지원하며, 섹션별로 네비게이션 아이템을 구성할 수 있습니다.
|
|
875
|
+
*
|
|
876
|
+
* Sidebar navigation component for dashboards.
|
|
877
|
+
* Supports collapse/expand functionality and mobile responsiveness, with section-based navigation items.
|
|
878
|
+
*
|
|
879
|
+
* @component
|
|
880
|
+
* @example
|
|
881
|
+
* // 기본 사용 / Basic usage
|
|
882
|
+
* <DashboardSidebar
|
|
883
|
+
* logo={<Logo />}
|
|
884
|
+
* sections={[
|
|
885
|
+
* {
|
|
886
|
+
* id: "main",
|
|
887
|
+
* label: "메인",
|
|
888
|
+
* items: [
|
|
889
|
+
* { id: "dashboard", label: "대시보드", href: "/dashboard", icon: "layout" },
|
|
890
|
+
* { id: "transactions", label: "거래", href: "/transactions", icon: "creditCard" }
|
|
891
|
+
* ]
|
|
892
|
+
* }
|
|
893
|
+
* ]}
|
|
894
|
+
* />
|
|
895
|
+
*
|
|
896
|
+
* @example
|
|
897
|
+
* // 접힘 상태 제어 / Collapse state control
|
|
898
|
+
* <DashboardSidebar
|
|
899
|
+
* sections={sections}
|
|
900
|
+
* isCollapsed={collapsed}
|
|
901
|
+
* onToggleCollapsed={setCollapsed}
|
|
902
|
+
* collapsedWidth={80}
|
|
903
|
+
* expandedWidth={280}
|
|
904
|
+
* />
|
|
905
|
+
*
|
|
906
|
+
* @param {DashboardSidebarProps} props - DashboardSidebar 컴포넌트의 props / DashboardSidebar component props
|
|
907
|
+
* @param {React.Ref<HTMLElement>} ref - aside 요소 ref / aside element ref
|
|
908
|
+
* @returns {JSX.Element} DashboardSidebar 컴포넌트 / DashboardSidebar component
|
|
909
|
+
*/
|
|
910
|
+
declare const DashboardSidebar: React.ForwardRefExoticComponent<DashboardSidebarProps & React.RefAttributes<HTMLElement>>;
|
|
911
|
+
|
|
912
|
+
type TransactionStatus = "approved" | "pending" | "failed" | "refunded" | "cancelled" | "review";
|
|
913
|
+
type TransactionColumnKey = "id" | "merchant" | "amount" | "status" | "method" | "date" | "fee" | "customer";
|
|
914
|
+
/**
|
|
915
|
+
* 거래 테이블 행 인터페이스
|
|
916
|
+
* @typedef {Object} TransactionRow
|
|
917
|
+
* @property {string} id - 거래 ID
|
|
918
|
+
* @property {string} merchant - 가맹점
|
|
919
|
+
* @property {number} amount - 거래 금액
|
|
920
|
+
* @property {string} [currency] - 통화
|
|
921
|
+
* @property {TransactionStatus} status - 거래 상태
|
|
922
|
+
* @property {string} [method] - 결제수단
|
|
923
|
+
* @property {string | Date} date - 거래 일시
|
|
924
|
+
* @property {string} [customer] - 고객 정보
|
|
925
|
+
* @property {number} [fee] - 수수료
|
|
926
|
+
* @property {string} [reference] - 참조 번호
|
|
927
|
+
*/
|
|
928
|
+
interface TransactionRow {
|
|
929
|
+
id: string;
|
|
930
|
+
merchant: string;
|
|
931
|
+
amount: number;
|
|
932
|
+
currency?: string;
|
|
933
|
+
status: TransactionStatus;
|
|
934
|
+
method?: string;
|
|
935
|
+
date: string | Date;
|
|
936
|
+
customer?: string;
|
|
937
|
+
fee?: number;
|
|
938
|
+
reference?: string;
|
|
939
|
+
[key: string]: unknown;
|
|
940
|
+
}
|
|
941
|
+
/**
|
|
942
|
+
* 거래 테이블 컬럼 설정 인터페이스
|
|
943
|
+
* @typedef {Object} TransactionColumnConfig
|
|
944
|
+
* @property {TransactionColumnKey} key - 컬럼 키
|
|
945
|
+
* @property {string} [label] - 컬럼 라벨
|
|
946
|
+
* @property {"left" | "center" | "right"} [align] - 정렬
|
|
947
|
+
* @property {string} [width] - 컬럼 너비
|
|
948
|
+
* @property {(row: TransactionRow) => React.ReactNode} [render] - 커스텀 렌더러
|
|
949
|
+
*/
|
|
950
|
+
interface TransactionColumnConfig {
|
|
951
|
+
key: TransactionColumnKey;
|
|
952
|
+
label?: string;
|
|
953
|
+
align?: "left" | "center" | "right";
|
|
954
|
+
width?: string;
|
|
955
|
+
render?: (row: TransactionRow) => React.ReactNode;
|
|
956
|
+
}
|
|
957
|
+
/**
|
|
958
|
+
* TransactionsTable 컴포넌트의 props
|
|
959
|
+
* @typedef {Object} TransactionsTableProps
|
|
960
|
+
* @property {TransactionRow[]} rows - 거래 행 배열
|
|
961
|
+
* @property {TransactionColumnConfig[]} [columns] - 컬럼 설정 배열
|
|
962
|
+
* @property {boolean} [isLoading=false] - 로딩 상태
|
|
963
|
+
* @property {number} [loadingRows] - 로딩 행 수
|
|
964
|
+
* @property {React.ReactNode} [caption] - 테이블 캡션
|
|
965
|
+
* @property {React.ReactNode} [filters] - 필터 컴포넌트
|
|
966
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트
|
|
967
|
+
* @property {(row: TransactionRow) => void} [onRowClick] - 행 클릭 핸들러
|
|
968
|
+
* @property {(row: TransactionRow) => boolean} [highlightRow] - 행 강조 조건
|
|
969
|
+
* @property {Partial<Record<TransactionStatus, string>>} [statusLabels] - 상태 라벨 커스터마이징
|
|
970
|
+
* @property {(status: TransactionStatus, row: TransactionRow) => React.ReactNode} [statusRenderer] - 상태 커스텀 렌더러
|
|
971
|
+
* @property {(row: TransactionRow) => React.ReactNode} [amountFormatter] - 금액 커스텀 포맷터
|
|
972
|
+
* @property {(row: TransactionRow) => React.ReactNode} [methodFormatter] - 결제수단 커스텀 포맷터
|
|
973
|
+
* @property {(row: TransactionRow) => React.ReactNode} [dateFormatter] - 날짜 커스텀 포맷터
|
|
974
|
+
* @property {string} [locale="ko-KR"] - 로케일
|
|
975
|
+
* @property {string} [defaultCurrency="KRW"] - 기본 통화
|
|
976
|
+
* @property {string} [className] - 추가 클래스명
|
|
977
|
+
* @property {React.ReactNode} [footer] - 푸터 컴포넌트
|
|
978
|
+
* @property {(row: TransactionRow) => string} [rowActionLabel] - 행 액션 라벨 생성 함수
|
|
979
|
+
* @property {string} [rowActionHint] - 행 액션 힌트 텍스트
|
|
980
|
+
*/
|
|
981
|
+
interface TransactionsTableProps {
|
|
982
|
+
rows: TransactionRow[];
|
|
983
|
+
columns?: TransactionColumnConfig[];
|
|
984
|
+
isLoading?: boolean;
|
|
985
|
+
loadingRows?: number;
|
|
986
|
+
caption?: React.ReactNode;
|
|
987
|
+
filters?: React.ReactNode;
|
|
988
|
+
emptyState?: React.ReactNode;
|
|
989
|
+
onRowClick?: (row: TransactionRow) => void;
|
|
990
|
+
highlightRow?: (row: TransactionRow) => boolean;
|
|
991
|
+
statusLabels?: Partial<Record<TransactionStatus, string>>;
|
|
992
|
+
statusRenderer?: (status: TransactionStatus, row: TransactionRow) => React.ReactNode;
|
|
993
|
+
amountFormatter?: (row: TransactionRow) => React.ReactNode;
|
|
994
|
+
methodFormatter?: (row: TransactionRow) => React.ReactNode;
|
|
995
|
+
dateFormatter?: (row: TransactionRow) => React.ReactNode;
|
|
996
|
+
locale?: string;
|
|
997
|
+
defaultCurrency?: string;
|
|
998
|
+
className?: string;
|
|
999
|
+
footer?: React.ReactNode;
|
|
1000
|
+
rowActionLabel?: (row: TransactionRow) => string;
|
|
1001
|
+
rowActionHint?: string;
|
|
1002
|
+
}
|
|
1003
|
+
/**
|
|
1004
|
+
* TransactionsTable 컴포넌트
|
|
1005
|
+
*
|
|
1006
|
+
* 거래 목록을 테이블 형태로 표시하는 컴포넌트입니다.
|
|
1007
|
+
* 정렬, 필터링, 커스텀 렌더링 등을 지원합니다.
|
|
1008
|
+
*
|
|
1009
|
+
* Table component that displays transaction list.
|
|
1010
|
+
* Supports sorting, filtering, and custom rendering.
|
|
1011
|
+
*
|
|
1012
|
+
* @component
|
|
1013
|
+
* @example
|
|
1014
|
+
* // 기본 사용 / Basic usage
|
|
1015
|
+
* <TransactionsTable
|
|
1016
|
+
* rows={[
|
|
1017
|
+
* {
|
|
1018
|
+
* id: "tx_123",
|
|
1019
|
+
* merchant: "가맹점 A",
|
|
1020
|
+
* amount: 100000,
|
|
1021
|
+
* status: "approved",
|
|
1022
|
+
* method: "카드",
|
|
1023
|
+
* date: new Date()
|
|
1024
|
+
* }
|
|
1025
|
+
* ]}
|
|
1026
|
+
* onRowClick={(row) => console.log(row)}
|
|
1027
|
+
* />
|
|
1028
|
+
*
|
|
1029
|
+
* @example
|
|
1030
|
+
* // 커스텀 컬럼과 포맷터 / Custom columns and formatters
|
|
1031
|
+
* <TransactionsTable
|
|
1032
|
+
* rows={transactions}
|
|
1033
|
+
* columns={[
|
|
1034
|
+
* { key: "id", label: "ID" },
|
|
1035
|
+
* { key: "amount", label: "금액", align: "right" },
|
|
1036
|
+
* { key: "status", label: "상태" }
|
|
1037
|
+
* ]}
|
|
1038
|
+
* amountFormatter={(row) => `₩${row.amount.toLocaleString()}`}
|
|
1039
|
+
* statusRenderer={(status) => <CustomBadge status={status} />}
|
|
1040
|
+
* isLoading={loading}
|
|
1041
|
+
* />
|
|
1042
|
+
*
|
|
1043
|
+
* @param {TransactionsTableProps} props - TransactionsTable 컴포넌트의 props / TransactionsTable component props
|
|
1044
|
+
* @returns {JSX.Element} TransactionsTable 컴포넌트 / TransactionsTable component
|
|
1045
|
+
*/
|
|
1046
|
+
declare const TransactionsTable: React.FC<TransactionsTableProps>;
|
|
1047
|
+
|
|
1048
|
+
type ToolbarVariant = "plain" | "cards";
|
|
1049
|
+
/**
|
|
1050
|
+
* 툴바 액션 인터페이스 / ToolbarAction interface
|
|
1051
|
+
* @typedef {Object} ToolbarAction
|
|
1052
|
+
* @property {string} label - 액션 라벨 / Action label
|
|
1053
|
+
* @property {() => void} [onClick] - 클릭 핸들러 / Click handler
|
|
1054
|
+
* @property {string} [href] - 링크 URL / Link URL
|
|
1055
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
1056
|
+
* @property {"primary" | "secondary" | "ghost"} [appearance="secondary"] - 액션 스타일 / Action style
|
|
1057
|
+
* @property {boolean} [loading] - 로딩 상태 / Loading state
|
|
1058
|
+
*/
|
|
1059
|
+
interface ToolbarAction {
|
|
1060
|
+
label: string;
|
|
1061
|
+
onClick?: () => void;
|
|
1062
|
+
href?: string;
|
|
1063
|
+
icon?: IconName | React.ReactNode;
|
|
1064
|
+
appearance?: "primary" | "secondary" | "ghost";
|
|
1065
|
+
loading?: boolean;
|
|
1066
|
+
}
|
|
1067
|
+
/**
|
|
1068
|
+
* 날짜 프리셋 인터페이스 / DatePreset interface
|
|
1069
|
+
* @typedef {Object} DatePreset
|
|
1070
|
+
* @property {string} label - 프리셋 라벨 / Preset label
|
|
1071
|
+
* @property {string} value - 프리셋 값 / Preset value
|
|
1072
|
+
*/
|
|
1073
|
+
interface DatePreset {
|
|
1074
|
+
label: string;
|
|
1075
|
+
value: string;
|
|
1076
|
+
}
|
|
1077
|
+
/**
|
|
1078
|
+
* 날짜 범위 설정 인터페이스 / DateRangeConfig interface
|
|
1079
|
+
* @typedef {Object} DateRangeConfig
|
|
1080
|
+
* @property {{ from: Date; to: Date } | null} value - 날짜 범위 값 / Date range value
|
|
1081
|
+
* @property {DatePreset[]} [presets] - 날짜 프리셋 배열 / Date preset array
|
|
1082
|
+
* @property {(preset: DatePreset) => void} [onSelectPreset] - 프리셋 선택 핸들러 / Preset selection handler
|
|
1083
|
+
* @property {() => void} [onCustomRange] - 커스텀 범위 선택 핸들러 / Custom range selection handler
|
|
1084
|
+
* @property {string} [display] - 표시 텍스트 / Display text
|
|
1085
|
+
*/
|
|
1086
|
+
interface DateRangeConfig {
|
|
1087
|
+
value: {
|
|
1088
|
+
from: Date;
|
|
1089
|
+
to: Date;
|
|
1090
|
+
} | null;
|
|
1091
|
+
presets?: DatePreset[];
|
|
1092
|
+
onSelectPreset?: (preset: DatePreset) => void;
|
|
1093
|
+
onCustomRange?: () => void;
|
|
1094
|
+
display?: string;
|
|
1095
|
+
}
|
|
1096
|
+
/**
|
|
1097
|
+
* DashboardToolbar 컴포넌트의 props / DashboardToolbar component props
|
|
1098
|
+
* @typedef {Object} DashboardToolbarProps
|
|
1099
|
+
* @property {React.ReactNode} [title] - 툴바 제목 / Toolbar title
|
|
1100
|
+
* @property {React.ReactNode} [description] - 툴바 설명 / Toolbar description
|
|
1101
|
+
* @property {React.ReactNode} [meta] - 메타 정보 / Meta information
|
|
1102
|
+
* @property {"plain" | "cards"} [variant="cards"] - 툴바 스타일 변형 / Toolbar style variant
|
|
1103
|
+
* @property {DateRangeConfig} [dateRange] - 날짜 범위 설정 / Date range configuration
|
|
1104
|
+
* @property {React.ReactNode} [filters] - 필터 컴포넌트 / Filter component
|
|
1105
|
+
* @property {ToolbarAction[]} [actions] - 액션 버튼 배열 / Action buttons array
|
|
1106
|
+
* @property {() => void} [onRefresh] - 새로고침 핸들러 / Refresh handler
|
|
1107
|
+
* @property {string} [lastUpdated] - 마지막 업데이트 시간 / Last updated time
|
|
1108
|
+
* @extends {Omit<React.HTMLAttributes<HTMLDivElement>, "title">}
|
|
1109
|
+
*/
|
|
1110
|
+
interface DashboardToolbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
|
|
1111
|
+
title?: React.ReactNode;
|
|
1112
|
+
description?: React.ReactNode;
|
|
1113
|
+
meta?: React.ReactNode;
|
|
1114
|
+
variant?: ToolbarVariant;
|
|
1115
|
+
dateRange?: DateRangeConfig;
|
|
1116
|
+
filters?: React.ReactNode;
|
|
1117
|
+
actions?: ToolbarAction[];
|
|
1118
|
+
onRefresh?: () => void;
|
|
1119
|
+
lastUpdated?: string;
|
|
1120
|
+
}
|
|
1121
|
+
/**
|
|
1122
|
+
* DashboardToolbar 컴포넌트
|
|
1123
|
+
*
|
|
1124
|
+
* 대시보드 상단 툴바 컴포넌트입니다.
|
|
1125
|
+
* 제목, 설명, 필터, 날짜 범위 선택, 액션 버튼 등을 포함할 수 있습니다.
|
|
1126
|
+
*
|
|
1127
|
+
* Top toolbar component for dashboards.
|
|
1128
|
+
* Can include title, description, filters, date range selection, and action buttons.
|
|
1129
|
+
*
|
|
1130
|
+
* @component
|
|
1131
|
+
* @example
|
|
1132
|
+
* // 기본 사용 / Basic usage
|
|
1133
|
+
* <DashboardToolbar
|
|
1134
|
+
* title="거래 대시보드"
|
|
1135
|
+
* description="전체 거래 현황을 확인하세요"
|
|
1136
|
+
* actions={[
|
|
1137
|
+
* { label: "내보내기", icon: "download", onClick: handleExport },
|
|
1138
|
+
* { label: "필터", icon: "funnel", onClick: handleFilter }
|
|
1139
|
+
* ]}
|
|
1140
|
+
* onRefresh={handleRefresh}
|
|
1141
|
+
* />
|
|
1142
|
+
*
|
|
1143
|
+
* @example
|
|
1144
|
+
* // 날짜 범위 포함 / With date range
|
|
1145
|
+
* <DashboardToolbar
|
|
1146
|
+
* title="매출 분석"
|
|
1147
|
+
* dateRange={{
|
|
1148
|
+
* value: { from: new Date("2024-01-01"), to: new Date("2024-12-31") },
|
|
1149
|
+
* presets: [
|
|
1150
|
+
* { label: "오늘", value: "today" },
|
|
1151
|
+
* { label: "이번 주", value: "thisWeek" },
|
|
1152
|
+
* { label: "이번 달", value: "thisMonth" }
|
|
1153
|
+
* ],
|
|
1154
|
+
* onSelectPreset: handlePresetSelect,
|
|
1155
|
+
* onCustomRange: handleCustomRange
|
|
1156
|
+
* }}
|
|
1157
|
+
* />
|
|
1158
|
+
*
|
|
1159
|
+
* @param {DashboardToolbarProps} props - DashboardToolbar 컴포넌트의 props / DashboardToolbar component props
|
|
1160
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1161
|
+
* @returns {JSX.Element} DashboardToolbar 컴포넌트 / DashboardToolbar component
|
|
1162
|
+
*/
|
|
1163
|
+
declare const DashboardToolbar: React.ForwardRefExoticComponent<DashboardToolbarProps & React.RefAttributes<HTMLDivElement>>;
|
|
1164
|
+
|
|
1165
|
+
type TrendSeriesPalette = "approval" | "settlement" | "custom";
|
|
1166
|
+
/**
|
|
1167
|
+
* 트렌드 시리즈 인터페이스
|
|
1168
|
+
* @typedef {Object} TrendSeries
|
|
1169
|
+
* @property {string} label - 시리즈 라벨
|
|
1170
|
+
* @property {number[]} data - 데이터 배열
|
|
1171
|
+
* @property {string} [color] - 커스텀 색상
|
|
1172
|
+
* @property {boolean} [area] - 영역 채우기 여부
|
|
1173
|
+
*/
|
|
1174
|
+
interface TrendSeries {
|
|
1175
|
+
label: string;
|
|
1176
|
+
data: number[];
|
|
1177
|
+
color?: string;
|
|
1178
|
+
area?: boolean;
|
|
1179
|
+
}
|
|
1180
|
+
/**
|
|
1181
|
+
* TrendChart 컴포넌트의 props / TrendChart component props
|
|
1182
|
+
* @typedef {Object} TrendChartProps
|
|
1183
|
+
* @property {TrendSeries[]} series - 시리즈 배열 / Series array
|
|
1184
|
+
* @property {string[]} categories - 카테고리 배열 / Categories array
|
|
1185
|
+
* @property {TrendSeriesPalette} [palette="approval"] - 색상 팔레트 / Color palette
|
|
1186
|
+
* @property {number} [height=200] - 차트 높이 (px) / Chart height (px)
|
|
1187
|
+
* @property {boolean} [showLegend=true] - 범례 표시 여부 / Show legend
|
|
1188
|
+
* @property {boolean} [showDots=true] - 점 표시 여부 / Show dots
|
|
1189
|
+
* @property {boolean} [showTooltip=false] - 툴팁 표시 여부 / Show tooltip
|
|
1190
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1191
|
+
*/
|
|
1192
|
+
interface TrendChartProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1193
|
+
series: TrendSeries[];
|
|
1194
|
+
categories: string[];
|
|
1195
|
+
palette?: TrendSeriesPalette;
|
|
1196
|
+
height?: number;
|
|
1197
|
+
showLegend?: boolean;
|
|
1198
|
+
showDots?: boolean;
|
|
1199
|
+
showTooltip?: boolean;
|
|
1200
|
+
}
|
|
1201
|
+
/**
|
|
1202
|
+
* TrendChart 컴포넌트
|
|
1203
|
+
*
|
|
1204
|
+
* 트렌드 데이터를 선 그래프로 표시하는 컴포넌트입니다.
|
|
1205
|
+
* 여러 시리즈를 동시에 표시할 수 있으며, 영역 채우기 옵션을 제공합니다.
|
|
1206
|
+
*
|
|
1207
|
+
* Line chart component that displays trend data.
|
|
1208
|
+
* Can display multiple series simultaneously with area fill option.
|
|
1209
|
+
*
|
|
1210
|
+
* @component
|
|
1211
|
+
* @example
|
|
1212
|
+
* // 기본 사용 / Basic usage
|
|
1213
|
+
* <TrendChart
|
|
1214
|
+
* series={[
|
|
1215
|
+
* { label: "승인", data: [10, 20, 15, 30, 25] },
|
|
1216
|
+
* { label: "거부", data: [5, 10, 8, 15, 12] }
|
|
1217
|
+
* ]}
|
|
1218
|
+
* categories={["월", "화", "수", "목", "금"]}
|
|
1219
|
+
* palette="approval"
|
|
1220
|
+
* />
|
|
1221
|
+
*
|
|
1222
|
+
* @example
|
|
1223
|
+
* // 영역 채우기와 커스텀 색상 / Area fill and custom color
|
|
1224
|
+
* <TrendChart
|
|
1225
|
+
* series={[
|
|
1226
|
+
* { label: "정산", data: [100, 200, 150], area: true, color: "#6366f1" }
|
|
1227
|
+
* ]}
|
|
1228
|
+
* categories={["1월", "2월", "3월"]}
|
|
1229
|
+
* palette="settlement"
|
|
1230
|
+
* showDots={true}
|
|
1231
|
+
* showTooltip={true}
|
|
1232
|
+
* />
|
|
1233
|
+
*
|
|
1234
|
+
* @param {TrendChartProps} props - TrendChart 컴포넌트의 props / TrendChart component props
|
|
1235
|
+
* @returns {JSX.Element} TrendChart 컴포넌트 / TrendChart component
|
|
1236
|
+
*/
|
|
1237
|
+
declare const TrendChart: React.FC<TrendChartProps>;
|
|
1238
|
+
|
|
1239
|
+
/**
|
|
1240
|
+
* 거래 상세 정보 인터페이스 / TransactionDetail interface
|
|
1241
|
+
* @typedef {Object} TransactionDetail
|
|
1242
|
+
* @property {string} id - 거래 ID / Transaction ID
|
|
1243
|
+
* @property {TransactionStatus} status - 거래 상태 / Transaction status
|
|
1244
|
+
* @property {number} amount - 거래 금액 / Transaction amount
|
|
1245
|
+
* @property {string} [currency] - 통화 / Currency
|
|
1246
|
+
* @property {string} [merchant] - 가맹점 / Merchant
|
|
1247
|
+
* @property {string} [method] - 결제수단 / Payment method
|
|
1248
|
+
* @property {string | Date} [createdAt] - 생성일시 / Created date
|
|
1249
|
+
* @property {string | Date} [approvedAt] - 승인일시 / Approved date
|
|
1250
|
+
* @property {string} [customer] - 고객 정보 / Customer information
|
|
1251
|
+
* @property {string} [reference] - 참조 번호 / Reference number
|
|
1252
|
+
*/
|
|
1253
|
+
interface TransactionDetail {
|
|
1254
|
+
id: string;
|
|
1255
|
+
status: TransactionStatus;
|
|
1256
|
+
amount: number;
|
|
1257
|
+
currency?: string;
|
|
1258
|
+
merchant?: string;
|
|
1259
|
+
method?: string;
|
|
1260
|
+
createdAt?: string | Date;
|
|
1261
|
+
approvedAt?: string | Date;
|
|
1262
|
+
customer?: string;
|
|
1263
|
+
reference?: string;
|
|
1264
|
+
}
|
|
1265
|
+
/**
|
|
1266
|
+
* 거래 메타데이터 아이템 인터페이스 / TransactionMetadataItem interface
|
|
1267
|
+
* @typedef {Object} TransactionMetadataItem
|
|
1268
|
+
* @property {string} label - 라벨 / Label
|
|
1269
|
+
* @property {React.ReactNode} value - 값 / Value
|
|
1270
|
+
* @property {IconName} [icon] - 아이콘 / Icon
|
|
1271
|
+
*/
|
|
1272
|
+
interface TransactionMetadataItem {
|
|
1273
|
+
label: string;
|
|
1274
|
+
value: React.ReactNode;
|
|
1275
|
+
icon?: IconName;
|
|
1276
|
+
}
|
|
1277
|
+
type SettlementStatus = "pending" | "processing" | "completed" | "failed";
|
|
1278
|
+
/**
|
|
1279
|
+
* 정산 정보 인터페이스 / SettlementInfo interface
|
|
1280
|
+
* @typedef {Object} SettlementInfo
|
|
1281
|
+
* @property {SettlementStatus} [status] - 정산 상태 / Settlement status
|
|
1282
|
+
* @property {number} [amount] - 정산 금액 / Settlement amount
|
|
1283
|
+
* @property {string} [currency] - 통화 / Currency
|
|
1284
|
+
* @property {string | Date} [scheduledDate] - 예정일 / Scheduled date
|
|
1285
|
+
* @property {string} [expectedPayout] - 예상 지급액 / Expected payout
|
|
1286
|
+
* @property {string} [bankAccount] - 계좌 정보 / Bank account information
|
|
1287
|
+
* @property {string} [reference] - 참조 번호 / Reference number
|
|
1288
|
+
* @property {string} [note] - 메모 / Note
|
|
1289
|
+
*/
|
|
1290
|
+
interface SettlementInfo {
|
|
1291
|
+
status?: SettlementStatus;
|
|
1292
|
+
amount?: number;
|
|
1293
|
+
currency?: string;
|
|
1294
|
+
scheduledDate?: string | Date;
|
|
1295
|
+
expectedPayout?: string;
|
|
1296
|
+
bankAccount?: string;
|
|
1297
|
+
reference?: string;
|
|
1298
|
+
note?: string;
|
|
1299
|
+
}
|
|
1300
|
+
/**
|
|
1301
|
+
* 수수료 내역 인터페이스 / FeeBreakdown interface
|
|
1302
|
+
* @typedef {Object} FeeBreakdown
|
|
1303
|
+
* @property {string} label - 수수료 라벨 / Fee label
|
|
1304
|
+
* @property {number} amount - 수수료 금액 / Fee amount
|
|
1305
|
+
* @property {string} [currency] - 통화 / Currency
|
|
1306
|
+
* @property {string} [description] - 설명 / Description
|
|
1307
|
+
*/
|
|
1308
|
+
interface FeeBreakdown {
|
|
1309
|
+
label: string;
|
|
1310
|
+
amount: number;
|
|
1311
|
+
currency?: string;
|
|
1312
|
+
description?: string;
|
|
1313
|
+
}
|
|
1314
|
+
/**
|
|
1315
|
+
* 거래 이벤트 인터페이스 / TransactionEvent interface
|
|
1316
|
+
* @typedef {Object} TransactionEvent
|
|
1317
|
+
* @property {string} id - 이벤트 ID / Event ID
|
|
1318
|
+
* @property {string} title - 이벤트 제목 / Event title
|
|
1319
|
+
* @property {string} [description] - 설명 / Description
|
|
1320
|
+
* @property {string | Date} timestamp - 타임스탬프 / Timestamp
|
|
1321
|
+
* @property {"success" | "warning" | "error" | "info"} [status] - 이벤트 상태 / Event status
|
|
1322
|
+
* @property {IconName} [icon] - 아이콘 / Icon
|
|
1323
|
+
* @property {string} [actor] - 실행자 / Actor
|
|
1324
|
+
*/
|
|
1325
|
+
interface TransactionEvent {
|
|
1326
|
+
id: string;
|
|
1327
|
+
title: string;
|
|
1328
|
+
description?: string;
|
|
1329
|
+
timestamp: string | Date;
|
|
1330
|
+
status?: "success" | "warning" | "error" | "info";
|
|
1331
|
+
icon?: IconName;
|
|
1332
|
+
actor?: string;
|
|
1333
|
+
}
|
|
1334
|
+
/**
|
|
1335
|
+
* TransactionDetailDrawer 컴포넌트의 props / TransactionDetailDrawer component props
|
|
1336
|
+
* @typedef {Object} TransactionDetailDrawerProps
|
|
1337
|
+
* @property {boolean} open - 드로어 열림 상태 / Drawer open state
|
|
1338
|
+
* @property {() => void} onClose - 닫기 핸들러 / Close handler
|
|
1339
|
+
* @property {TransactionDetail} [transaction] - 거래 상세 정보 / Transaction detail information
|
|
1340
|
+
* @property {TransactionMetadataItem[]} [metadata=[]] - 메타데이터 배열 / Metadata array
|
|
1341
|
+
* @property {SettlementInfo} [settlement] - 정산 정보 / Settlement information
|
|
1342
|
+
* @property {FeeBreakdown[]} [fees=[]] - 수수료 내역 배열 / Fee breakdown array
|
|
1343
|
+
* @property {TransactionEvent[]} [events=[]] - 이벤트 로그 배열 / Event log array
|
|
1344
|
+
* @property {React.ReactNode} [actions] - 액션 컴포넌트 / Actions component
|
|
1345
|
+
* @property {React.ReactNode} [summary] - 요약 컴포넌트 / Summary component
|
|
1346
|
+
* @property {boolean} [loading=false] - 로딩 상태 / Loading state
|
|
1347
|
+
* @property {string} [locale="ko-KR"] - 로케일 / Locale
|
|
1348
|
+
* @property {string} [defaultCurrency="KRW"] - 기본 통화 / Default currency
|
|
1349
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트 / Empty state component
|
|
1350
|
+
* @property {string} [className] - 추가 클래스명 / Additional class name
|
|
1351
|
+
*/
|
|
1352
|
+
interface TransactionDetailDrawerProps {
|
|
1353
|
+
open: boolean;
|
|
1354
|
+
onClose: () => void;
|
|
1355
|
+
transaction?: TransactionDetail;
|
|
1356
|
+
metadata?: TransactionMetadataItem[];
|
|
1357
|
+
settlement?: SettlementInfo;
|
|
1358
|
+
fees?: FeeBreakdown[];
|
|
1359
|
+
events?: TransactionEvent[];
|
|
1360
|
+
actions?: React.ReactNode;
|
|
1361
|
+
summary?: React.ReactNode;
|
|
1362
|
+
loading?: boolean;
|
|
1363
|
+
locale?: string;
|
|
1364
|
+
defaultCurrency?: string;
|
|
1365
|
+
emptyState?: React.ReactNode;
|
|
1366
|
+
className?: string;
|
|
1367
|
+
}
|
|
1368
|
+
/**
|
|
1369
|
+
* TransactionDetailDrawer 컴포넌트
|
|
1370
|
+
*
|
|
1371
|
+
* 거래 상세 정보를 표시하는 드로어 컴포넌트입니다.
|
|
1372
|
+
* 거래 정보, 정산 정보, 수수료 내역, 이벤트 로그 등을 포함합니다.
|
|
1373
|
+
*
|
|
1374
|
+
* Drawer component that displays detailed transaction information.
|
|
1375
|
+
* Includes transaction details, settlement info, fee breakdown, and event logs.
|
|
1376
|
+
*
|
|
1377
|
+
* @component
|
|
1378
|
+
* @example
|
|
1379
|
+
* // 기본 사용 / Basic usage
|
|
1380
|
+
* <TransactionDetailDrawer
|
|
1381
|
+
* open={isOpen}
|
|
1382
|
+
* onClose={() => setIsOpen(false)}
|
|
1383
|
+
* transaction={{
|
|
1384
|
+
* id: "tx_123",
|
|
1385
|
+
* status: "approved",
|
|
1386
|
+
* amount: 100000,
|
|
1387
|
+
* currency: "KRW",
|
|
1388
|
+
* merchant: "가맹점 A"
|
|
1389
|
+
* }}
|
|
1390
|
+
* metadata={[
|
|
1391
|
+
* { label: "거래 ID", value: "tx_123", icon: "creditCard" },
|
|
1392
|
+
* { label: "고객", value: "홍길동", icon: "user" }
|
|
1393
|
+
* ]}
|
|
1394
|
+
* />
|
|
1395
|
+
*
|
|
1396
|
+
* @example
|
|
1397
|
+
* // 정산 정보 포함 / With settlement info
|
|
1398
|
+
* <TransactionDetailDrawer
|
|
1399
|
+
* open={isOpen}
|
|
1400
|
+
* onClose={handleClose}
|
|
1401
|
+
* transaction={transaction}
|
|
1402
|
+
* settlement={{
|
|
1403
|
+
* status: "processing",
|
|
1404
|
+
* amount: 95000,
|
|
1405
|
+
* currency: "KRW",
|
|
1406
|
+
* scheduledDate: new Date("2024-01-15")
|
|
1407
|
+
* }}
|
|
1408
|
+
* fees={[
|
|
1409
|
+
* { label: "수수료", amount: 5000, currency: "KRW" }
|
|
1410
|
+
* ]}
|
|
1411
|
+
* events={eventLogs}
|
|
1412
|
+
* />
|
|
1413
|
+
*
|
|
1414
|
+
* @param {TransactionDetailDrawerProps} props - TransactionDetailDrawer 컴포넌트의 props / TransactionDetailDrawer component props
|
|
1415
|
+
* @returns {JSX.Element} TransactionDetailDrawer 컴포넌트 / TransactionDetailDrawer component
|
|
1416
|
+
*/
|
|
1417
|
+
declare const TransactionDetailDrawer: React.FC<TransactionDetailDrawerProps>;
|
|
1418
|
+
|
|
1419
|
+
type SettlementTimelineStatus = "pending" | "processing" | "completed" | "failed";
|
|
1420
|
+
/**
|
|
1421
|
+
* 정산 타임라인 아이템 인터페이스 / SettlementTimelineItem interface
|
|
1422
|
+
* @typedef {Object} SettlementTimelineItem
|
|
1423
|
+
* @property {string} id - 아이템 고유 ID / Item unique ID
|
|
1424
|
+
* @property {string} title - 제목 / Title
|
|
1425
|
+
* @property {string} [description] - 설명 / Description
|
|
1426
|
+
* @property {SettlementTimelineStatus} status - 상태 / Status
|
|
1427
|
+
* @property {number} [amount] - 금액 / Amount
|
|
1428
|
+
* @property {string} [currency] - 통화 / Currency
|
|
1429
|
+
* @property {string | Date} [date] - 날짜 / Date
|
|
1430
|
+
* @property {string} [meta] - 메타 정보 / Meta information
|
|
1431
|
+
* @property {IconName} [icon] - 아이콘 / Icon
|
|
1432
|
+
*/
|
|
1433
|
+
interface SettlementTimelineItem {
|
|
1434
|
+
id: string;
|
|
1435
|
+
title: string;
|
|
1436
|
+
description?: string;
|
|
1437
|
+
status: SettlementTimelineStatus;
|
|
1438
|
+
amount?: number;
|
|
1439
|
+
currency?: string;
|
|
1440
|
+
date?: string | Date;
|
|
1441
|
+
meta?: string;
|
|
1442
|
+
icon?: IconName;
|
|
1443
|
+
}
|
|
1444
|
+
/**
|
|
1445
|
+
* SettlementTimeline 컴포넌트의 props / SettlementTimeline component props
|
|
1446
|
+
* @typedef {Object} SettlementTimelineProps
|
|
1447
|
+
* @property {SettlementTimelineItem[]} items - 타임라인 아이템 배열 / Timeline items array
|
|
1448
|
+
* @property {string} [highlightedId] - 강조할 아이템 ID / Highlighted item ID
|
|
1449
|
+
* @property {string} [locale="ko-KR"] - 로케일 / Locale
|
|
1450
|
+
* @property {string} [defaultCurrency="KRW"] - 기본 통화 / Default currency
|
|
1451
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트 / Empty state component
|
|
1452
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1453
|
+
*/
|
|
1454
|
+
interface SettlementTimelineProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1455
|
+
items: SettlementTimelineItem[];
|
|
1456
|
+
highlightedId?: string;
|
|
1457
|
+
locale?: string;
|
|
1458
|
+
defaultCurrency?: string;
|
|
1459
|
+
emptyState?: React.ReactNode;
|
|
1460
|
+
}
|
|
1461
|
+
/**
|
|
1462
|
+
* SettlementTimeline 컴포넌트
|
|
1463
|
+
*
|
|
1464
|
+
* 정산 처리 단계를 타임라인 형태로 표시하는 컴포넌트입니다.
|
|
1465
|
+
* 각 단계의 상태, 금액, 날짜를 시각적으로 표시합니다.
|
|
1466
|
+
*
|
|
1467
|
+
* Timeline component that displays settlement processing stages.
|
|
1468
|
+
* Visually shows status, amount, and date for each stage.
|
|
1469
|
+
*
|
|
1470
|
+
* @component
|
|
1471
|
+
* @example
|
|
1472
|
+
* // 기본 사용 / Basic usage
|
|
1473
|
+
* <SettlementTimeline
|
|
1474
|
+
* items={[
|
|
1475
|
+
* {
|
|
1476
|
+
* id: "1",
|
|
1477
|
+
* title: "정산 요청",
|
|
1478
|
+
* status: "completed",
|
|
1479
|
+
* amount: 1000000,
|
|
1480
|
+
* currency: "KRW",
|
|
1481
|
+
* date: new Date("2024-01-01")
|
|
1482
|
+
* },
|
|
1483
|
+
* {
|
|
1484
|
+
* id: "2",
|
|
1485
|
+
* title: "처리 중",
|
|
1486
|
+
* status: "processing",
|
|
1487
|
+
* amount: 1000000,
|
|
1488
|
+
* currency: "KRW"
|
|
1489
|
+
* }
|
|
1490
|
+
* ]}
|
|
1491
|
+
* />
|
|
1492
|
+
*
|
|
1493
|
+
* @example
|
|
1494
|
+
* // 강조 기능 / Highlight feature
|
|
1495
|
+
* <SettlementTimeline
|
|
1496
|
+
* items={timelineItems}
|
|
1497
|
+
* highlightedId="2"
|
|
1498
|
+
* locale="en-US"
|
|
1499
|
+
* defaultCurrency="USD"
|
|
1500
|
+
* />
|
|
1501
|
+
*
|
|
1502
|
+
* @param {SettlementTimelineProps} props - SettlementTimeline 컴포넌트의 props / SettlementTimeline component props
|
|
1503
|
+
* @returns {JSX.Element} SettlementTimeline 컴포넌트 / SettlementTimeline component
|
|
1504
|
+
*/
|
|
1505
|
+
declare const SettlementTimeline: React.FC<SettlementTimelineProps>;
|
|
1506
|
+
|
|
1507
|
+
type RoutingStatus = "normal" | "warning" | "critical";
|
|
1508
|
+
/**
|
|
1509
|
+
* 라우팅 분할 세그먼트 인터페이스 / RoutingBreakdownSegment interface
|
|
1510
|
+
* @typedef {Object} RoutingBreakdownSegment
|
|
1511
|
+
* @property {string} id - 세그먼트 고유 ID / Segment unique ID
|
|
1512
|
+
* @property {string} label - 세그먼트 라벨 / Segment label
|
|
1513
|
+
* @property {number} value - 세그먼트 값 / Segment value
|
|
1514
|
+
* @property {string} [color] - 커스텀 색상 / Custom color
|
|
1515
|
+
* @property {RoutingStatus} [status] - 상태 / Status
|
|
1516
|
+
* @property {string} [icon] - 아이콘 이름 / Icon name
|
|
1517
|
+
* @property {string} [detail] - 상세 정보 / Detail information
|
|
1518
|
+
*/
|
|
1519
|
+
interface RoutingBreakdownSegment {
|
|
1520
|
+
id: string;
|
|
1521
|
+
label: string;
|
|
1522
|
+
value: number;
|
|
1523
|
+
color?: string;
|
|
1524
|
+
status?: RoutingStatus;
|
|
1525
|
+
icon?: string;
|
|
1526
|
+
detail?: string;
|
|
1527
|
+
}
|
|
1528
|
+
/**
|
|
1529
|
+
* RoutingBreakdownCard 컴포넌트의 props / RoutingBreakdownCard component props
|
|
1530
|
+
* @typedef {Object} RoutingBreakdownCardProps
|
|
1531
|
+
* @property {string} [title="PG / 결제수단 비중"] - 카드 제목 / Card title
|
|
1532
|
+
* @property {string} [description="라우팅별 처리 비율과 상태"] - 카드 설명 / Card description
|
|
1533
|
+
* @property {RoutingBreakdownSegment[]} segments - 세그먼트 배열 / Segments array
|
|
1534
|
+
* @property {string} [totalLabel="총 거래"] - 총계 라벨 / Total label
|
|
1535
|
+
* @property {React.ReactNode} [totalValue] - 총계 값 / Total value
|
|
1536
|
+
* @property {string} [highlightId] - 강조할 세그먼트 ID / Highlighted segment ID
|
|
1537
|
+
* @property {React.ReactNode} [actions] - 액션 컴포넌트 / Actions component
|
|
1538
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트 / Empty state component
|
|
1539
|
+
* @property {(segment: RoutingBreakdownSegment, percentage: number) => React.ReactNode} [formatter] - 커스텀 포맷터 / Custom formatter
|
|
1540
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1541
|
+
*/
|
|
1542
|
+
interface RoutingBreakdownCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1543
|
+
title?: string;
|
|
1544
|
+
description?: string;
|
|
1545
|
+
segments: RoutingBreakdownSegment[];
|
|
1546
|
+
totalLabel?: string;
|
|
1547
|
+
totalValue?: React.ReactNode;
|
|
1548
|
+
highlightId?: string;
|
|
1549
|
+
actions?: React.ReactNode;
|
|
1550
|
+
emptyState?: React.ReactNode;
|
|
1551
|
+
formatter?: (segment: RoutingBreakdownSegment, percentage: number) => React.ReactNode;
|
|
1552
|
+
}
|
|
1553
|
+
/**
|
|
1554
|
+
* RoutingBreakdownCard 컴포넌트
|
|
1555
|
+
*
|
|
1556
|
+
* PG 라우팅 또는 결제수단별 비중을 표시하는 카드 컴포넌트입니다.
|
|
1557
|
+
* 진행 바와 세그먼트별 상세 정보를 제공합니다.
|
|
1558
|
+
*
|
|
1559
|
+
* Card component that displays PG routing or payment method breakdown.
|
|
1560
|
+
* Provides progress bar and detailed information for each segment.
|
|
1561
|
+
*
|
|
1562
|
+
* @component
|
|
1563
|
+
* @example
|
|
1564
|
+
* // 기본 사용 / Basic usage
|
|
1565
|
+
* <RoutingBreakdownCard
|
|
1566
|
+
* title="PG 라우팅 비중"
|
|
1567
|
+
* segments={[
|
|
1568
|
+
* { id: "pg1", label: "PG A", value: 5000, status: "normal" },
|
|
1569
|
+
* { id: "pg2", label: "PG B", value: 3000, status: "warning" },
|
|
1570
|
+
* { id: "pg3", label: "PG C", value: 2000, status: "normal" }
|
|
1571
|
+
* ]}
|
|
1572
|
+
* totalValue="10,000"
|
|
1573
|
+
* />
|
|
1574
|
+
*
|
|
1575
|
+
* @example
|
|
1576
|
+
* // 강조 기능 / Highlight feature
|
|
1577
|
+
* <RoutingBreakdownCard
|
|
1578
|
+
* segments={segments}
|
|
1579
|
+
* highlightId="pg1"
|
|
1580
|
+
* formatter={(segment, percentage) => (
|
|
1581
|
+
* <div>
|
|
1582
|
+
* <span>{segment.value.toLocaleString()}</span>
|
|
1583
|
+
* <span>{percentage}%</span>
|
|
1584
|
+
* </div>
|
|
1585
|
+
* )}
|
|
1586
|
+
* />
|
|
1587
|
+
*
|
|
1588
|
+
* @param {RoutingBreakdownCardProps} props - RoutingBreakdownCard 컴포넌트의 props / RoutingBreakdownCard component props
|
|
1589
|
+
* @returns {JSX.Element} RoutingBreakdownCard 컴포넌트 / RoutingBreakdownCard component
|
|
1590
|
+
*/
|
|
1591
|
+
declare const RoutingBreakdownCard: React.FC<RoutingBreakdownCardProps>;
|
|
1592
|
+
|
|
1593
|
+
type MerchantHealth = "normal" | "warning" | "critical";
|
|
1594
|
+
/**
|
|
1595
|
+
* 가맹점 리스트 아이템 인터페이스 / MerchantListItem interface
|
|
1596
|
+
* @typedef {Object} MerchantListItem
|
|
1597
|
+
* @property {string} id - 가맹점 고유 ID / Merchant unique ID
|
|
1598
|
+
* @property {string} name - 가맹점 이름 / Merchant name
|
|
1599
|
+
* @property {string} [status] - 상태 / Status
|
|
1600
|
+
* @property {MerchantHealth} [health] - 건강 상태 / Health status
|
|
1601
|
+
* @property {number} [approvalRate] - 승인률 (0-1) / Approval rate (0-1)
|
|
1602
|
+
* @property {number} [volume] - 거래량 / Transaction volume
|
|
1603
|
+
* @property {string} [currency] - 통화 / Currency
|
|
1604
|
+
* @property {string} [category] - 카테고리 / Category
|
|
1605
|
+
* @property {string} [region] - 지역 / Region
|
|
1606
|
+
* @property {string | Date} [updatedAt] - 업데이트 시간 / Updated time
|
|
1607
|
+
* @property {string} [tag] - 태그 / Tag
|
|
1608
|
+
* @property {IconName | React.ReactNode} [icon] - 아이콘 / Icon
|
|
1609
|
+
* @property {Array<{ label: string; value: React.ReactNode }>} [metadata] - 메타데이터 / Metadata
|
|
1610
|
+
*/
|
|
1611
|
+
interface MerchantListItem {
|
|
1612
|
+
id: string;
|
|
1613
|
+
name: string;
|
|
1614
|
+
status?: string;
|
|
1615
|
+
health?: MerchantHealth;
|
|
1616
|
+
approvalRate?: number;
|
|
1617
|
+
volume?: number;
|
|
1618
|
+
currency?: string;
|
|
1619
|
+
category?: string;
|
|
1620
|
+
region?: string;
|
|
1621
|
+
updatedAt?: string | Date;
|
|
1622
|
+
tag?: string;
|
|
1623
|
+
icon?: IconName | React.ReactNode;
|
|
1624
|
+
metadata?: Array<{
|
|
1625
|
+
label: string;
|
|
1626
|
+
value: React.ReactNode;
|
|
1627
|
+
}>;
|
|
1628
|
+
}
|
|
1629
|
+
/**
|
|
1630
|
+
* MerchantList 컴포넌트의 props / MerchantList component props
|
|
1631
|
+
* @typedef {Object} MerchantListProps
|
|
1632
|
+
* @property {MerchantListItem[]} items - 가맹점 아이템 배열 / Merchant items array
|
|
1633
|
+
* @property {boolean} [isLoading=false] - 로딩 상태 / Loading state
|
|
1634
|
+
* @property {React.ReactNode} [filters] - 필터 컴포넌트 / Filter component
|
|
1635
|
+
* @property {React.ReactNode} [emptyState] - 빈 상태 컴포넌트 / Empty state component
|
|
1636
|
+
* @property {(merchant: MerchantListItem) => void} [onMerchantSelect] - 가맹점 선택 핸들러 / Merchant selection handler
|
|
1637
|
+
* @property {string} [locale="ko-KR"] - 로케일 / Locale
|
|
1638
|
+
* @property {string} [defaultCurrency="KRW"] - 기본 통화 / Default currency
|
|
1639
|
+
* @extends {Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect">}
|
|
1640
|
+
*/
|
|
1641
|
+
interface MerchantListProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect"> {
|
|
1642
|
+
items: MerchantListItem[];
|
|
1643
|
+
isLoading?: boolean;
|
|
1644
|
+
filters?: React.ReactNode;
|
|
1645
|
+
emptyState?: React.ReactNode;
|
|
1646
|
+
onMerchantSelect?: (merchant: MerchantListItem) => void;
|
|
1647
|
+
locale?: string;
|
|
1648
|
+
defaultCurrency?: string;
|
|
1649
|
+
}
|
|
1650
|
+
/**
|
|
1651
|
+
* MerchantList 컴포넌트
|
|
1652
|
+
*
|
|
1653
|
+
* 가맹점 목록을 표시하는 컴포넌트입니다.
|
|
1654
|
+
* 가맹점 정보, 건강 상태, 승인률, 거래량 등을 카드 형태로 표시합니다.
|
|
1655
|
+
*
|
|
1656
|
+
* Component that displays a list of merchants.
|
|
1657
|
+
* Shows merchant information, health status, approval rate, and transaction volume in card format.
|
|
1658
|
+
*
|
|
1659
|
+
* @component
|
|
1660
|
+
* @example
|
|
1661
|
+
* // 기본 사용 / Basic usage
|
|
1662
|
+
* <MerchantList
|
|
1663
|
+
* items={[
|
|
1664
|
+
* {
|
|
1665
|
+
* id: "1",
|
|
1666
|
+
* name: "가맹점 A",
|
|
1667
|
+
* health: "normal",
|
|
1668
|
+
* approvalRate: 0.985,
|
|
1669
|
+
* volume: 1000000,
|
|
1670
|
+
* currency: "KRW"
|
|
1671
|
+
* }
|
|
1672
|
+
* ]}
|
|
1673
|
+
* onMerchantSelect={(merchant) => console.log(merchant)}
|
|
1674
|
+
* />
|
|
1675
|
+
*
|
|
1676
|
+
* @example
|
|
1677
|
+
* // 로딩 상태 / Loading state
|
|
1678
|
+
* <MerchantList
|
|
1679
|
+
* items={merchants}
|
|
1680
|
+
* isLoading={true}
|
|
1681
|
+
* filters={<FilterComponent />}
|
|
1682
|
+
* />
|
|
1683
|
+
*
|
|
1684
|
+
* @param {MerchantListProps} props - MerchantList 컴포넌트의 props / MerchantList component props
|
|
1685
|
+
* @returns {JSX.Element} MerchantList 컴포넌트 / MerchantList component
|
|
1686
|
+
*/
|
|
1687
|
+
declare const MerchantList: React.FC<MerchantListProps>;
|
|
1688
|
+
|
|
1689
|
+
/**
|
|
1690
|
+
* StatsPanelItem 인터페이스 / StatsPanelItem interface
|
|
1691
|
+
* @typedef {Object} StatsPanelItem
|
|
1692
|
+
* @property {string} label - 통계 항목 라벨 / Stat item label
|
|
1693
|
+
* @property {string | React.ReactNode} value - 통계 값 / Stat value
|
|
1694
|
+
* @property {string | React.ReactNode} [description] - 통계 설명 / Stat description
|
|
1695
|
+
* @property {"up" | "down" | "neutral"} [trend] - 추세 방향 / Trend direction
|
|
1696
|
+
* @property {string} [trendValue] - 추세 값 / Trend value
|
|
1697
|
+
* @property {"primary" | "secondary" | "neutral" | "warning"} [accent] - 강조 색상 / Accent color
|
|
1698
|
+
* @property {React.ReactNode} [icon] - 아이콘 / Icon
|
|
1699
|
+
*/
|
|
1700
|
+
interface StatsPanelItem {
|
|
1701
|
+
label: string;
|
|
1702
|
+
value: string | React.ReactNode;
|
|
1703
|
+
description?: string | React.ReactNode;
|
|
1704
|
+
trend?: "up" | "down" | "neutral";
|
|
1705
|
+
trendValue?: string;
|
|
1706
|
+
accent?: "primary" | "secondary" | "neutral" | "warning";
|
|
1707
|
+
icon?: React.ReactNode;
|
|
1708
|
+
}
|
|
1709
|
+
/**
|
|
1710
|
+
* StatsPanel 컴포넌트의 props / StatsPanel component props
|
|
1711
|
+
* @typedef {Object} StatsPanelProps
|
|
1712
|
+
* @property {string} [title] - 패널 제목 / Panel title
|
|
1713
|
+
* @property {StatsPanelItem[]} items - 통계 항목 배열 / Stat items array
|
|
1714
|
+
* @property {1 | 2 | 3 | 4} [columns=4] - 그리드 컬럼 수 / Grid column count
|
|
1715
|
+
* @property {boolean} [loading=false] - 로딩 상태 / Loading state
|
|
1716
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1717
|
+
*/
|
|
1718
|
+
interface StatsPanelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1719
|
+
title?: string;
|
|
1720
|
+
items: StatsPanelItem[];
|
|
1721
|
+
columns?: 1 | 2 | 3 | 4;
|
|
1722
|
+
loading?: boolean;
|
|
1723
|
+
}
|
|
1724
|
+
/**
|
|
1725
|
+
* StatsPanel 컴포넌트 / StatsPanel component
|
|
1726
|
+
*
|
|
1727
|
+
* 통계 정보를 표시하는 패널 컴포넌트입니다.
|
|
1728
|
+
* 여러 통계 항목을 그리드 형태로 표시하며, 추세 정보를 포함할 수 있습니다.
|
|
1729
|
+
*
|
|
1730
|
+
* Panel component that displays statistics.
|
|
1731
|
+
* Shows multiple stat items in grid format and can include trend information.
|
|
1732
|
+
*
|
|
1733
|
+
* @component
|
|
1734
|
+
* @example
|
|
1735
|
+
* // 기본 사용 / Basic usage
|
|
1736
|
+
* <StatsPanel
|
|
1737
|
+
* items={[
|
|
1738
|
+
* { label: "총 사용자", value: "1,234", trend: "up", trendValue: "+12%" },
|
|
1739
|
+
* { label: "활성 사용자", value: "567", trend: "down", trendValue: "-5%" }
|
|
1740
|
+
* ]}
|
|
1741
|
+
* />
|
|
1742
|
+
*
|
|
1743
|
+
* @example
|
|
1744
|
+
* // 2열 그리드, 제목 포함 / 2-column grid with title
|
|
1745
|
+
* <StatsPanel
|
|
1746
|
+
* title="통계"
|
|
1747
|
+
* columns={2}
|
|
1748
|
+
* items={[
|
|
1749
|
+
* { label: "항목 1", value: "100", accent: "primary" },
|
|
1750
|
+
* { label: "항목 2", value: "200", accent: "secondary" }
|
|
1751
|
+
* ]}
|
|
1752
|
+
* />
|
|
1753
|
+
*
|
|
1754
|
+
* @param {StatsPanelProps} props - StatsPanel 컴포넌트의 props / StatsPanel component props
|
|
1755
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1756
|
+
* @returns {JSX.Element} StatsPanel 컴포넌트 / StatsPanel component
|
|
1757
|
+
*/
|
|
1758
|
+
declare const StatsPanel: React.ForwardRefExoticComponent<StatsPanelProps & React.RefAttributes<HTMLDivElement>>;
|
|
1759
|
+
|
|
1760
|
+
/**
|
|
1761
|
+
* SectionHeader 컴포넌트의 props / SectionHeader component props
|
|
1762
|
+
* @typedef {Object} SectionHeaderProps
|
|
1763
|
+
* @property {string} title - 섹션 제목 / Section title
|
|
1764
|
+
* @property {string} [description] - 섹션 설명 / Section description
|
|
1765
|
+
* @property {React.ReactNode} [action] - 액션 버튼 또는 요소 / Action button or element
|
|
1766
|
+
* @extends {React.HTMLAttributes<HTMLDivElement>}
|
|
1767
|
+
*/
|
|
1768
|
+
interface SectionHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1769
|
+
title: string;
|
|
1770
|
+
description?: string;
|
|
1771
|
+
action?: React.ReactNode;
|
|
1772
|
+
}
|
|
1773
|
+
/**
|
|
1774
|
+
* SectionHeader 컴포넌트 / SectionHeader component
|
|
1775
|
+
*
|
|
1776
|
+
* 섹션의 헤더를 표시하는 컴포넌트입니다.
|
|
1777
|
+
* 제목, 설명, 액션 버튼을 포함할 수 있습니다.
|
|
1778
|
+
*
|
|
1779
|
+
* Component that displays section header.
|
|
1780
|
+
* Can include title, description, and action button.
|
|
1781
|
+
*
|
|
1782
|
+
* @component
|
|
1783
|
+
* @example
|
|
1784
|
+
* // 기본 사용 / Basic usage
|
|
1785
|
+
* <SectionHeader title="섹션 제목" />
|
|
1786
|
+
*
|
|
1787
|
+
* @example
|
|
1788
|
+
* // 설명과 액션 포함 / With description and action
|
|
1789
|
+
* <SectionHeader
|
|
1790
|
+
* title="알림"
|
|
1791
|
+
* description="최근 알림 목록"
|
|
1792
|
+
* action={<Button>모두 읽음</Button>}
|
|
1793
|
+
* />
|
|
1794
|
+
*
|
|
1795
|
+
* @param {SectionHeaderProps} props - SectionHeader 컴포넌트의 props / SectionHeader component props
|
|
1796
|
+
* @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref
|
|
1797
|
+
* @returns {JSX.Element} SectionHeader 컴포넌트 / SectionHeader component
|
|
1798
|
+
*/
|
|
1799
|
+
declare const SectionHeader: React.ForwardRefExoticComponent<SectionHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
1800
|
+
|
|
1801
|
+
export { type TransactionDetail as $, ActivityFeed as A, type DashboardSidebarProps as B, type Color as C, DashboardGrid as D, type SidebarNavItem as E, type SidebarSection as F, type TransactionsTableProps as G, type TransactionRow as H, type TransactionColumnConfig as I, type TransactionColumnKey as J, type TransactionStatus as K, DashboardToolbar as L, type MembershipTier as M, NotificationCard as N, type DashboardToolbarProps as O, ProfileCard as P, QuickActionCard as Q, type ToolbarAction as R, StatsPanel as S, TransactionsTable as T, type DateRangeConfig as U, type DatePreset as V, TrendChart as W, type TrendChartProps as X, type TrendSeries as Y, TransactionDetailDrawer as Z, type TransactionDetailDrawerProps as _, type StatsPanelProps as a, type TransactionMetadataItem as a0, type SettlementInfo as a1, type FeeBreakdown as a2, type TransactionEvent as a3, SettlementTimeline as a4, type SettlementTimelineProps as a5, type SettlementTimelineItem as a6, type SettlementTimelineStatus as a7, RoutingBreakdownCard as a8, type RoutingBreakdownCardProps as a9, type RoutingBreakdownSegment as aa, MerchantList as ab, type MerchantListProps as ac, type MerchantListItem as ad, type MerchantHealth as ae, type StatsPanelItem as b, SectionHeader as c, type SectionHeaderProps as d, StatCard as e, type StatCardProps as f, type QuickActionCardProps as g, type DashboardGridProps as h, type ActivityFeedProps as i, type ActivityItem as j, type ProfileCardProps as k, MembershipBadge as l, type MembershipBadgeProps as m, MiniBarChart as n, type MiniBarChartProps as o, SummaryCard as p, type SummaryCardProps as q, type NotificationCardProps as r, type NotificationItem as s, MetricCard as t, type MetricCardProps as u, ProgressCard as v, type ProgressCardProps as w, DashboardEmptyState as x, type DashboardEmptyStateProps as y, DashboardSidebar as z };
|