diff --git a/packages/app/android/app/build.gradle b/packages/app/android/app/build.gradle
index 09ab81195..1ee1ee98b 100644
--- a/packages/app/android/app/build.gradle
+++ b/packages/app/android/app/build.gradle
@@ -89,8 +89,8 @@ android {
applicationId "com.goodcode.gloddy"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 7
- versionName "1.4.0"
+ versionCode 8
+ versionName "1.4.1"
resValue 'string', "CODE_PUSH_APK_BUILD_TIME", String.format("\"%d\"", System.currentTimeMillis())
}
signingConfigs {
diff --git a/packages/web/src/apis/auth/mutations.ts b/packages/web/src/apis/auth/mutations.ts
index a80a7307b..9fd5e4d39 100644
--- a/packages/web/src/apis/auth/mutations.ts
+++ b/packages/web/src/apis/auth/mutations.ts
@@ -1,7 +1,6 @@
import { useMutation } from '@tanstack/react-query';
import {
- LoginResponse,
SignUpResponse,
postEmail,
postEmailVerify,
diff --git a/packages/web/src/app/[lng]/(main)/community/components/AllContent.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/AllContent.tsx
similarity index 98%
rename from packages/web/src/app/[lng]/(main)/community/components/AllContent.client.tsx
rename to packages/web/src/app/[lng]/(main)/community/components/AllContent.tsx
index f6d3b5954..97478a977 100644
--- a/packages/web/src/app/[lng]/(main)/community/components/AllContent.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/components/AllContent.tsx
@@ -4,7 +4,7 @@ import { useEffect } from 'react';
import { useInView } from 'react-intersection-observer';
import { useGetCommunityArticles } from '@/apis/community/queries';
-import ArticleItem from '@/app/[lng]/(main)/community/components/ArticleItem.client';
+import ArticleItem from '@/app/[lng]/(main)/community/components/ArticleItem';
import Empty from '@/app/[lng]/(main)/community/components/Empty';
import { ItemList } from '@/components/List';
import { useBlockStore } from '@/store/useBlockStore';
diff --git a/packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.tsx
similarity index 100%
rename from packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.client.tsx
rename to packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.tsx
diff --git a/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.tsx
similarity index 99%
rename from packages/web/src/app/[lng]/(main)/community/components/ArticleItem.client.tsx
rename to packages/web/src/app/[lng]/(main)/community/components/ArticleItem.tsx
index 2d2d0a40d..635f8eed8 100644
--- a/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.tsx
@@ -5,7 +5,7 @@ import { enUS, ko } from 'date-fns/locale';
import Image from 'next/image';
import { CommunityArticle } from '@/apis/community';
-import ArticleBadge from '@/app/[lng]/(main)/community/components/ArticleBadge.client';
+import ArticleBadge from '@/app/[lng]/(main)/community/components/ArticleBadge';
import { useTranslation } from '@/app/i18n/client';
import { Avatar } from '@/components/Avatar';
import { Divider } from '@/components/Divider';
diff --git a/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx b/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx
index 47c2a5a78..0e995b950 100644
--- a/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx
@@ -1,8 +1,5 @@
import { serverTranslation } from '@/app/i18n';
-import { IconButton } from '@/components/Button';
import { Header } from '@/components/Header';
-import { Icon } from '@/components/Icon';
-import { NavLink } from '@/components/NavLink';
interface CommunityHeaderProps {
lng: string;
diff --git a/packages/web/src/app/[lng]/(main)/community/components/ContentSection.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/ContentSection.tsx
similarity index 82%
rename from packages/web/src/app/[lng]/(main)/community/components/ContentSection.client.tsx
rename to packages/web/src/app/[lng]/(main)/community/components/ContentSection.tsx
index 886ff794c..14a472100 100644
--- a/packages/web/src/app/[lng]/(main)/community/components/ContentSection.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/components/ContentSection.tsx
@@ -1,15 +1,15 @@
'use client';
import dynamic from 'next/dynamic';
import { Suspense } from 'react';
+import { useTranslation } from 'react-i18next';
-import { useTranslation } from '@/app/i18n/client';
import { Loading } from '@/components/Loading';
import { Tabs } from '@/components/Tabs';
-const AllContent = dynamic(() => import('./AllContent.client'));
+const AllContent = dynamic(() => import('./AllContent'));
const KpopContent = dynamic(() => import('./KpopContent'));
-const LanguageContent = dynamic(() => import('./LanguageContent.client'));
-const QuestionContent = dynamic(() => import('./QuestionContent.client'));
+const LanguageContent = dynamic(() => import('./LanguageContent'));
+const QuestionContent = dynamic(() => import('./QuestionContent'));
export default function ContentSection() {
const { t } = useTranslation('community');
diff --git a/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx b/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx
index 55fd71115..7f012d8a3 100644
--- a/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx
@@ -3,7 +3,7 @@
import { useEffect } from 'react';
import { useInView } from 'react-intersection-observer';
-import ArticleItem from './ArticleItem.client';
+import ArticleItem from './ArticleItem';
import Empty from './Empty';
import { useGetCommunityArticles } from '@/apis/community/queries';
diff --git a/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.tsx
similarity index 95%
rename from packages/web/src/app/[lng]/(main)/community/components/LanguageContent.client.tsx
rename to packages/web/src/app/[lng]/(main)/community/components/LanguageContent.tsx
index 69c657a27..983c7f264 100644
--- a/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.tsx
@@ -3,7 +3,7 @@
import { useEffect } from 'react';
import { useInView } from 'react-intersection-observer';
-import ArticleItem from './ArticleItem.client';
+import ArticleItem from './ArticleItem';
import Empty from './Empty';
import { useGetCommunityArticles } from '@/apis/community/queries';
diff --git a/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.tsx
similarity index 95%
rename from packages/web/src/app/[lng]/(main)/community/components/QuestionContent.client.tsx
rename to packages/web/src/app/[lng]/(main)/community/components/QuestionContent.tsx
index 1ed939496..7076a67d8 100644
--- a/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.tsx
@@ -3,7 +3,7 @@
import { useEffect } from 'react';
import { useInView } from 'react-intersection-observer';
-import ArticleItem from './ArticleItem.client';
+import ArticleItem from './ArticleItem';
import Empty from './Empty';
import { useGetCommunityArticles } from '@/apis/community/queries';
diff --git a/packages/web/src/app/[lng]/(main)/community/page.tsx b/packages/web/src/app/[lng]/(main)/community/page.tsx
index 9a311f1f7..7ff2802d0 100644
--- a/packages/web/src/app/[lng]/(main)/community/page.tsx
+++ b/packages/web/src/app/[lng]/(main)/community/page.tsx
@@ -1,5 +1,5 @@
import CommunityHeader from './components/CommunityHeader';
-import ContentSection from './components/ContentSection.client';
+import ContentSection from './components/ContentSection';
import CreateArticleButton from './components/CreateArticleButton';
import { Keys, getCommunityArticles } from '@/apis/community';
diff --git a/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx b/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx
index 1ac839472..1022a4643 100644
--- a/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx
@@ -2,19 +2,20 @@
import { useEffect } from 'react';
import { useInView } from 'react-intersection-observer';
-import NoMeeting from '../../meeting/components/NoMeeting';
-
import { useGetGroups } from '@/apis/groups';
-import { useTranslation } from '@/app/i18n/client';
import { GroupingCard } from '@/components/Card';
+import { Empty } from '@/components/Empty';
import { ItemList } from '@/components/List';
import { useBlockStore } from '@/store/useBlockStore';
-export default function GroupingCardList() {
+interface GroupingCardList {
+ lng: string;
+}
+
+export default function GroupingCardList({ lng }: GroupingCardList) {
const { ref, inView } = useInView();
const { blockGroupIds } = useBlockStore();
const { data: groupList, fetchNextPage, hasNextPage } = useGetGroups();
- const { t } = useTranslation('grouping');
useEffect(() => {
if (inView && hasNextPage) fetchNextPage();
@@ -27,7 +28,7 @@ export default function GroupingCardList() {
renderItem={(group) => {
return !blockGroupIds.includes(group.groupId) && ;
}}
- renderEmpty={() => }
+ renderEmpty={() => }
/>
>
diff --git a/packages/web/src/app/[lng]/(main)/grouping/page.tsx b/packages/web/src/app/[lng]/(main)/grouping/page.tsx
index cf4b3c5b9..fe00ca22c 100644
--- a/packages/web/src/app/[lng]/(main)/grouping/page.tsx
+++ b/packages/web/src/app/[lng]/(main)/grouping/page.tsx
@@ -20,7 +20,7 @@ export default function GroupingPage({ params: { lng } }: GroupingPageProps) {
getGroups(0)} queryKey={Keys.getGroups()} isInfiniteQuery>
-
+
diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx
index 6f52c468e..b5db0ce04 100644
--- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx
@@ -1,10 +1,16 @@
'use client';
-import FeedbackContent from './FeedbackContent.client';
-import ParticipatingContent from './ParticipatingContent.client';
-import WaitingContent from './WaitingContent.client';
+
+import dynamic from 'next/dynamic';
+import { Suspense } from 'react';
+
import { useTranslation } from '@/app/i18n/client';
+import { Loading } from '@/components/Loading';
import { Tabs } from '@/components/Tabs';
+const ParticipatingContent = dynamic(() => import('./ParticipatingContent.client'));
+const WaitingContent = dynamic(() => import('./WaitingContent.client'));
+const FeedbackContent = dynamic(() => import('./FeedbackContent.client'));
+
export default function ContentSection() {
const { t } = useTranslation('meeting');
@@ -16,13 +22,19 @@ export default function ContentSection() {
-
+ }>
+
+
-
+ }>
+
+
-
+ }>
+
+
);
diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx
index 34f5fb608..85c570b62 100644
--- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx
@@ -1,7 +1,9 @@
'use client';
+
import FeedbackModal from './FeedbackModal.client';
import SubtitleSection from './SubtitleSection';
import NoMeeting from '../../components/NoMeeting';
+
import { useGetMeetingNotEstimated } from '@/apis/meeting';
import { useTranslation } from '@/app/i18n/client';
import { Button } from '@/components/Button';
diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx
index 89478d266..4dceb09be 100644
--- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx
@@ -1,9 +1,10 @@
'use client';
+import Image from 'next/image';
+
import { useTranslation } from '@/app/i18n/client';
import { Modal } from '@/components/Modal';
import { Spacing } from '@/components/Spacing';
import useAppRouter from '@/hooks/useAppRouter';
-import Image from 'next/image';
interface FeedbackModalProps {
onClose: () => void;
diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx
index 6cf9a9065..2b4e4bfee 100644
--- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx
+++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx
@@ -1,10 +1,14 @@
-'use client';
-import { useTranslation } from '@/app/i18n/client';
-import { Header } from '@/components/Header';
import Link from 'next/link';
-export default function MeetingParticipateHeader() {
- const { t } = useTranslation('meeting');
+import { serverTranslation } from '@/app/i18n';
+import { Header } from '@/components/Header';
+
+interface MeetingParticipateHeaderProps {
+ lng: string;
+}
+
+export default async function MeetingParticipateHeader({ lng }: MeetingParticipateHeaderProps) {
+ const { t } = await serverTranslation(lng, 'meeting');
return (
diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx
index 5f5c1746d..3eaa17f3a 100644
--- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx
+++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx
@@ -1,6 +1,8 @@
'use client';
+
import SubtitleSection from './SubtitleSection';
import NoMeeting from '../../components/NoMeeting';
+
import { useGetMeetingHosting, useGetMeetingParticipating } from '@/apis/meeting';
import { useTranslation } from '@/app/i18n/client';
import { GroupingCard } from '@/components/Card';
@@ -24,6 +26,7 @@ export default function ParticipatingContent() {
{meetingParticipatingData.length === 0 && (
)}
+
{meetingParticipatingData.map((groupingData) => (
-
+
}
- renderEmpty={() => }
+ renderEmpty={() => }
/>
);
}
diff --git a/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx b/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx
index fc93692b7..06bd238ed 100644
--- a/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx
+++ b/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx
@@ -1,10 +1,14 @@
-'use client';
-import { useTranslation } from '@/app/i18n/client';
-import { Header } from '@/components/Header';
import Link from 'next/link';
-export default function MeetingScrapHeader() {
- const { t } = useTranslation('meeting');
+import { serverTranslation } from '@/app/i18n';
+import { Header } from '@/components/Header';
+
+interface MeetingScrapHeaderProps {
+ lng: string;
+}
+
+export default async function MeetingScrapHeader({ lng }: MeetingScrapHeaderProps) {
+ const { t } = await serverTranslation(lng, 'meeting');
return (
diff --git a/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx b/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx
index b32a221b8..80c32ecb4 100644
--- a/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx
+++ b/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx
@@ -1,4 +1,4 @@
-import ContentSection from './components/ContentSection.client';
+import ContentSection from './components/ContentSection';
import MeetingScrapHeader from './components/MeetingScrapHeader';
import { Keys, getMeetingScrap } from '@/apis/meeting';
@@ -15,10 +15,10 @@ interface MeetingPageProps {
export default function MeetingPage({ params: { lng } }: MeetingPageProps) {
return (
<>
-
+
-
+
diff --git a/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberForm.client.tsx b/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberForm.client.tsx
index 50d36fbf3..6ba5cb665 100644
--- a/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberForm.client.tsx
+++ b/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberForm.client.tsx
@@ -1,5 +1,12 @@
+import { ElementType, KeyboardEventHandler } from 'react';
+
import { useJoinContext } from '../../../components/JoinContext.client';
import { formatNumber, formatNumberBackSpace } from '../util';
+
+import type { SignUpState } from '../../../type';
+import type { StatusType } from '../type';
+import type { SubmitHandler } from 'react-hook-form';
+
import { useLoginMutation, useSMSMutation } from '@/apis/auth';
import { useTranslation } from '@/app/i18n/client';
import { Button, ButtonGroup } from '@/components/Button';
@@ -8,11 +15,6 @@ import { Spacing } from '@/components/Spacing';
import { TextFieldController } from '@/components/TextField';
import { regexr } from '@/constants/regexr';
import { useToast } from '@/hooks/useModal';
-import { ElementType, KeyboardEventHandler } from 'react';
-
-import type { SignUpState } from '../../../type';
-import type { StatusType } from '../type';
-import type { SubmitHandler } from 'react-hook-form';
interface NumberSectionProps {
inputStatus: StatusType;
@@ -45,10 +47,6 @@ export default function NumberForm({ inputStatus, setInputStatus }: NumberSectio
if (timerStatus === 'RUNNING') return;
timerStart();
const phoneNumberWithoutHyphen = data.phoneNumber.replace(/[-\s]/g, '');
- if (phoneNumberWithoutHyphen === '01089695610') {
- mutateLogin({ phoneNumber: data.phoneNumber });
- return;
- }
mutateSMS({ number: phoneNumberWithoutHyphen });
openToast('인증 번호가 전송되었습니다.');
setInputStatus('afterSend');
diff --git a/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberVerifyForm.client.tsx b/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberVerifyForm.client.tsx
index eaeb6965c..70f825d72 100644
--- a/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberVerifyForm.client.tsx
+++ b/packages/web/src/app/[lng]/(sub)/join/funnels/step1/components/NumberVerifyForm.client.tsx
@@ -1,6 +1,10 @@
import { useJoinContext } from '../../../components/JoinContext.client';
import { useFunnelContext } from '../../JoinFunnel';
import { formatWithoutHyphen } from '../util';
+
+import type { SignUpState } from '../../../type';
+import type { SubmitHandler } from 'react-hook-form';
+
import { LoginResponse, useLoginMutation, useSMSMutation, useSMSVerifyMutation } from '@/apis/auth';
import { useTranslation } from '@/app/i18n/client';
import { Button, ButtonGroup } from '@/components/Button';
@@ -10,9 +14,6 @@ import { TextFieldController } from '@/components/TextField';
import { regexr } from '@/constants/regexr';
import useLogin from '@/hooks/token/useLogin';
-import type { SignUpState } from '../../../type';
-import type { SubmitHandler } from 'react-hook-form';
-
interface NumberVerifyFormProps {
setInputStatus: React.Dispatch>;
}
diff --git a/packages/web/src/app/i18n/client.ts b/packages/web/src/app/i18n/client.ts
index 1535a7edf..93a4727c0 100644
--- a/packages/web/src/app/i18n/client.ts
+++ b/packages/web/src/app/i18n/client.ts
@@ -1,12 +1,13 @@
/* eslint-disable react-hooks/rules-of-hooks */
'use client';
-import { getOptions, languages } from './settings';
import i18next from 'i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import resourcesToBackend from 'i18next-resources-to-backend';
import { useParams } from 'next/navigation';
import { initReactI18next, useTranslation as useTranslationOrg } from 'react-i18next';
+
+import { getOptions, languages } from './settings';
// import LocizeBackend from 'i18next-locize-backend'
const runsOnServerSide = typeof window === 'undefined';
diff --git a/packages/web/src/components/Empty/Empty.tsx b/packages/web/src/components/Empty/Empty.tsx
new file mode 100644
index 000000000..af8fe1998
--- /dev/null
+++ b/packages/web/src/components/Empty/Empty.tsx
@@ -0,0 +1,21 @@
+import { serverTranslation } from '@/app/i18n';
+import { Icon } from '@/components/Icon';
+import { Flex } from '@/components/Layout';
+import { Spacing } from '@/components/Spacing';
+
+interface NoMeetingProps {
+ ns: string;
+ lng: string;
+ message: string;
+}
+export default async function NoMeeting({ lng, ns, message }: NoMeetingProps) {
+ const { t } = await serverTranslation(lng, ns);
+
+ return (
+
+
+
+ {t(message)}
+
+ );
+}
diff --git a/packages/web/src/components/Empty/index.ts b/packages/web/src/components/Empty/index.ts
new file mode 100644
index 000000000..8412d5f85
--- /dev/null
+++ b/packages/web/src/components/Empty/index.ts
@@ -0,0 +1 @@
+export { default as Empty } from './Empty';
diff --git a/packages/web/src/components/Tabs/Tabs.client.tsx b/packages/web/src/components/Tabs/Tabs.tsx
similarity index 85%
rename from packages/web/src/components/Tabs/Tabs.client.tsx
rename to packages/web/src/components/Tabs/Tabs.tsx
index 674593040..b72b8acd4 100644
--- a/packages/web/src/components/Tabs/Tabs.client.tsx
+++ b/packages/web/src/components/Tabs/Tabs.tsx
@@ -1,4 +1,3 @@
-'use client';
import { LayoutGroup, motion } from 'framer-motion';
import Link from 'next/link';
import { usePathname, useSearchParams } from 'next/navigation';
@@ -8,21 +7,15 @@ import {
ReactElement,
cloneElement,
isValidElement,
- useEffect,
useState,
} from 'react';
import type { StrictPropsWithChildren } from '@/types';
-import useAppRouter from '@/hooks/useAppRouter';
import cn from '@/utils/cn';
-let elementId = 1;
-
export default function Tabs({ children }: StrictPropsWithChildren) {
- const [id] = useState(() => String(elementId++));
-
- return {children};
+ return {children};
}
const renderTabElement = (
@@ -65,16 +58,6 @@ function List({ isStretch = true, isSticky = true, children }: StrictPropsWithCh
const props = validChildren.map((child) => child.props as React.ComponentProps);
- const searchParams = useSearchParams();
- const { replace } = useAppRouter();
- const pathname = usePathname();
-
- useEffect(() => {
- const tab = searchParams.get('tab');
- if (!tab) replace(`${pathname}?tab=${props[0].value}`);
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, []);
-
return (
{renderTabElement(validChildren, props, isStretch)}
diff --git a/packages/web/src/components/Tabs/index.ts b/packages/web/src/components/Tabs/index.ts
index cbe26e4a9..98c41f65c 100644
--- a/packages/web/src/components/Tabs/index.ts
+++ b/packages/web/src/components/Tabs/index.ts
@@ -1 +1 @@
-export { default as Tabs } from './Tabs.client';
+export { default as Tabs } from './Tabs';