+ 에러
}
+ loadingFallback={}
+ >
+
+ {data => (
+
+ )}
+
+
+
+
+
+
+
+
+
+ }
+ loadingFallback={}
+ >
+
+ {({ matchList, ...props }) => (
+
+
+
+ )}
+
+
+
+ );
+}
diff --git a/output/src/app/rummikube/[id]/page.tsx b/output/src/app/rummikube/[id]/page.tsx
new file mode 100644
index 0000000..6a7a2fc
--- /dev/null
+++ b/output/src/app/rummikube/[id]/page.tsx
@@ -0,0 +1,160 @@
+'use client';
+
+import { useRef, useState } from 'react';
+
+import AsyncBoundary from '@/components/common/AsyncBoundary';
+import Loader from '@/components/common/Loader';
+import CommentForm from '@/components/match/CommentForm';
+import CommentList from '@/components/match/CommentList';
+import Lineup from '@/components/match/LineupList';
+import Panel from '@/components/match/Panel';
+import RecordList from '@/components/match/RecordList';
+import Video from '@/components/match/Video';
+import Cheer from '@/components/rummikub/Cheer';
+import RummiKubMatchBanner from '@/components/rummikub/MatchBanner';
+import useSocket from '@/hooks/useSocket';
+import MatchByIdFetcher from '@/queries/useMatchById/Fetcher';
+import MatchCheerByIdFetcher from '@/queries/useMatchCheerById/Fetcher';
+import MatchCommentFetcher from '@/queries/useMatchCommentById/Fetcher';
+import MatchLineupFetcher from '@/queries/useMatchLineupById/Fetcher';
+import MatchTimelineFetcher from '@/queries/useMatchTimelineById/Fetcher';
+import MatchVideoFetcher from '@/queries/useMatchVideoById/Fetcher';
+import useSaveCommentMutation from '@/queries/useSaveCommentMutation/query';
+import { MatchCommentType } from '@/types/match';
+
+export default function Rummikute({ params }: { params: { id: string } }) {
+ const [comments, setComments] = useState