@@ -2,25 +2,26 @@ import { Button } from '@/components/ui/button';
22import { servicesApi , useServices } from '@/shared/api' ;
33import { CreateServiceRequest , Service } from '@/shared/api/services' ;
44import { useToastContext } from '@/shared/contexts' ;
5+ import { useTutorialStore } from '@/shared/stores/tutorial-store' ;
56import { Card } from '@/shared/ui/card/card' ;
67import { Layout } from '@/widgets/layout' ;
78import { useMutation , useQueryClient } from '@tanstack/react-query' ;
89import {
9- AlertTriangle ,
10- Container ,
11- Database ,
12- Globe ,
13- Minus ,
14- Monitor ,
15- Network ,
16- Play ,
17- Plus ,
18- RefreshCw ,
19- Server ,
20- Settings ,
21- Square ,
22- Trash2 ,
23- Zap
10+ AlertTriangle ,
11+ Container ,
12+ Database ,
13+ Globe ,
14+ Minus ,
15+ Monitor ,
16+ Network ,
17+ Play ,
18+ Plus ,
19+ RefreshCw ,
20+ Server ,
21+ Settings ,
22+ Square ,
23+ Trash2 ,
24+ Zap
2425} from 'lucide-react' ;
2526import { useState } from 'react' ;
2627import { useNavigate } from 'react-router-dom' ;
@@ -29,7 +30,8 @@ export const ServicesPage = () => {
2930 const navigate = useNavigate ( ) ;
3031 const queryClient = useQueryClient ( ) ;
3132 const { showSuccess, showError, showWarning } = useToastContext ( ) ;
32- const [ showCreateForm , setShowCreateForm ] = useState ( false ) ;
33+ const serviceCreateFormOpen = useTutorialStore ( ( s ) => s . serviceCreateFormOpen ) ;
34+ const setServiceCreateFormOpen = useTutorialStore ( ( s ) => s . setServiceCreateFormOpen ) ;
3335 const [ newServiceName , setNewServiceName ] = useState ( '' ) ;
3436 const [ newServiceImage , setNewServiceImage ] = useState ( 'nginx:latest' ) ;
3537
@@ -46,7 +48,7 @@ export const ServicesPage = () => {
4648 onSuccess : ( ) => {
4749 queryClient . invalidateQueries ( { queryKey : [ 'services' ] } ) ;
4850 showSuccess ( '서비스가 성공적으로 생성되었습니다.' ) ;
49- setShowCreateForm ( false ) ;
51+ setServiceCreateFormOpen ( false ) ;
5052 setNewServiceName ( '' ) ;
5153 setNewServiceImage ( 'nginx:latest' ) ;
5254 } ,
@@ -211,7 +213,7 @@ export const ServicesPage = () => {
211213 새로고침
212214 </ Button >
213215 < Button
214- onClick = { ( ) => setShowCreateForm ( ! showCreateForm ) }
216+ onClick = { ( ) => setServiceCreateFormOpen ( ! serviceCreateFormOpen ) }
215217 className = "flex items-center gap-2"
216218 data-tour = "create-service-button"
217219 >
@@ -222,7 +224,7 @@ export const ServicesPage = () => {
222224 </ div >
223225
224226 { /* 서비스 생성 폼 */ }
225- { showCreateForm && (
227+ { serviceCreateFormOpen && (
226228 < Card className = "p-6" data-tour = "service-create-form" >
227229 < h3 className = "text-lg font-semibold mb-4 flex items-center gap-2" >
228230 < Plus className = "w-5 h-5" />
@@ -289,26 +291,20 @@ export const ServicesPage = () => {
289291 </ div >
290292 </ div >
291293
292- < div className = "flex items-center gap-3 mt-6" >
293- < Button
294- onClick = { handleCreateService }
295- disabled = { createServiceMutation . isPending }
296- className = "flex items-center gap-2"
297- data-tour = "submit-service-button"
298- >
299- { createServiceMutation . isPending ? (
300- < RefreshCw className = "w-4 h-4 animate-spin" />
301- ) : (
302- < Plus className = "w-4 h-4" />
303- ) }
304- 생성
305- </ Button >
306- < Button
307- onClick = { ( ) => setShowCreateForm ( false ) }
294+ < div className = "flex justify-end gap-2 mt-6" >
295+ < Button
308296 variant = "outline"
297+ onClick = { ( ) => setServiceCreateFormOpen ( false ) }
309298 >
310299 취소
311300 </ Button >
301+ < Button
302+ onClick = { handleCreateService }
303+ data-tour = "submit-service-button"
304+ disabled = { createServiceMutation . isPending }
305+ >
306+ { createServiceMutation . isPending ? '생성 중...' : '생성' }
307+ </ Button >
312308 </ div >
313309 </ Card >
314310 ) }
@@ -419,6 +415,12 @@ export const ServicesPage = () => {
419415 >
420416 { service . replicas || 1 }
421417 </ span >
418+ < span
419+ className = "sr-only"
420+ data-tour = "confirm-scale-up"
421+ >
422+ 스케일업 완료 튜토리얼 타겟
423+ </ span >
422424 < Button
423425 size = "sm"
424426 variant = "ghost"
@@ -487,7 +489,7 @@ export const ServicesPage = () => {
487489 첫 번째 서비스를 생성하여 애플리케이션을 배포해보세요.
488490 </ p >
489491 < Button
490- onClick = { ( ) => setShowCreateForm ( true ) }
492+ onClick = { ( ) => setServiceCreateFormOpen ( true ) }
491493 className = "flex items-center gap-2"
492494 >
493495 < Plus className = "w-4 h-4" />
0 commit comments