@opsnow-mcp/opsnow-mcp-common-ui-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -0
- package/build/components/data/icon-names.js +129 -0
- package/build/components/examples/opsnow-common-calendar-examples-data.js +48 -0
- package/build/components/examples/opsnow-common-chart-examples-data.js +5983 -0
- package/build/components/examples/opsnow-common-data-status-examples-data.js +65 -0
- package/build/components/examples/opsnow-common-file-upload-examples-data.js +95 -0
- package/build/components/examples/opsnow-common-forms-examples-data.js +1454 -0
- package/build/components/examples/opsnow-common-grid-examples-data.js +1888 -0
- package/build/components/examples/opsnow-common-icons-examples-data.js +72 -0
- package/build/components/examples/opsnow-common-layout-examples-data.js +60 -0
- package/build/components/examples/opsnow-common-notification-examples-data.js +78 -0
- package/build/components/examples/opsnow-common-pagination-examples-data.js +82 -0
- package/build/components/examples/opsnow-common-popup-examples-data.js +173 -0
- package/build/components/examples/opsnow-common-progress-examples-data.js +86 -0
- package/build/components/examples/opsnow-common-select-examples-data.js +106 -0
- package/build/components/examples/opsnow-common-stepper-examples-data.js +180 -0
- package/build/components/examples/opsnow-common-storage-examples-data.js +8 -0
- package/build/components/examples/opsnow-common-tab-examples-data.js +82 -0
- package/build/components/examples/opsnow-common-toast-popup-examples-data.js +129 -0
- package/build/components/examples/opsnow-common-tooltip-examples-data.js +80 -0
- package/build/components/examples/opsnow-common-typography-examples-data.js +334 -0
- package/build/components/opsnow-common-calendar.js +228 -0
- package/build/components/opsnow-common-chart.js +1507 -0
- package/build/components/opsnow-common-data-status.js +116 -0
- package/build/components/opsnow-common-examples.js +108 -0
- package/build/components/opsnow-common-file-upload.js +57 -0
- package/build/components/opsnow-common-forms.js +812 -0
- package/build/components/opsnow-common-grid.js +213 -0
- package/build/components/opsnow-common-icons.js +139 -0
- package/build/components/opsnow-common-layout.js +70 -0
- package/build/components/opsnow-common-notification.js +109 -0
- package/build/components/opsnow-common-pagination.js +163 -0
- package/build/components/opsnow-common-popup.js +71 -0
- package/build/components/opsnow-common-progress.js +177 -0
- package/build/components/opsnow-common-select.js +132 -0
- package/build/components/opsnow-common-stepper.js +72 -0
- package/build/components/opsnow-common-tab.js +111 -0
- package/build/components/opsnow-common-toast-popup.js +135 -0
- package/build/components/opsnow-common-tooltip.js +213 -0
- package/build/components/opsnow-common-typography.js +93 -0
- package/build/index.js +75 -0
- package/package.json +41 -0
package/README.md
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# OpsNow MCP Common UI Server
|
|
2
|
+
|
|
3
|
+
## 소개
|
|
4
|
+
OpsNow MCP Common UI는 AI를 활용하여 다양한 웹 UI 프로젝트의 코드를 자동으로 생성하고 관리할 수 있는 MCP(Model Context Protocol) 서버입니다. 반복적인 UI 개발을 자동화하고 표준화합니다.
|
|
5
|
+
|
|
6
|
+
## 주요 기능
|
|
7
|
+
- AI 기반 웹 UI 코드 및 컴포넌트 자동 생성
|
|
8
|
+
- MCP 프로토콜을 통한 표준화된 인터페이스 제공
|
|
9
|
+
- 18개의 공통 UI 컴포넌트 지원
|
|
10
|
+
|
|
11
|
+
## 프로젝트 구조
|
|
12
|
+
```
|
|
13
|
+
src/
|
|
14
|
+
├── index.ts # 메인 MCP 서버 진입점
|
|
15
|
+
└── components/ # 개별 컴포넌트 정의
|
|
16
|
+
├── opsnow-common-calendar.ts
|
|
17
|
+
├── opsnow-common-chart.ts
|
|
18
|
+
├── opsnow-common-data-status.ts
|
|
19
|
+
├── opsnow-common-dropdown.ts
|
|
20
|
+
├── opsnow-common-file-upload.ts
|
|
21
|
+
├── opsnow-common-forms.ts
|
|
22
|
+
├── opsnow-common-grid.ts
|
|
23
|
+
├── opsnow-common-icons.ts
|
|
24
|
+
├── opsnow-common-notification.ts
|
|
25
|
+
├── opsnow-common-pagination.ts
|
|
26
|
+
├── opsnow-common-popup.ts
|
|
27
|
+
├── opsnow-common-progress.ts
|
|
28
|
+
├── opsnow-common-stepper.ts
|
|
29
|
+
├── opsnow-common-storage.ts
|
|
30
|
+
├── opsnow-common-tab.ts
|
|
31
|
+
├── opsnow-common-tooltip.ts
|
|
32
|
+
├── opsnow-finops-common-axios.ts
|
|
33
|
+
└── opsnow-finops-common-utils.ts
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 지원 컴포넌트
|
|
37
|
+
### UI 컴포넌트
|
|
38
|
+
- **opsnow-common-calendar**: 캘린더 컴포넌트 - 날짜 선택 및 이벤트 관리
|
|
39
|
+
- **opsnow-common-chart**: 차트 컴포넌트 - 다양한 타입의 데이터 시각화
|
|
40
|
+
- **opsnow-common-data-status**: 데이터 상태 컴포넌트 - 로딩, 성공, 에러, 빈 상태 표시
|
|
41
|
+
- **opsnow-common-dropdown**: 드롭다운 컴포넌트 - 옵션 선택 인터페이스
|
|
42
|
+
- **opsnow-common-file-upload**: 파일 업로드 컴포넌트 - 파일 선택 및 업로드 기능
|
|
43
|
+
- **opsnow-common-forms**: 폼 컴포넌트 - 다양한 입력 필드와 유효성 검사
|
|
44
|
+
- **opsnow-common-grid**: 그리드 컴포넌트 - 데이터 테이블 표시 및 관리
|
|
45
|
+
- **opsnow-common-icons**: 아이콘 컴포넌트 - 다양한 아이콘 표시
|
|
46
|
+
- **opsnow-common-notification**: 알림 컴포넌트 - 토스트 메시지 및 알림 표시
|
|
47
|
+
- **opsnow-common-pagination**: 페이지네이션 컴포넌트 - 페이지 이동 및 크기 조절
|
|
48
|
+
- **opsnow-common-popup**: 팝업 컴포넌트 - 모달 다이얼로그 표시
|
|
49
|
+
- **opsnow-common-progress**: 진행률 컴포넌트 - 작업 진행 상황 표시
|
|
50
|
+
- **opsnow-common-stepper**: 스텝퍼 컴포넌트 - 단계별 진행 상황 표시
|
|
51
|
+
- **opsnow-common-storage**: 스토리지 컴포넌트 - 로컬/세션 스토리지 및 쿠키 관리
|
|
52
|
+
- **opsnow-common-tab**: 탭 컴포넌트 - 탭 인터페이스 및 콘텐츠 관리
|
|
53
|
+
- **opsnow-common-tooltip**: 툴팁 컴포넌트 - 요소에 대한 추가 정보 표시
|
|
54
|
+
|
|
55
|
+
### FinOps 컴포넌트
|
|
56
|
+
- **opsnow-finops-common-axios**: Axios 컴포넌트 - HTTP 요청 처리 및 응답 관리
|
|
57
|
+
- **opsnow-finops-common-utils**: 유틸리티 컴포넌트 - 공통 유틸리티 함수들 (포맷팅, 검증, 생성 등)
|
|
58
|
+
|
|
59
|
+
## 기술 스택
|
|
60
|
+
- **Node.js**: 서버 런타임
|
|
61
|
+
- **TypeScript**: 타입 안전성과 개발자 경험 향상
|
|
62
|
+
- **MCP SDK**: Model Context Protocol 구현
|
|
63
|
+
- **Zod**: 스키마 검증 및 타입 정의
|
|
64
|
+
|
|
65
|
+
## 설치 및 시작 방법
|
|
66
|
+
|
|
67
|
+
### 1. 저장소 클론
|
|
68
|
+
```bash
|
|
69
|
+
git clone <이 저장소 주소>
|
|
70
|
+
cd opsnow-mcp-common-ui
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 2. 패키지 설치
|
|
74
|
+
```bash
|
|
75
|
+
npm install
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3. MCP 서버 실행
|
|
79
|
+
```bash
|
|
80
|
+
npm start
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
### 5. 빌드 후 실행 테스트
|
|
85
|
+
```bash
|
|
86
|
+
npm run build && npm start
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## MCP 도구 사용 예시
|
|
90
|
+
각 컴포넌트는 MCP 도구로 등록되어 AI 어시스턴트가 직접 호출할 수 있습니다:
|
|
91
|
+
|
|
92
|
+
- "캘린더 컴포넌트를 생성해줘"
|
|
93
|
+
- "차트 컴포넌트로 데이터를 시각화해줘"
|
|
94
|
+
- "폼 컴포넌트로 사용자 입력을 받아줘"
|
|
95
|
+
- "그리드 컴포넌트로 데이터를 표시해줘"
|
|
96
|
+
|
|
97
|
+
## 라이선스
|
|
98
|
+
MIT License - 누구나 자유롭게 사용할 수 있습니다.
|
|
99
|
+
|
|
100
|
+
## 기여하기
|
|
101
|
+
1. Fork the repository
|
|
102
|
+
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
103
|
+
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
|
104
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
105
|
+
5. Open a Pull Request
|
|
106
|
+
|
|
107
|
+
## MCP 플랫폼에 서버 추가 방법
|
|
108
|
+
|
|
109
|
+
### 1. 프로젝트 빌드
|
|
110
|
+
```bash
|
|
111
|
+
npm run build
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 2. MCP 설정에 서버 등록
|
|
115
|
+
MCP 플랫폼의 설정 파일(예: `mcp.config.json` 또는 유사 파일)에 아래와 같이 서버를 추가하세요:
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"mcpServers": {
|
|
120
|
+
"opsnow-mcp-common-ui-server": {
|
|
121
|
+
"command": "node",
|
|
122
|
+
"args": [
|
|
123
|
+
"/Users/xxxx/myProject/opsnow-mcp-common-ui-server/build/index.js"
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
- `command`: MCP 서버를 실행할 명령어 (여기서는 node)
|
|
131
|
+
- `args`: 빌드된 index.js의 절대 경로
|
|
132
|
+
|
|
133
|
+
### 3. MCP 플랫폼에서 서버 인식 확인
|
|
134
|
+
MCP 플랫폼을 재시작하거나 서버 목록을 새로고침하면, `opsnow-mcp-common-ui-server`가 정상적으로 등록되어야 합니다.
|
|
135
|
+
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// 아이콘 카테고리 정의
|
|
2
|
+
export const IconCategories = {
|
|
3
|
+
'AI/기술': ['AiBot', 'AiBrain', 'AiChip', 'CloudAi', 'ChipLine', 'ChipSparkLine', 'Code', 'BrowserCode'],
|
|
4
|
+
'알림/경고': [
|
|
5
|
+
'AlertBellNewalarmOutline', 'AlertBellOutline', 'AlertMessage', 'AlertWarningCircleFilled',
|
|
6
|
+
'WarningTriangleFilled', 'WarningTriangleOutline', 'InfoCircleFiller', 'InfoCircleOutline',
|
|
7
|
+
'DangerousZoneSign'
|
|
8
|
+
],
|
|
9
|
+
'화살표': [
|
|
10
|
+
'ArrowBoth', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowUp',
|
|
11
|
+
'ArrowBothHorizontalCircleFiller', 'ArrowBothVerticalCircleOutline', 'ArrowCircle',
|
|
12
|
+
'ArrowDownDotCircle', 'ArrowLeftRightSquare', 'ArrowLeftWall', 'ArrowLogout',
|
|
13
|
+
'ArrowReceive', 'ArrowRecycle', 'ArrowRedo', 'ArrowReload', 'ArrowRightWall',
|
|
14
|
+
'ArrowTransfer', 'ArrowTwoSide', 'ArrowUndo', 'ArrowUpDotCircle',
|
|
15
|
+
'ArrowUpDownSquare', 'ArrowUpperRight', 'ArrowWall', 'ArrowWallUp',
|
|
16
|
+
'ChevronDown', 'ChevronLeft', 'ChevronRight', 'ChevronUp',
|
|
17
|
+
'ChevronDoubleDown', 'ChevronDoubleLeft', 'ChevronDoubleLeftSm',
|
|
18
|
+
'ChevronDoubleRight', 'ChevronDoubleRightSm', 'ChevronDoubleUp',
|
|
19
|
+
'ChevronDownSm', 'ChevronLeftRight', 'ChevronLeftSm', 'ChevronRightSm',
|
|
20
|
+
'ChevronRightUp'
|
|
21
|
+
],
|
|
22
|
+
'문서/파일': [
|
|
23
|
+
'Document2', 'DocumentArrowDown', 'DocumentArrowUp', 'DocumentCheck',
|
|
24
|
+
'DocumentCopyFiles', 'DocumentPenText', 'DocumentPlus', 'DocumentSearch',
|
|
25
|
+
'DocumentSetting', 'DocumentText', 'DocumentTextAlignLeft1', 'DocumentTextAlignLeft2',
|
|
26
|
+
'DocumentX', 'DoucumentSquare', 'EnvelopeDocument', 'FolderDocument',
|
|
27
|
+
'FolderEmpty', 'FolderLine', 'FolderObject', 'FolderX'
|
|
28
|
+
],
|
|
29
|
+
'사용자': [
|
|
30
|
+
'User', 'UserCircle', 'UserMembers', 'UserMultiOrgCircle', 'UserPlus',
|
|
31
|
+
'UserSecurity', 'UserStory', 'CustomerSupport'
|
|
32
|
+
],
|
|
33
|
+
'클라우드/서버/DB': [
|
|
34
|
+
'Cloud', 'CloudLink', 'CloudPlus', 'CloudSecurity', 'CloudWarning',
|
|
35
|
+
'Db', 'DbCpuChip', 'DbHardDriveDisk', 'DbHardDriveDiskSdCard', 'DbNetwork',
|
|
36
|
+
'DbServer', 'DbServer2', 'DbSetting', 'CoinsDb', 'Webhook'
|
|
37
|
+
],
|
|
38
|
+
'그래프/차트/데이터': [
|
|
39
|
+
'GraphArrowUp', 'GraphBar1', 'GraphBar2', 'GraphBarHorizontal', 'GraphBaseline',
|
|
40
|
+
'GraphCandle', 'GraphLine1', 'GraphLine2', 'GraphLineAverage', 'GraphScatter',
|
|
41
|
+
'GuageGraph', 'GuageScore', 'HealtyGraphHygiene', 'Asc', 'Desc'
|
|
42
|
+
],
|
|
43
|
+
'로고': [
|
|
44
|
+
'LogoAndroid', 'LogoApple', 'LogoAws', 'LogoAws2', 'LogoAzure',
|
|
45
|
+
'LogoEmailOpsnow', 'LogoExcel', 'LogoFacebook1', 'LogoFacebook2',
|
|
46
|
+
'LogoGcp', 'LogoGoogle', 'LogoLinkedin', 'LogoOracle', 'LogoSymbolOpsnowbg',
|
|
47
|
+
'LogoUnity', 'LogoWindows', 'LogoYoutube'
|
|
48
|
+
],
|
|
49
|
+
'금융/화폐': [
|
|
50
|
+
'MoneyBill', 'MoneyBill2', 'MoneyCircle', 'MoneyDocument',
|
|
51
|
+
'MoneyDocumentTwotone', 'MoneyDollar', 'DollarRotate', 'PocketMoney',
|
|
52
|
+
'CreditCard', 'CreditCardTwotone'
|
|
53
|
+
],
|
|
54
|
+
'보안/인증': [
|
|
55
|
+
'Security', 'SecurityPhoneLock', 'SecurityShield1', 'SecurityShield2',
|
|
56
|
+
'Key2', 'KeySimple', 'PasswordCheck'
|
|
57
|
+
],
|
|
58
|
+
'상태/표시': [
|
|
59
|
+
'Check1', 'Check2', 'CheckCircleArrrow', 'CheckCircleFiller',
|
|
60
|
+
'CloseLg', 'CloseSm', 'Plus', 'Minus', 'PlusCircleFilled', 'PlusCircleOutline',
|
|
61
|
+
'MinusCircleOutline', 'XCircleOutline', 'XClosedFilled', 'Loading',
|
|
62
|
+
'LoadingWaiting', 'InProgressLoading'
|
|
63
|
+
],
|
|
64
|
+
'모듈/구성요소': [
|
|
65
|
+
'Module3shape', 'ModuleCheck', 'ModuleComponent', 'ModuleDashboard1',
|
|
66
|
+
'ModuleDashboard2', 'ModuleOrganization', 'BoardModuleHorizontal',
|
|
67
|
+
'BoardModuleVerticalFilled', 'BoardModuleVerticalOutline'
|
|
68
|
+
],
|
|
69
|
+
'인터페이스/UI': [
|
|
70
|
+
'MenuHamburger', 'MenuKebab', 'SixDots', 'MoreCircleFilled', 'MoreCircleOutline',
|
|
71
|
+
'Setting', 'SettingRotate', 'SliderHorizontal', 'SliderVertical',
|
|
72
|
+
'ToggleConfigration', 'List', 'NoItem', 'None', 'Target', 'Speaker',
|
|
73
|
+
'CircleFocus', 'FocusScope', 'Lightbulb', 'Link', 'LinkBold'
|
|
74
|
+
],
|
|
75
|
+
'편집/수정': [
|
|
76
|
+
'PenEditFilled', 'PenEditOutline', 'EditWrenchFix', 'DeleteBin1',
|
|
77
|
+
'DeleteBin2', 'DeleteBinFilled', 'DeleteSquare', 'UndoDeleteBin'
|
|
78
|
+
],
|
|
79
|
+
'네비게이션/이동': [
|
|
80
|
+
'Stairs', 'StairsUp', 'SquareDown', 'SquareLayer', 'SquareMinusDrilldown',
|
|
81
|
+
'SquareMove', 'SquarePlusDrilldown', 'Square_downArrow', 'Square_upArrow',
|
|
82
|
+
'Square_upChevron', 'TriangleDown', 'TriangleRight', 'TriangleUp',
|
|
83
|
+
'TriangleUpdown'
|
|
84
|
+
],
|
|
85
|
+
'시간/진행': [
|
|
86
|
+
'Clock', 'ClockLapse', 'Calendar', 'CalendarNumber', 'CalendarRetired',
|
|
87
|
+
'CalendarTwotone', 'Synch1', 'Synch2', 'RotateLeft', 'RotateRi',
|
|
88
|
+
'RotateRightCircle', 'RotateSp'
|
|
89
|
+
],
|
|
90
|
+
'기타': [
|
|
91
|
+
'Battery', 'BookmarkFilled', 'BookmarkOutline', 'BubbleEmpty',
|
|
92
|
+
'BubbleQuestion', 'BubbleText', 'Building', 'BuyShoppingCart',
|
|
93
|
+
'BagBuyShopping', 'BagBuyShoppingCheck', 'Depth', 'Door', 'DotCircle',
|
|
94
|
+
'DotOne', 'Download', 'Equal', 'EyeClosed', 'EyeOpen', 'Filter',
|
|
95
|
+
'Filter2', 'FilterClear', 'Gauge', 'HealthHeart', 'Hierarchy',
|
|
96
|
+
'InfinityLoof', 'InventoryBox', 'Percent', 'PowerCircle', 'PowerTriangle',
|
|
97
|
+
'QuestionCircleOutline', 'Rocket', 'RulerMeasure', 'SearchMagnifier',
|
|
98
|
+
'SearchMagnifierChart', 'SendMessageAirplaneFilled', 'SendMessageAirplaneOutline',
|
|
99
|
+
'SquareDotline', 'Stamp', 'Star', 'StarScore', 'TableCenter', 'TableLeft',
|
|
100
|
+
'Tag', 'TagFilled', 'TagHalf', 'TagName', 'TagNo', 'TagValue',
|
|
101
|
+
'Temperature', 'WebEarth', 'WebMonitoring', 'Wifi'
|
|
102
|
+
],
|
|
103
|
+
'감정/표정': [
|
|
104
|
+
'FaceBad', 'FaceBadFilled', 'FaceHappy', 'FaceHappyFilled',
|
|
105
|
+
'FaceSoso', 'FaceSosoFilled', 'FaceVeryBad', 'FaceVeryBadFilled',
|
|
106
|
+
'FaceVeryHappy', 'FaceVeryHappyFilled'
|
|
107
|
+
]
|
|
108
|
+
};
|
|
109
|
+
// 모든 아이콘 이름을 포함하는 맵 생성
|
|
110
|
+
export const IconNamesMap = Object.values(IconCategories).reduce((acc, icons) => {
|
|
111
|
+
icons.forEach(icon => {
|
|
112
|
+
acc[icon] = icon;
|
|
113
|
+
});
|
|
114
|
+
return acc;
|
|
115
|
+
}, {});
|
|
116
|
+
// 카테고리별 설명 생성 함수
|
|
117
|
+
export function generateIconDescription(options = {}) {
|
|
118
|
+
const { format = 'flat', separator = ', ' } = options;
|
|
119
|
+
if (format === 'flat') {
|
|
120
|
+
return "아이콘 이름 (사용 가능한 아이콘 목록)\n" +
|
|
121
|
+
Object.entries(IconCategories)
|
|
122
|
+
.map(([category, icons]) => `- ${category}: ${icons.join(separator)}`)
|
|
123
|
+
.join('\n');
|
|
124
|
+
}
|
|
125
|
+
return "아이콘 이름 (카테고리별 사용 가능한 아이콘 목록)\n\n" +
|
|
126
|
+
Object.entries(IconCategories)
|
|
127
|
+
.map(([category, icons]) => `${category}:\n - ${icons.join('\n - ')}`)
|
|
128
|
+
.join('\n\n');
|
|
129
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Calendar 컴포넌트 예제 데이터
|
|
2
|
+
export const CalendarExamples = [
|
|
3
|
+
{
|
|
4
|
+
title: "dateRange",
|
|
5
|
+
code: `<OpsnowCommonCalendar type="dateRange" />`,
|
|
6
|
+
description: "날짜 범위 선택이 가능한 달력 예제입니다.",
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
title: "date",
|
|
10
|
+
code: `<OpsnowCommonCalendar type="date" />`,
|
|
11
|
+
description: "단일 날짜 선택이 가능한 달력 예제입니다.",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
title: "date-minDate-maxDate",
|
|
15
|
+
code: `<OpsnowCommonCalendar type="date" minDate={dayjs('YYYY-MM-DD')} maxDate={dayjs('YYYY-MM-DD')} />`,
|
|
16
|
+
description: "단일 날짜 선택이 가능한 달력 예제입니다. 최소 최대 날짜를 설정할 수 있습니다.",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
title: "dateRange-minDate-maxDate",
|
|
20
|
+
code: `<OpsnowCommonCalendar type="dateRange" minDate={dayjs('YYYY-MM-DD')} maxDate={dayjs('YYYY-MM-DD')} />`,
|
|
21
|
+
description: "날짜 범위 선택이 가능한 달력 예제입니다. 최소 최대 날짜를 설정할 수 있습니다.",
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
title: "dateTimeRange",
|
|
25
|
+
code: `<OpsnowCommonCalendar type="dateTimeRange" />`,
|
|
26
|
+
description: "날짜 + 시간 조합으로 범위 선택이 가능한 달력 예제입니다.",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
title: "dateTimeRange-useShortcuts",
|
|
30
|
+
code: `<OpsnowCommonCalendar type="dateTimeRange" useShortcuts/>`,
|
|
31
|
+
description: "날짜 범위 선택이 가능한 달력 예제입니다. 지난 3개월과 같은 기본 쇼트컷을 사용할 수 있습니다.",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
title: "dateTimeRange-customShortcuts",
|
|
35
|
+
code: `<OpsnowCommonCalendar type="dateTimeRange" useShortcuts customShortcuts={customShortcuts} />`,
|
|
36
|
+
description: "날짜 범위 선택이 가능한 달력 예제입니다. 원하는 쇼트컷을 추가하여 사용할 수 있습니다.",
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: "dateTime",
|
|
40
|
+
code: `<OpsnowCommonCalendar type="dateTime" />`,
|
|
41
|
+
description: "단일 날짜 + 시간 조합으로 선택이 가능한 달력 예제입니다.",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "dateTime-minDate-maxDate",
|
|
45
|
+
code: `<OpsnowCommonCalendar type="dateTime" minDate={dayjs('YYYY-MM-DD')} maxDate={dayjs('YYYY-MM-DD')} />`,
|
|
46
|
+
description: "단일 날짜 + 시간 조합으로 선택이 가능한 달력 예제입니다. 최소 최대 날짜를 설정할 수 있습니다.",
|
|
47
|
+
},
|
|
48
|
+
];
|