feat: integrate dimentorin pages with real API, convert modals to pages

Roadmap: integrated with /v1/landing/cms/roadmap API (was dummy data)
- Created roadmap service layer (types, API, hooks)
- List page with search/filter, create/edit as dedicated pages

Session: converted modal detail to dedicated /session-dimentorin/$id page
Users: converted modal detail/delete to dedicated /users-dimentorin/$id page

Deleted all dimentorin modal components (roadmap, session, users).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
maulanasdqn
2026-04-11 22:19:06 +07:00
co-authored by Claude Opus 4.6
parent 8749e83dad
commit b2ed098067
23 changed files with 968 additions and 766 deletions
+1
View File
@@ -12,3 +12,4 @@ export * from './permissions';
export * from './events';
export * from './testimonials';
export * from './sessions';
export * from './roadmap';
+44
View File
@@ -0,0 +1,44 @@
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
import {
getRoadmapList,
createRoadmap,
updateRoadmap,
deleteRoadmap,
} from '../../api/roadmap';
import type { TRoadmapCreateRequest, TRoadmapUpdateRequest } from '../../types/roadmap';
export const roadmapKeys = {
all: ['roadmap'] as const,
list: () => [...roadmapKeys.all, 'list'] as const,
};
export const useRoadmapList = () => {
return useQuery({
queryKey: roadmapKeys.list(),
queryFn: () => getRoadmapList(),
});
};
export const useCreateRoadmap = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (data: TRoadmapCreateRequest) => createRoadmap(data),
onSuccess: () => queryClient.invalidateQueries({ queryKey: roadmapKeys.list() }),
});
};
export const useUpdateRoadmap = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({ id, data }: { id: string; data: TRoadmapUpdateRequest }) => updateRoadmap(id, data),
onSuccess: () => queryClient.invalidateQueries({ queryKey: roadmapKeys.list() }),
});
};
export const useDeleteRoadmap = () => {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (id: string) => deleteRoadmap(id),
onSuccess: () => queryClient.invalidateQueries({ queryKey: roadmapKeys.list() }),
});
};