From 84fa0f80231d305886765cbb17e20f707a980cc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EC=9E=84=EC=84=B8=EC=9C=A4?= <2ne1jenna@naver.com>
Date: Wed, 28 Jan 2026 17:34:54 +0900
Subject: [PATCH 1/7] =?UTF-8?q?feat(matching-suggest):=20=EC=BA=A0?=
=?UTF-8?q?=ED=8E=98=EC=9D=B8=20=EC=A0=9C=EC=95=88=20=ED=8F=BC=20UI=20?=
=?UTF-8?q?=EA=B0=9C=EC=84=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 폼 필드 컴포넌트 스타일 통일
- TextArea auto-resize 기능 추가
- 폼 컨테이너 전체 너비 레이아웃 적용
---
package.json | 2 +
pnpm-lock.yaml | 40 +-
src/assets/icon/exist-suggest.svg | 4 +-
src/components/form/DateField.tsx | 24 +
src/components/form/FeeInput.tsx | 26 ++
src/components/form/SelectField.tsx | 27 ++
src/components/form/TextArea.tsx | 41 ++
src/components/form/TextInput.tsx | 28 ++
src/components/form/index.ts | 5 +
src/data/existing-campaigns.ts | 6 +
src/hooks/useHideBottomTab.ts | 22 +
src/routeTree.gen.ts | 429 ++++--------------
src/routes/_main.tsx | 19 +-
src/routes/_main/chat/chat-content.tsx | 17 +-
src/routes/_main/layout-context.tsx | 2 +
.../components/ProfileSelector.tsx | 49 ++
.../components/SuggestHeader.tsx | 46 ++
.../create/create-campaign-content.tsx | 293 ++++++++++++
.../_main/matching-suggest/create/route.tsx | 11 +
.../_main/matching-suggest/create/schema.ts | 37 ++
src/routes/_main/matching-suggest/index.tsx | 6 +
.../matching-suggest-content.tsx | 42 ++
src/routes/_main/matching-suggest/route.tsx | 28 ++
.../_main/matching/brand/brand-content.tsx | 4 +
.../matching/campaign/campaign-content.tsx | 4 +
25 files changed, 852 insertions(+), 360 deletions(-)
create mode 100644 src/components/form/DateField.tsx
create mode 100644 src/components/form/FeeInput.tsx
create mode 100644 src/components/form/SelectField.tsx
create mode 100644 src/components/form/TextArea.tsx
create mode 100644 src/components/form/TextInput.tsx
create mode 100644 src/components/form/index.ts
create mode 100644 src/data/existing-campaigns.ts
create mode 100644 src/hooks/useHideBottomTab.ts
create mode 100644 src/routes/_main/matching-suggest/components/ProfileSelector.tsx
create mode 100644 src/routes/_main/matching-suggest/components/SuggestHeader.tsx
create mode 100644 src/routes/_main/matching-suggest/create/create-campaign-content.tsx
create mode 100644 src/routes/_main/matching-suggest/create/route.tsx
create mode 100644 src/routes/_main/matching-suggest/create/schema.ts
create mode 100644 src/routes/_main/matching-suggest/index.tsx
create mode 100644 src/routes/_main/matching-suggest/matching-suggest-content.tsx
create mode 100644 src/routes/_main/matching-suggest/route.tsx
diff --git a/package.json b/package.json
index f55dae1..ef6940b 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
"preview": "vite preview"
},
"dependencies": {
+ "@hookform/resolvers": "^5.2.2",
"@iconify/react": "^6.0.2",
"@tanstack/react-query": "^5.90.16",
"@tanstack/react-router": "^1.145.7",
@@ -20,6 +21,7 @@
"react-hook-form": "^7.71.0",
"react-mobile-picker": "^1.2.0",
"tailwind-merge": "^3.4.0",
+ "zod": "3.23.8",
"zustand": "^5.0.9"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index fc67060..4cff640 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,9 @@ importers:
.:
dependencies:
+ '@hookform/resolvers':
+ specifier: ^5.2.2
+ version: 5.2.2(react-hook-form@7.71.1(react@19.2.3))
'@iconify/react':
specifier: ^6.0.2
version: 6.0.2(react@19.2.3)
@@ -38,6 +41,9 @@ importers:
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
+ zod:
+ specifier: 3.23.8
+ version: 3.23.8
zustand:
specifier: ^5.0.9
version: 5.0.10(@types/react@19.2.8)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3))
@@ -828,6 +834,11 @@ packages:
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@hookform/resolvers@5.2.2':
+ resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==}
+ peerDependencies:
+ react-hook-form: ^7.55.0
+
'@humanfs/core@0.19.1':
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
engines: {node: '>=18.18.0'}
@@ -1060,6 +1071,9 @@ packages:
cpu: [x64]
os: [win32]
+ '@standard-schema/utils@0.3.0':
+ resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
+
'@surma/rollup-plugin-off-main-thread@2.2.3':
resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==}
@@ -3101,11 +3115,14 @@ packages:
peerDependencies:
zod: ^3.25.0 || ^4.0.0
+ zod@3.23.8:
+ resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
+
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
- zod@4.3.5:
- resolution: {integrity: sha512-k7Nwx6vuWx1IJ9Bjuf4Zt1PEllcwe7cls3VNzm4CQ1/hgtFUK2bRNG3rvnpPUhFjmqJKAKtjV576KnUkHocg/g==}
+ zod@4.3.6:
+ resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
zustand@5.0.10:
resolution: {integrity: sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==}
@@ -3934,6 +3951,11 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
+ '@hookform/resolvers@5.2.2(react-hook-form@7.71.1(react@19.2.3))':
+ dependencies:
+ '@standard-schema/utils': 0.3.0
+ react-hook-form: 7.71.1(react@19.2.3)
+
'@humanfs/core@0.19.1': {}
'@humanfs/node@0.16.7':
@@ -4118,6 +4140,8 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.55.1':
optional: true
+ '@standard-schema/utils@0.3.0': {}
+
'@surma/rollup-plugin-off-main-thread@2.2.3':
dependencies:
ejs: 3.1.10
@@ -4911,8 +4935,8 @@ snapshots:
'@babel/parser': 7.28.6
eslint: 9.39.2(jiti@2.6.1)
hermes-parser: 0.25.1
- zod: 4.3.5
- zod-validation-error: 4.0.2(zod@4.3.5)
+ zod: 4.3.6
+ zod-validation-error: 4.0.2(zod@4.3.6)
transitivePeerDependencies:
- supports-color
@@ -6388,13 +6412,15 @@ snapshots:
yocto-queue@0.1.0: {}
- zod-validation-error@4.0.2(zod@4.3.5):
+ zod-validation-error@4.0.2(zod@4.3.6):
dependencies:
- zod: 4.3.5
+ zod: 4.3.6
+
+ zod@3.23.8: {}
zod@3.25.76: {}
- zod@4.3.5: {}
+ zod@4.3.6: {}
zustand@5.0.10(@types/react@19.2.8)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)):
optionalDependencies:
diff --git a/src/assets/icon/exist-suggest.svg b/src/assets/icon/exist-suggest.svg
index 2feaecb..3fcf6c2 100644
--- a/src/assets/icon/exist-suggest.svg
+++ b/src/assets/icon/exist-suggest.svg
@@ -1,4 +1,4 @@
diff --git a/src/components/form/DateField.tsx b/src/components/form/DateField.tsx
new file mode 100644
index 0000000..df996f9
--- /dev/null
+++ b/src/components/form/DateField.tsx
@@ -0,0 +1,24 @@
+interface DateFieldProps {
+ placeholder: string;
+ value?: string;
+ onClick: () => void;
+}
+
+export default function DateField({
+ placeholder,
+ value,
+ onClick,
+}: DateFieldProps) {
+ return (
+
+ );
+}
diff --git a/src/components/form/FeeInput.tsx b/src/components/form/FeeInput.tsx
new file mode 100644
index 0000000..0ef3fec
--- /dev/null
+++ b/src/components/form/FeeInput.tsx
@@ -0,0 +1,26 @@
+interface FeeInputProps {
+ value: string;
+ onChange: (value: string) => void;
+ placeholder?: string;
+ unit?: string;
+}
+
+export default function FeeInput({
+ value,
+ onChange,
+ placeholder = "",
+ unit = "원",
+}: FeeInputProps) {
+ return (
+
+ onChange(e.target.value.replace(/[^0-9]/g, ""))}
+ className="flex-1 text-title3 text-text-black placeholder:text-text-gray3 focus:outline-none bg-transparent"
+ placeholder={placeholder}
+ />
+ {unit}
+
+ );
+}
diff --git a/src/components/form/SelectField.tsx b/src/components/form/SelectField.tsx
new file mode 100644
index 0000000..88901e3
--- /dev/null
+++ b/src/components/form/SelectField.tsx
@@ -0,0 +1,27 @@
+interface SelectFieldProps {
+ placeholder: string;
+ value?: string;
+ onClick: () => void;
+}
+
+export default function SelectField({
+ placeholder,
+ value,
+ onClick,
+}: SelectFieldProps) {
+ return (
+
+ );
+}
diff --git a/src/components/form/TextArea.tsx b/src/components/form/TextArea.tsx
new file mode 100644
index 0000000..8daa369
--- /dev/null
+++ b/src/components/form/TextArea.tsx
@@ -0,0 +1,41 @@
+import { useRef, useEffect } from "react";
+
+interface TextAreaProps {
+ placeholder: string;
+ maxLength: number;
+ value: string;
+ onChange: (value: string) => void;
+}
+
+export default function TextArea({
+ placeholder,
+ maxLength,
+ value,
+ onChange,
+}: TextAreaProps) {
+ const textareaRef = useRef(null);
+
+ useEffect(() => {
+ const textarea = textareaRef.current;
+ if (textarea) {
+ textarea.style.height = "auto";
+ textarea.style.height = `${textarea.scrollHeight}px`;
+ }
+ }, [value]);
+
+ return (
+
+
+ );
+}
diff --git a/src/components/form/TextInput.tsx b/src/components/form/TextInput.tsx
new file mode 100644
index 0000000..0a78cd6
--- /dev/null
+++ b/src/components/form/TextInput.tsx
@@ -0,0 +1,28 @@
+interface TextInputProps {
+ placeholder: string;
+ maxLength: number;
+ value: string;
+ onChange: (value: string) => void;
+}
+
+export default function TextInput({
+ placeholder,
+ maxLength,
+ value,
+ onChange,
+}: TextInputProps) {
+ return (
+
+ onChange(e.target.value.slice(0, maxLength))}
+ className="flex-1 bg-transparent text-title3 text-text-black placeholder:text-text-gray3 focus:outline-none"
+ />
+
+ {value.length}/{maxLength}
+
+
+ );
+}
diff --git a/src/components/form/index.ts b/src/components/form/index.ts
new file mode 100644
index 0000000..76877d7
--- /dev/null
+++ b/src/components/form/index.ts
@@ -0,0 +1,5 @@
+export { default as TextInput } from "./TextInput";
+export { default as TextArea } from "./TextArea";
+export { default as SelectField } from "./SelectField";
+export { default as DateField } from "./DateField";
+export { default as FeeInput } from "./FeeInput";
diff --git a/src/data/existing-campaigns.ts b/src/data/existing-campaigns.ts
new file mode 100644
index 0000000..7526200
--- /dev/null
+++ b/src/data/existing-campaigns.ts
@@ -0,0 +1,6 @@
+// 기존 캠페인 목록 (더미 데이터)
+export const existingCampaigns = [
+ { id: 1, name: "글로우 쿠션 신제품 론칭 리뷰" },
+ { id: 2, name: "글로우 선크림' 체험단 모집" },
+ { id: 3, name: "글로우 세럼' 신제품 론팅 리뷰" },
+];
diff --git a/src/hooks/useHideBottomTab.ts b/src/hooks/useHideBottomTab.ts
new file mode 100644
index 0000000..d2b4905
--- /dev/null
+++ b/src/hooks/useHideBottomTab.ts
@@ -0,0 +1,22 @@
+import { useContext, useLayoutEffect } from "react";
+import { LayoutContext } from "../routes/_main/layout-context";
+
+/**
+ * 바텀탭을 숨기는 커스텀 훅
+ * 바텀시트가 열릴 때 바텀탭을 숨기고, 닫히거나 컴포넌트가 언마운트되면 복원
+ *
+ * @param hide - true면 바텀탭 숨김, false면 표시
+ */
+export function useHideBottomTab(hide: boolean) {
+ const layout = useContext(LayoutContext);
+
+ useLayoutEffect(() => {
+ if (!layout) return;
+
+ layout.setHideBottomTab(hide);
+
+ return () => {
+ layout.setHideBottomTab(false);
+ };
+ }, [hide, layout]);
+}
diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts
index 7dfddd5..2a4f687 100644
--- a/src/routeTree.gen.ts
+++ b/src/routeTree.gen.ts
@@ -10,28 +10,17 @@
import { Route as rootRouteImport } from './routes/__root'
import { Route as MainRouteImport } from './routes/_main'
-import { Route as RoomsRouteRouteImport } from './routes/rooms/route'
-import { Route as RoomsChatIdRouteImport } from './routes/rooms/$chatId'
-import { Route as MainMypageRouteRouteImport } from './routes/_main/mypage/route'
+import { Route as MainMatchingSuggestRouteRouteImport } from './routes/_main/matching-suggest/route'
import { Route as MainMatchingRouteRouteImport } from './routes/_main/matching/route'
import { Route as MainChatRouteRouteImport } from './routes/_main/chat/route'
import { Route as AuthLoginRouteRouteImport } from './routes/_auth/login/route'
+import { Route as MainMatchingSuggestIndexRouteImport } from './routes/_main/matching-suggest/index'
import { Route as MainHomeIndexRouteImport } from './routes/_main/_home/index'
-import { Route as MainMypageWithdrawRouteImport } from './routes/_main/mypage/withdraw'
-import { Route as MainMypageTermsRouteImport } from './routes/_main/mypage/terms'
-import { Route as MainMypageProfileCardRouteImport } from './routes/_main/mypage/profileCard'
-import { Route as MainMypagePrivacyRouteImport } from './routes/_main/mypage/privacy'
-import { Route as MainMypageNotificationsRouteImport } from './routes/_main/mypage/notifications'
-import { Route as MainMypageLikesRouteImport } from './routes/_main/mypage/likes'
-import { Route as MainMypageInquiryRouteImport } from './routes/_main/mypage/inquiry'
-import { Route as MainMypageEditRouteImport } from './routes/_main/mypage/edit'
-import { Route as MainHomePreRouteImport } from './routes/_main/_home/pre'
+import { Route as MainChatChattingRoomRouteImport } from './routes/_main/chat/chatting-room'
import { Route as MainMatchingCampaignRouteRouteImport } from './routes/_main/matching/campaign/route'
import { Route as MainMatchingBrandRouteRouteImport } from './routes/_main/matching/brand/route'
import { Route as MainMatchingTestMatchingResultRouteRouteImport } from './routes/_main/matching-test/matching-result/route'
-import { Route as MainBusinessRejectionRouteRouteImport } from './routes/_main/_business/rejection/route'
-import { Route as MainBusinessProposalRouteRouteImport } from './routes/_main/_business/proposal/route'
-import { Route as MainBusinessCampaignRouteRouteImport } from './routes/_main/_business/campaign/route'
+import { Route as MainMatchingSuggestCreateRouteRouteImport } from './routes/_main/matching-suggest/create/route'
import { Route as MainBusinessCalendarRouteRouteImport } from './routes/_main/_business/calendar/route'
import { Route as AuthSignupTypeRouteRouteImport } from './routes/_auth/signup/type/route'
import { Route as AuthSignupTermsRouteRouteImport } from './routes/_auth/signup/terms/route'
@@ -47,21 +36,12 @@ const MainRoute = MainRouteImport.update({
id: '/_main',
getParentRoute: () => rootRouteImport,
} as any)
-const RoomsRouteRoute = RoomsRouteRouteImport.update({
- id: '/rooms',
- path: '/rooms',
- getParentRoute: () => rootRouteImport,
-} as any)
-const RoomsChatIdRoute = RoomsChatIdRouteImport.update({
- id: '/$chatId',
- path: '/$chatId',
- getParentRoute: () => RoomsRouteRoute,
-} as any)
-const MainMypageRouteRoute = MainMypageRouteRouteImport.update({
- id: '/mypage',
- path: '/mypage',
- getParentRoute: () => MainRoute,
-} as any)
+const MainMatchingSuggestRouteRoute =
+ MainMatchingSuggestRouteRouteImport.update({
+ id: '/matching-suggest',
+ path: '/matching-suggest',
+ getParentRoute: () => MainRoute,
+ } as any)
const MainMatchingRouteRoute = MainMatchingRouteRouteImport.update({
id: '/matching',
path: '/matching',
@@ -77,55 +57,21 @@ const AuthLoginRouteRoute = AuthLoginRouteRouteImport.update({
path: '/login',
getParentRoute: () => rootRouteImport,
} as any)
+const MainMatchingSuggestIndexRoute =
+ MainMatchingSuggestIndexRouteImport.update({
+ id: '/',
+ path: '/',
+ getParentRoute: () => MainMatchingSuggestRouteRoute,
+ } as any)
const MainHomeIndexRoute = MainHomeIndexRouteImport.update({
id: '/_home/',
path: '/',
getParentRoute: () => MainRoute,
} as any)
-const MainMypageWithdrawRoute = MainMypageWithdrawRouteImport.update({
- id: '/withdraw',
- path: '/withdraw',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainMypageTermsRoute = MainMypageTermsRouteImport.update({
- id: '/terms',
- path: '/terms',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainMypageProfileCardRoute = MainMypageProfileCardRouteImport.update({
- id: '/profileCard',
- path: '/profileCard',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainMypagePrivacyRoute = MainMypagePrivacyRouteImport.update({
- id: '/privacy',
- path: '/privacy',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainMypageNotificationsRoute = MainMypageNotificationsRouteImport.update({
- id: '/notifications',
- path: '/notifications',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainMypageLikesRoute = MainMypageLikesRouteImport.update({
- id: '/likes',
- path: '/likes',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainMypageInquiryRoute = MainMypageInquiryRouteImport.update({
- id: '/inquiry',
- path: '/inquiry',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainMypageEditRoute = MainMypageEditRouteImport.update({
- id: '/edit',
- path: '/edit',
- getParentRoute: () => MainMypageRouteRoute,
-} as any)
-const MainHomePreRoute = MainHomePreRouteImport.update({
- id: '/_home/pre',
- path: '/pre',
- getParentRoute: () => MainRoute,
+const MainChatChattingRoomRoute = MainChatChattingRoomRouteImport.update({
+ id: '/chatting-room',
+ path: '/chatting-room',
+ getParentRoute: () => MainChatRouteRoute,
} as any)
const MainMatchingCampaignRouteRoute =
MainMatchingCampaignRouteRouteImport.update({
@@ -144,23 +90,11 @@ const MainMatchingTestMatchingResultRouteRoute =
path: '/matching-test/matching-result',
getParentRoute: () => MainRoute,
} as any)
-const MainBusinessRejectionRouteRoute =
- MainBusinessRejectionRouteRouteImport.update({
- id: '/_business/rejection',
- path: '/rejection',
- getParentRoute: () => MainRoute,
- } as any)
-const MainBusinessProposalRouteRoute =
- MainBusinessProposalRouteRouteImport.update({
- id: '/_business/proposal',
- path: '/proposal',
- getParentRoute: () => MainRoute,
- } as any)
-const MainBusinessCampaignRouteRoute =
- MainBusinessCampaignRouteRouteImport.update({
- id: '/_business/campaign',
- path: '/campaign',
- getParentRoute: () => MainRoute,
+const MainMatchingSuggestCreateRouteRoute =
+ MainMatchingSuggestCreateRouteRouteImport.update({
+ id: '/create',
+ path: '/create',
+ getParentRoute: () => MainMatchingSuggestRouteRoute,
} as any)
const MainBusinessCalendarRouteRoute =
MainBusinessCalendarRouteRouteImport.update({
@@ -218,13 +152,10 @@ const MainMatchingTestMatchingTestStep1RouteRoute =
} as any)
export interface FileRoutesByFullPath {
- '/rooms': typeof RoomsRouteRouteWithChildren
- '/': typeof MainHomeIndexRoute
'/login': typeof AuthLoginRouteRoute
- '/chat': typeof MainChatRouteRoute
+ '/chat': typeof MainChatRouteRouteWithChildren
'/matching': typeof MainMatchingRouteRouteWithChildren
- '/mypage': typeof MainMypageRouteRouteWithChildren
- '/rooms/$chatId': typeof RoomsChatIdRoute
+ '/matching-suggest': typeof MainMatchingSuggestRouteRouteWithChildren
'/signup/info': typeof AuthSignupInfoRouteRoute
'/signup/info-more': typeof AuthSignupInfoMoreRouteRoute
'/signup/purpose': typeof AuthSignupPurposeRouteRoute
@@ -232,32 +163,21 @@ export interface FileRoutesByFullPath {
'/signup/terms': typeof AuthSignupTermsRouteRoute
'/signup/type': typeof AuthSignupTypeRouteRoute
'/calendar': typeof MainBusinessCalendarRouteRoute
- '/campaign': typeof MainBusinessCampaignRouteRoute
- '/proposal': typeof MainBusinessProposalRouteRoute
- '/rejection': typeof MainBusinessRejectionRouteRoute
+ '/matching-suggest/create': typeof MainMatchingSuggestCreateRouteRoute
'/matching-test/matching-result': typeof MainMatchingTestMatchingResultRouteRoute
'/matching/brand': typeof MainMatchingBrandRouteRoute
'/matching/campaign': typeof MainMatchingCampaignRouteRoute
- '/pre': typeof MainHomePreRoute
- '/mypage/edit': typeof MainMypageEditRoute
- '/mypage/inquiry': typeof MainMypageInquiryRoute
- '/mypage/likes': typeof MainMypageLikesRoute
- '/mypage/notifications': typeof MainMypageNotificationsRoute
- '/mypage/privacy': typeof MainMypagePrivacyRoute
- '/mypage/profileCard': typeof MainMypageProfileCardRoute
- '/mypage/terms': typeof MainMypageTermsRoute
- '/mypage/withdraw': typeof MainMypageWithdrawRoute
+ '/chat/chatting-room': typeof MainChatChattingRoomRoute
+ '/': typeof MainHomeIndexRoute
+ '/matching-suggest/': typeof MainMatchingSuggestIndexRoute
'/matching-test/matching-test/step1': typeof MainMatchingTestMatchingTestStep1RouteRoute
'/matching-test/matching-test/step2': typeof MainMatchingTestMatchingTestStep2RouteRoute
'/matching-test/matching-test/step3': typeof MainMatchingTestMatchingTestStep3RouteRoute
}
export interface FileRoutesByTo {
- '/rooms': typeof RoomsRouteRouteWithChildren
'/login': typeof AuthLoginRouteRoute
- '/chat': typeof MainChatRouteRoute
+ '/chat': typeof MainChatRouteRouteWithChildren
'/matching': typeof MainMatchingRouteRouteWithChildren
- '/mypage': typeof MainMypageRouteRouteWithChildren
- '/rooms/$chatId': typeof RoomsChatIdRoute
'/signup/info': typeof AuthSignupInfoRouteRoute
'/signup/info-more': typeof AuthSignupInfoMoreRouteRoute
'/signup/purpose': typeof AuthSignupPurposeRouteRoute
@@ -265,35 +185,24 @@ export interface FileRoutesByTo {
'/signup/terms': typeof AuthSignupTermsRouteRoute
'/signup/type': typeof AuthSignupTypeRouteRoute
'/calendar': typeof MainBusinessCalendarRouteRoute
- '/campaign': typeof MainBusinessCampaignRouteRoute
- '/proposal': typeof MainBusinessProposalRouteRoute
- '/rejection': typeof MainBusinessRejectionRouteRoute
+ '/matching-suggest/create': typeof MainMatchingSuggestCreateRouteRoute
'/matching-test/matching-result': typeof MainMatchingTestMatchingResultRouteRoute
'/matching/brand': typeof MainMatchingBrandRouteRoute
'/matching/campaign': typeof MainMatchingCampaignRouteRoute
- '/pre': typeof MainHomePreRoute
- '/mypage/edit': typeof MainMypageEditRoute
- '/mypage/inquiry': typeof MainMypageInquiryRoute
- '/mypage/likes': typeof MainMypageLikesRoute
- '/mypage/notifications': typeof MainMypageNotificationsRoute
- '/mypage/privacy': typeof MainMypagePrivacyRoute
- '/mypage/profileCard': typeof MainMypageProfileCardRoute
- '/mypage/terms': typeof MainMypageTermsRoute
- '/mypage/withdraw': typeof MainMypageWithdrawRoute
+ '/chat/chatting-room': typeof MainChatChattingRoomRoute
'/': typeof MainHomeIndexRoute
+ '/matching-suggest': typeof MainMatchingSuggestIndexRoute
'/matching-test/matching-test/step1': typeof MainMatchingTestMatchingTestStep1RouteRoute
'/matching-test/matching-test/step2': typeof MainMatchingTestMatchingTestStep2RouteRoute
'/matching-test/matching-test/step3': typeof MainMatchingTestMatchingTestStep3RouteRoute
}
export interface FileRoutesById {
__root__: typeof rootRouteImport
- '/rooms': typeof RoomsRouteRouteWithChildren
'/_main': typeof MainRouteWithChildren
'/_auth/login': typeof AuthLoginRouteRoute
- '/_main/chat': typeof MainChatRouteRoute
+ '/_main/chat': typeof MainChatRouteRouteWithChildren
'/_main/matching': typeof MainMatchingRouteRouteWithChildren
- '/_main/mypage': typeof MainMypageRouteRouteWithChildren
- '/rooms/$chatId': typeof RoomsChatIdRoute
+ '/_main/matching-suggest': typeof MainMatchingSuggestRouteRouteWithChildren
'/_auth/signup/info': typeof AuthSignupInfoRouteRoute
'/_auth/signup/info-more': typeof AuthSignupInfoMoreRouteRoute
'/_auth/signup/purpose': typeof AuthSignupPurposeRouteRoute
@@ -301,22 +210,13 @@ export interface FileRoutesById {
'/_auth/signup/terms': typeof AuthSignupTermsRouteRoute
'/_auth/signup/type': typeof AuthSignupTypeRouteRoute
'/_main/_business/calendar': typeof MainBusinessCalendarRouteRoute
- '/_main/_business/campaign': typeof MainBusinessCampaignRouteRoute
- '/_main/_business/proposal': typeof MainBusinessProposalRouteRoute
- '/_main/_business/rejection': typeof MainBusinessRejectionRouteRoute
+ '/_main/matching-suggest/create': typeof MainMatchingSuggestCreateRouteRoute
'/_main/matching-test/matching-result': typeof MainMatchingTestMatchingResultRouteRoute
'/_main/matching/brand': typeof MainMatchingBrandRouteRoute
'/_main/matching/campaign': typeof MainMatchingCampaignRouteRoute
- '/_main/_home/pre': typeof MainHomePreRoute
- '/_main/mypage/edit': typeof MainMypageEditRoute
- '/_main/mypage/inquiry': typeof MainMypageInquiryRoute
- '/_main/mypage/likes': typeof MainMypageLikesRoute
- '/_main/mypage/notifications': typeof MainMypageNotificationsRoute
- '/_main/mypage/privacy': typeof MainMypagePrivacyRoute
- '/_main/mypage/profileCard': typeof MainMypageProfileCardRoute
- '/_main/mypage/terms': typeof MainMypageTermsRoute
- '/_main/mypage/withdraw': typeof MainMypageWithdrawRoute
+ '/_main/chat/chatting-room': typeof MainChatChattingRoomRoute
'/_main/_home/': typeof MainHomeIndexRoute
+ '/_main/matching-suggest/': typeof MainMatchingSuggestIndexRoute
'/_main/matching-test/matching-test/step1': typeof MainMatchingTestMatchingTestStep1RouteRoute
'/_main/matching-test/matching-test/step2': typeof MainMatchingTestMatchingTestStep2RouteRoute
'/_main/matching-test/matching-test/step3': typeof MainMatchingTestMatchingTestStep3RouteRoute
@@ -324,13 +224,10 @@ export interface FileRoutesById {
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths:
- | '/rooms'
- | '/'
| '/login'
| '/chat'
| '/matching'
- | '/mypage'
- | '/rooms/$chatId'
+ | '/matching-suggest'
| '/signup/info'
| '/signup/info-more'
| '/signup/purpose'
@@ -338,32 +235,21 @@ export interface FileRouteTypes {
| '/signup/terms'
| '/signup/type'
| '/calendar'
- | '/campaign'
- | '/proposal'
- | '/rejection'
+ | '/matching-suggest/create'
| '/matching-test/matching-result'
| '/matching/brand'
| '/matching/campaign'
- | '/pre'
- | '/mypage/edit'
- | '/mypage/inquiry'
- | '/mypage/likes'
- | '/mypage/notifications'
- | '/mypage/privacy'
- | '/mypage/profileCard'
- | '/mypage/terms'
- | '/mypage/withdraw'
+ | '/chat/chatting-room'
+ | '/'
+ | '/matching-suggest/'
| '/matching-test/matching-test/step1'
| '/matching-test/matching-test/step2'
| '/matching-test/matching-test/step3'
fileRoutesByTo: FileRoutesByTo
to:
- | '/rooms'
| '/login'
| '/chat'
| '/matching'
- | '/mypage'
- | '/rooms/$chatId'
| '/signup/info'
| '/signup/info-more'
| '/signup/purpose'
@@ -371,34 +257,23 @@ export interface FileRouteTypes {
| '/signup/terms'
| '/signup/type'
| '/calendar'
- | '/campaign'
- | '/proposal'
- | '/rejection'
+ | '/matching-suggest/create'
| '/matching-test/matching-result'
| '/matching/brand'
| '/matching/campaign'
- | '/pre'
- | '/mypage/edit'
- | '/mypage/inquiry'
- | '/mypage/likes'
- | '/mypage/notifications'
- | '/mypage/privacy'
- | '/mypage/profileCard'
- | '/mypage/terms'
- | '/mypage/withdraw'
+ | '/chat/chatting-room'
| '/'
+ | '/matching-suggest'
| '/matching-test/matching-test/step1'
| '/matching-test/matching-test/step2'
| '/matching-test/matching-test/step3'
id:
| '__root__'
- | '/rooms'
| '/_main'
| '/_auth/login'
| '/_main/chat'
| '/_main/matching'
- | '/_main/mypage'
- | '/rooms/$chatId'
+ | '/_main/matching-suggest'
| '/_auth/signup/info'
| '/_auth/signup/info-more'
| '/_auth/signup/purpose'
@@ -406,29 +281,19 @@ export interface FileRouteTypes {
| '/_auth/signup/terms'
| '/_auth/signup/type'
| '/_main/_business/calendar'
- | '/_main/_business/campaign'
- | '/_main/_business/proposal'
- | '/_main/_business/rejection'
+ | '/_main/matching-suggest/create'
| '/_main/matching-test/matching-result'
| '/_main/matching/brand'
| '/_main/matching/campaign'
- | '/_main/_home/pre'
- | '/_main/mypage/edit'
- | '/_main/mypage/inquiry'
- | '/_main/mypage/likes'
- | '/_main/mypage/notifications'
- | '/_main/mypage/privacy'
- | '/_main/mypage/profileCard'
- | '/_main/mypage/terms'
- | '/_main/mypage/withdraw'
+ | '/_main/chat/chatting-room'
| '/_main/_home/'
+ | '/_main/matching-suggest/'
| '/_main/matching-test/matching-test/step1'
| '/_main/matching-test/matching-test/step2'
| '/_main/matching-test/matching-test/step3'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
- RoomsRouteRoute: typeof RoomsRouteRouteWithChildren
MainRoute: typeof MainRouteWithChildren
AuthLoginRouteRoute: typeof AuthLoginRouteRoute
AuthSignupInfoRouteRoute: typeof AuthSignupInfoRouteRoute
@@ -444,29 +309,15 @@ declare module '@tanstack/react-router' {
'/_main': {
id: '/_main'
path: ''
- fullPath: '/'
+ fullPath: ''
preLoaderRoute: typeof MainRouteImport
parentRoute: typeof rootRouteImport
}
- '/rooms': {
- id: '/rooms'
- path: '/rooms'
- fullPath: '/rooms'
- preLoaderRoute: typeof RoomsRouteRouteImport
- parentRoute: typeof rootRouteImport
- }
- '/rooms/$chatId': {
- id: '/rooms/$chatId'
- path: '/$chatId'
- fullPath: '/rooms/$chatId'
- preLoaderRoute: typeof RoomsChatIdRouteImport
- parentRoute: typeof RoomsRouteRoute
- }
- '/_main/mypage': {
- id: '/_main/mypage'
- path: '/mypage'
- fullPath: '/mypage'
- preLoaderRoute: typeof MainMypageRouteRouteImport
+ '/_main/matching-suggest': {
+ id: '/_main/matching-suggest'
+ path: '/matching-suggest'
+ fullPath: '/matching-suggest'
+ preLoaderRoute: typeof MainMatchingSuggestRouteRouteImport
parentRoute: typeof MainRoute
}
'/_main/matching': {
@@ -490,6 +341,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof AuthLoginRouteRouteImport
parentRoute: typeof rootRouteImport
}
+ '/_main/matching-suggest/': {
+ id: '/_main/matching-suggest/'
+ path: '/'
+ fullPath: '/matching-suggest/'
+ preLoaderRoute: typeof MainMatchingSuggestIndexRouteImport
+ parentRoute: typeof MainMatchingSuggestRouteRoute
+ }
'/_main/_home/': {
id: '/_main/_home/'
path: '/'
@@ -497,68 +355,12 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof MainHomeIndexRouteImport
parentRoute: typeof MainRoute
}
- '/_main/mypage/withdraw': {
- id: '/_main/mypage/withdraw'
- path: '/withdraw'
- fullPath: '/mypage/withdraw'
- preLoaderRoute: typeof MainMypageWithdrawRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/mypage/terms': {
- id: '/_main/mypage/terms'
- path: '/terms'
- fullPath: '/mypage/terms'
- preLoaderRoute: typeof MainMypageTermsRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/mypage/profileCard': {
- id: '/_main/mypage/profileCard'
- path: '/profileCard'
- fullPath: '/mypage/profileCard'
- preLoaderRoute: typeof MainMypageProfileCardRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/mypage/privacy': {
- id: '/_main/mypage/privacy'
- path: '/privacy'
- fullPath: '/mypage/privacy'
- preLoaderRoute: typeof MainMypagePrivacyRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/mypage/notifications': {
- id: '/_main/mypage/notifications'
- path: '/notifications'
- fullPath: '/mypage/notifications'
- preLoaderRoute: typeof MainMypageNotificationsRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/mypage/likes': {
- id: '/_main/mypage/likes'
- path: '/likes'
- fullPath: '/mypage/likes'
- preLoaderRoute: typeof MainMypageLikesRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/mypage/inquiry': {
- id: '/_main/mypage/inquiry'
- path: '/inquiry'
- fullPath: '/mypage/inquiry'
- preLoaderRoute: typeof MainMypageInquiryRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/mypage/edit': {
- id: '/_main/mypage/edit'
- path: '/edit'
- fullPath: '/mypage/edit'
- preLoaderRoute: typeof MainMypageEditRouteImport
- parentRoute: typeof MainMypageRouteRoute
- }
- '/_main/_home/pre': {
- id: '/_main/_home/pre'
- path: '/pre'
- fullPath: '/pre'
- preLoaderRoute: typeof MainHomePreRouteImport
- parentRoute: typeof MainRoute
+ '/_main/chat/chatting-room': {
+ id: '/_main/chat/chatting-room'
+ path: '/chatting-room'
+ fullPath: '/chat/chatting-room'
+ preLoaderRoute: typeof MainChatChattingRoomRouteImport
+ parentRoute: typeof MainChatRouteRoute
}
'/_main/matching/campaign': {
id: '/_main/matching/campaign'
@@ -581,26 +383,12 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof MainMatchingTestMatchingResultRouteRouteImport
parentRoute: typeof MainRoute
}
- '/_main/_business/rejection': {
- id: '/_main/_business/rejection'
- path: '/rejection'
- fullPath: '/rejection'
- preLoaderRoute: typeof MainBusinessRejectionRouteRouteImport
- parentRoute: typeof MainRoute
- }
- '/_main/_business/proposal': {
- id: '/_main/_business/proposal'
- path: '/proposal'
- fullPath: '/proposal'
- preLoaderRoute: typeof MainBusinessProposalRouteRouteImport
- parentRoute: typeof MainRoute
- }
- '/_main/_business/campaign': {
- id: '/_main/_business/campaign'
- path: '/campaign'
- fullPath: '/campaign'
- preLoaderRoute: typeof MainBusinessCampaignRouteRouteImport
- parentRoute: typeof MainRoute
+ '/_main/matching-suggest/create': {
+ id: '/_main/matching-suggest/create'
+ path: '/create'
+ fullPath: '/matching-suggest/create'
+ preLoaderRoute: typeof MainMatchingSuggestCreateRouteRouteImport
+ parentRoute: typeof MainMatchingSuggestRouteRoute
}
'/_main/_business/calendar': {
id: '/_main/_business/calendar'
@@ -675,16 +463,16 @@ declare module '@tanstack/react-router' {
}
}
-interface RoomsRouteRouteChildren {
- RoomsChatIdRoute: typeof RoomsChatIdRoute
+interface MainChatRouteRouteChildren {
+ MainChatChattingRoomRoute: typeof MainChatChattingRoomRoute
}
-const RoomsRouteRouteChildren: RoomsRouteRouteChildren = {
- RoomsChatIdRoute: RoomsChatIdRoute,
+const MainChatRouteRouteChildren: MainChatRouteRouteChildren = {
+ MainChatChattingRoomRoute: MainChatChattingRoomRoute,
}
-const RoomsRouteRouteWithChildren = RoomsRouteRoute._addFileChildren(
- RoomsRouteRouteChildren,
+const MainChatRouteRouteWithChildren = MainChatRouteRoute._addFileChildren(
+ MainChatRouteRouteChildren,
)
interface MainMatchingRouteRouteChildren {
@@ -700,42 +488,28 @@ const MainMatchingRouteRouteChildren: MainMatchingRouteRouteChildren = {
const MainMatchingRouteRouteWithChildren =
MainMatchingRouteRoute._addFileChildren(MainMatchingRouteRouteChildren)
-interface MainMypageRouteRouteChildren {
- MainMypageEditRoute: typeof MainMypageEditRoute
- MainMypageInquiryRoute: typeof MainMypageInquiryRoute
- MainMypageLikesRoute: typeof MainMypageLikesRoute
- MainMypageNotificationsRoute: typeof MainMypageNotificationsRoute
- MainMypagePrivacyRoute: typeof MainMypagePrivacyRoute
- MainMypageProfileCardRoute: typeof MainMypageProfileCardRoute
- MainMypageTermsRoute: typeof MainMypageTermsRoute
- MainMypageWithdrawRoute: typeof MainMypageWithdrawRoute
+interface MainMatchingSuggestRouteRouteChildren {
+ MainMatchingSuggestCreateRouteRoute: typeof MainMatchingSuggestCreateRouteRoute
+ MainMatchingSuggestIndexRoute: typeof MainMatchingSuggestIndexRoute
}
-const MainMypageRouteRouteChildren: MainMypageRouteRouteChildren = {
- MainMypageEditRoute: MainMypageEditRoute,
- MainMypageInquiryRoute: MainMypageInquiryRoute,
- MainMypageLikesRoute: MainMypageLikesRoute,
- MainMypageNotificationsRoute: MainMypageNotificationsRoute,
- MainMypagePrivacyRoute: MainMypagePrivacyRoute,
- MainMypageProfileCardRoute: MainMypageProfileCardRoute,
- MainMypageTermsRoute: MainMypageTermsRoute,
- MainMypageWithdrawRoute: MainMypageWithdrawRoute,
-}
+const MainMatchingSuggestRouteRouteChildren: MainMatchingSuggestRouteRouteChildren =
+ {
+ MainMatchingSuggestCreateRouteRoute: MainMatchingSuggestCreateRouteRoute,
+ MainMatchingSuggestIndexRoute: MainMatchingSuggestIndexRoute,
+ }
-const MainMypageRouteRouteWithChildren = MainMypageRouteRoute._addFileChildren(
- MainMypageRouteRouteChildren,
-)
+const MainMatchingSuggestRouteRouteWithChildren =
+ MainMatchingSuggestRouteRoute._addFileChildren(
+ MainMatchingSuggestRouteRouteChildren,
+ )
interface MainRouteChildren {
- MainChatRouteRoute: typeof MainChatRouteRoute
+ MainChatRouteRoute: typeof MainChatRouteRouteWithChildren
MainMatchingRouteRoute: typeof MainMatchingRouteRouteWithChildren
- MainMypageRouteRoute: typeof MainMypageRouteRouteWithChildren
+ MainMatchingSuggestRouteRoute: typeof MainMatchingSuggestRouteRouteWithChildren
MainBusinessCalendarRouteRoute: typeof MainBusinessCalendarRouteRoute
- MainBusinessCampaignRouteRoute: typeof MainBusinessCampaignRouteRoute
- MainBusinessProposalRouteRoute: typeof MainBusinessProposalRouteRoute
- MainBusinessRejectionRouteRoute: typeof MainBusinessRejectionRouteRoute
MainMatchingTestMatchingResultRouteRoute: typeof MainMatchingTestMatchingResultRouteRoute
- MainHomePreRoute: typeof MainHomePreRoute
MainHomeIndexRoute: typeof MainHomeIndexRoute
MainMatchingTestMatchingTestStep1RouteRoute: typeof MainMatchingTestMatchingTestStep1RouteRoute
MainMatchingTestMatchingTestStep2RouteRoute: typeof MainMatchingTestMatchingTestStep2RouteRoute
@@ -743,16 +517,12 @@ interface MainRouteChildren {
}
const MainRouteChildren: MainRouteChildren = {
- MainChatRouteRoute: MainChatRouteRoute,
+ MainChatRouteRoute: MainChatRouteRouteWithChildren,
MainMatchingRouteRoute: MainMatchingRouteRouteWithChildren,
- MainMypageRouteRoute: MainMypageRouteRouteWithChildren,
+ MainMatchingSuggestRouteRoute: MainMatchingSuggestRouteRouteWithChildren,
MainBusinessCalendarRouteRoute: MainBusinessCalendarRouteRoute,
- MainBusinessCampaignRouteRoute: MainBusinessCampaignRouteRoute,
- MainBusinessProposalRouteRoute: MainBusinessProposalRouteRoute,
- MainBusinessRejectionRouteRoute: MainBusinessRejectionRouteRoute,
MainMatchingTestMatchingResultRouteRoute:
MainMatchingTestMatchingResultRouteRoute,
- MainHomePreRoute: MainHomePreRoute,
MainHomeIndexRoute: MainHomeIndexRoute,
MainMatchingTestMatchingTestStep1RouteRoute:
MainMatchingTestMatchingTestStep1RouteRoute,
@@ -765,7 +535,6 @@ const MainRouteChildren: MainRouteChildren = {
const MainRouteWithChildren = MainRoute._addFileChildren(MainRouteChildren)
const rootRouteChildren: RootRouteChildren = {
- RoomsRouteRoute: RoomsRouteRouteWithChildren,
MainRoute: MainRouteWithChildren,
AuthLoginRouteRoute: AuthLoginRouteRoute,
AuthSignupInfoRouteRoute: AuthSignupInfoRouteRoute,
diff --git a/src/routes/_main.tsx b/src/routes/_main.tsx
index a082075..84eed7d 100644
--- a/src/routes/_main.tsx
+++ b/src/routes/_main.tsx
@@ -20,18 +20,21 @@ export const Route = createFileRoute("/_main")({
function MainLayout() {
const [hideBottomTab, setHideBottomTab] = useState(false);
+ const [hideHeader, setHideHeader] = useState(false);
return (
-
+
-
-
-
-
-

+ {!hideHeader && (
+
+
+
+
+

+
-
-
+
+ )}
diff --git a/src/routes/_main/chat/chat-content.tsx b/src/routes/_main/chat/chat-content.tsx
index 04f9e77..ef066b5 100644
--- a/src/routes/_main/chat/chat-content.tsx
+++ b/src/routes/_main/chat/chat-content.tsx
@@ -1,29 +1,20 @@
-
-import { useState, useMemo, useContext, useEffect } from "react";
-import { LayoutContext } from "../layout-context";
+import { useState, useMemo } from "react";
import { type SortOption, SORT_LABEL } from "./types/SortOption";
import { rooms } from "../../../data/chat-room";
import ChatListHeader from "./components/ChatListHeader";
import SortFilterSheet from "./components/SortingSheet";
import ChatList from "./components/ChatList";
import { EmptyChatState } from "./components/EmptyState";
+import { useHideBottomTab } from "../../../hooks/useHideBottomTab";
function ChatPage() {
const [activeTab, setActiveTab] = useState<"sent" | "received">("sent"); // 보낸 제안 / 받은 제안 탭
const [isSortOpen, setIsSortOpen] = useState(false); // 정렬 바텀시트
const [sort, setSort] = useState("latest"); // 현재 선택된 정렬 옵션
const [pendingSort, setPendingSort] = useState(sort); // 바텀시트에서 고른 값
- const layout = useContext(LayoutContext); // 레이아웃
-
- useEffect(() => {
- if (!layout) return;
-
- layout.setHideBottomTab(isSortOpen);
- return () => {
- layout.setHideBottomTab(false);
- };
- }, [isSortOpen, layout]);
+ // 바텀탭 숨기기 (바텀시트 열렸을 때)
+ useHideBottomTab(isSortOpen);
// 받은제안/보낸제안 필터
const filteredRooms = useMemo(() => {
diff --git a/src/routes/_main/layout-context.tsx b/src/routes/_main/layout-context.tsx
index bf70feb..67421c1 100644
--- a/src/routes/_main/layout-context.tsx
+++ b/src/routes/_main/layout-context.tsx
@@ -3,6 +3,8 @@ import { createContext } from "react";
type LayoutContextType = {
hideBottomTab: boolean;
setHideBottomTab: (v: boolean) => void;
+ hideHeader: boolean;
+ setHideHeader: (v: boolean) => void;
};
export const LayoutContext = createContext(null);
diff --git a/src/routes/_main/matching-suggest/components/ProfileSelector.tsx b/src/routes/_main/matching-suggest/components/ProfileSelector.tsx
new file mode 100644
index 0000000..775b598
--- /dev/null
+++ b/src/routes/_main/matching-suggest/components/ProfileSelector.tsx
@@ -0,0 +1,49 @@
+interface ProfileSelectorProps {
+ username?: string;
+ onClick?: () => void;
+}
+
+export default function ProfileSelector({
+ username = "@ivveeee",
+ onClick,
+}: ProfileSelectorProps) {
+ return (
+
+ );
+}
diff --git a/src/routes/_main/matching-suggest/components/SuggestHeader.tsx b/src/routes/_main/matching-suggest/components/SuggestHeader.tsx
new file mode 100644
index 0000000..1211168
--- /dev/null
+++ b/src/routes/_main/matching-suggest/components/SuggestHeader.tsx
@@ -0,0 +1,46 @@
+import { useNavigate } from "@tanstack/react-router";
+
+interface SuggestHeaderProps {
+ title: string;
+ onBack?: () => void;
+}
+
+export default function SuggestHeader({ title, onBack }: SuggestHeaderProps) {
+ const navigate = useNavigate();
+
+ const handleBack = () => {
+ if (onBack) {
+ onBack();
+ } else {
+ navigate({ to: "/" });
+ }
+ };
+
+ return (
+
+
+
+ {title}
+
+
+ );
+}
diff --git a/src/routes/_main/matching-suggest/create/create-campaign-content.tsx b/src/routes/_main/matching-suggest/create/create-campaign-content.tsx
new file mode 100644
index 0000000..67a6118
--- /dev/null
+++ b/src/routes/_main/matching-suggest/create/create-campaign-content.tsx
@@ -0,0 +1,293 @@
+import { useState } from "react";
+import { useNavigate, useSearch } from "@tanstack/react-router";
+import { useForm, useWatch } from "react-hook-form";
+import { zodResolver } from "@hookform/resolvers/zod";
+import Button from "../../../../components/common/Button";
+import FilterBottomSheet from "../../../../components/common/FilterBottomSheet";
+import {
+ TextInput,
+ TextArea,
+ SelectField,
+ DateField,
+ FeeInput,
+} from "../../../../components/form";
+import { useHideBottomTab } from "../../../../hooks/useHideBottomTab";
+import { CheckIcon } from "../../../_auth/components/CheckIcon";
+import ExistSuggestIcon from "../../../../assets/icon/exist-suggest.svg";
+import MiniLogo from "../../../../assets/logo/mini-logo.svg";
+import { existingCampaigns } from "../../../../data/existing-campaigns";
+import ProfileSelector from "../components/ProfileSelector";
+import {
+ campaignFormSchema,
+ defaultCampaignFormValues,
+ type CampaignFormData,
+} from "./schema";
+
+export default function CreateCampaignContent() {
+ const navigate = useNavigate();
+ const { type } = useSearch({ from: "/_main/matching-suggest/create" });
+
+ // 바텀시트 상태 (기존 캠페인일 때만 열림)
+ const [isSheetOpen, setIsSheetOpen] = useState(type === "existing");
+ const [selectedCampaignIds, setSelectedCampaignIds] = useState([1]);
+
+ // 바텀탭 숨기기 (바텀시트 열렸을 때)
+ useHideBottomTab(isSheetOpen);
+
+ // react-hook-form + zod
+ const {
+ control,
+ setValue,
+ handleSubmit,
+ formState: { errors },
+ } = useForm({
+ resolver: zodResolver(campaignFormSchema),
+ defaultValues: defaultCampaignFormValues,
+ });
+
+ const formValues = useWatch({ control, defaultValue: defaultCampaignFormValues });
+
+ const handleToggleCampaign = (id: number) => {
+ setSelectedCampaignIds((prev) =>
+ prev.includes(id) ? prev.filter((i) => i !== id) : [...prev, id]
+ );
+ };
+
+ const handleSheetSubmit = () => {
+ console.log("선택된 캠페인:", selectedCampaignIds);
+ setIsSheetOpen(false);
+ };
+
+ const handleSheetClose = () => {
+ setIsSheetOpen(false);
+ navigate({ to: "/matching-suggest" });
+ };
+
+ const onSubmit = (data: CampaignFormData) => {
+ console.log("캠페인 제안하기", { type, selectedCampaignIds, data });
+ };
+
+ // 선택된 캠페인 이름 가져오기
+ const selectedCampaignName = existingCampaigns.find(
+ (c) => selectedCampaignIds.includes(c.id)
+ )?.name;
+
+ const title =
+ type === "existing" && selectedCampaignName
+ ? selectedCampaignName
+ : type === "existing"
+ ? "기존 캠페인 제안하기"
+ : "신규 캠페인 제안하기";
+
+ return (
+
+ {/* 스크롤 영역 */}
+
+
+ {/* 하단 버튼 */}
+
+
+
+
+ {/* 기존 캠페인 선택 바텀시트 */}
+ {type === "existing" && (
+
+ {/* 헤더 */}
+
+

+
기존 캠페인 제안
+
+
+ {/* 캠페인 목록 */}
+
+ {existingCampaigns.map((campaign) => (
+
+ ))}
+
+
+ {/* 선택 완료 버튼 */}
+
+
+
+
+ )}
+
+ );
+}
diff --git a/src/routes/_main/matching-suggest/create/route.tsx b/src/routes/_main/matching-suggest/create/route.tsx
new file mode 100644
index 0000000..3808117
--- /dev/null
+++ b/src/routes/_main/matching-suggest/create/route.tsx
@@ -0,0 +1,11 @@
+import { createFileRoute } from "@tanstack/react-router";
+import CreateCampaignContent from "./create-campaign-content";
+
+export const Route = createFileRoute("/_main/matching-suggest/create")({
+ validateSearch: (search: Record) => {
+ return {
+ type: (search.type as "new" | "existing") || "new",
+ };
+ },
+ component: CreateCampaignContent,
+});
diff --git a/src/routes/_main/matching-suggest/create/schema.ts b/src/routes/_main/matching-suggest/create/schema.ts
new file mode 100644
index 0000000..6f715e0
--- /dev/null
+++ b/src/routes/_main/matching-suggest/create/schema.ts
@@ -0,0 +1,37 @@
+import { z } from "zod";
+
+export const campaignFormSchema = z.object({
+ campaignName: z
+ .string()
+ .min(1, "캠페인명을 입력해주세요")
+ .max(30, "캠페인명은 30자 이내로 입력해주세요"),
+ description: z
+ .string()
+ .min(1, "설명을 입력해주세요")
+ .max(300, "설명은 300자 이내로 입력해주세요"),
+ format: z.string().min(1, "형식을 선택해주세요"),
+ category: z.string().min(1, "종류를 선택해주세요"),
+ tone: z.string().min(1, "톤을 선택해주세요"),
+ involvement: z.string().min(1, "관여도를 선택해주세요"),
+ usageScope: z.string().min(1, "활용 범위를 선택해주세요"),
+ sponsorProduct: z.string().min(1, "협찬품을 선택해주세요"),
+ fee: z.string().min(1, "원고료를 입력해주세요"),
+ startDate: z.string().min(1, "시작 날짜를 선택해주세요"),
+ endDate: z.string().min(1, "끝 날짜를 선택해주세요"),
+});
+
+export type CampaignFormData = z.infer;
+
+export const defaultCampaignFormValues: CampaignFormData = {
+ campaignName: "",
+ description: "",
+ format: "",
+ category: "",
+ tone: "",
+ involvement: "",
+ usageScope: "",
+ sponsorProduct: "",
+ fee: "",
+ startDate: "",
+ endDate: "",
+};
diff --git a/src/routes/_main/matching-suggest/index.tsx b/src/routes/_main/matching-suggest/index.tsx
new file mode 100644
index 0000000..cf24f19
--- /dev/null
+++ b/src/routes/_main/matching-suggest/index.tsx
@@ -0,0 +1,6 @@
+import { createFileRoute } from "@tanstack/react-router";
+import MatchingSuggestContent from "./matching-suggest-content";
+
+export const Route = createFileRoute("/_main/matching-suggest/")({
+ component: MatchingSuggestContent,
+});
diff --git a/src/routes/_main/matching-suggest/matching-suggest-content.tsx b/src/routes/_main/matching-suggest/matching-suggest-content.tsx
new file mode 100644
index 0000000..a7cf3fe
--- /dev/null
+++ b/src/routes/_main/matching-suggest/matching-suggest-content.tsx
@@ -0,0 +1,42 @@
+import { useNavigate } from "@tanstack/react-router";
+import Button from "../../../components/common/Button";
+import NewSuggestIcon from "../../../assets/icon/new-suggest.svg";
+import ExistSuggestIcon from "../../../assets/icon/exist-suggest.svg";
+
+export default function MatchingSuggestContent() {
+ const navigate = useNavigate();
+
+ const handleNewCampaign = () => {
+ navigate({ to: "/matching-suggest/create", search: { type: "new" } });
+ };
+
+ const handleExistingCampaign = () => {
+ navigate({ to: "/matching-suggest/create", search: { type: "existing" } });
+ };
+
+ return (
+
+
+
+
+
+ );
+}
diff --git a/src/routes/_main/matching-suggest/route.tsx b/src/routes/_main/matching-suggest/route.tsx
new file mode 100644
index 0000000..41d1dd4
--- /dev/null
+++ b/src/routes/_main/matching-suggest/route.tsx
@@ -0,0 +1,28 @@
+import { createFileRoute, Outlet } from "@tanstack/react-router";
+import { useContext, useEffect } from "react";
+import { LayoutContext } from "../layout-context";
+import SuggestHeader from "./components/SuggestHeader";
+
+export const Route = createFileRoute("/_main/matching-suggest")({
+ component: MatchingSuggestLayout,
+});
+
+function MatchingSuggestLayout() {
+ const layout = useContext(LayoutContext);
+
+ useEffect(() => {
+ if (!layout) return;
+ layout.setHideHeader(true);
+
+ return () => {
+ layout.setHideHeader(false);
+ };
+ }, [layout]);
+
+ return (
+
+
+
+
+ );
+}
diff --git a/src/routes/_main/matching/brand/brand-content.tsx b/src/routes/_main/matching/brand/brand-content.tsx
index 609a0a8..959c3fd 100644
--- a/src/routes/_main/matching/brand/brand-content.tsx
+++ b/src/routes/_main/matching/brand/brand-content.tsx
@@ -7,6 +7,7 @@ import BrandFilterBar from "./components/BrandFilterBar";
import { Route } from "./route";
import FilterBottomSheet from "../../../../components/common/FilterBottomSheet";
import MatchingFilter from "../components/MatchingFilter";
+import { useHideBottomTab } from "../../../../hooks/useHideBottomTab";
export default function BrandContent() {
@@ -17,6 +18,9 @@ export default function BrandContent() {
const [sortOption, setSortOption] = useState("정렬 필터");
const [selectedTags, setSelectedTags] = useState([]);
+ // 바텀탭 숨기기 (바텀시트 열렸을 때)
+ useHideBottomTab(isFilterOpen);
+
const handleCategoryChange = (newCategory: BrandCategory) => {
navigate({
to: "/matching/brand",
diff --git a/src/routes/_main/matching/campaign/campaign-content.tsx b/src/routes/_main/matching/campaign/campaign-content.tsx
index 4be75e8..b83fb6a 100644
--- a/src/routes/_main/matching/campaign/campaign-content.tsx
+++ b/src/routes/_main/matching/campaign/campaign-content.tsx
@@ -7,6 +7,7 @@ import CampaignFilterBar from "./components/CampaignFilterBar";
import { Route } from "./route";
import FilterBottomSheet from "../../../../components/common/FilterBottomSheet";
import MatchingFilter from "../components/MatchingFilter";
+import { useHideBottomTab } from "../../../../hooks/useHideBottomTab";
export default function CampaignContent() {
@@ -17,6 +18,9 @@ export default function CampaignContent() {
const [sortOption, setSortOption] = useState("정렬 필터");
const [selectedTags, setSelectedTags] = useState([]);
+ // 바텀탭 숨기기 (바텀시트 열렸을 때)
+ useHideBottomTab(isFilterOpen);
+
const handleCategoryChange = (newCategory: CampaignCategory) => {
navigate({
to: "/matching/campaign",
From 6b41d09b49675d79f5f11ec9181b23486a63b60c Mon Sep 17 00:00:00 2001
From: seyun31 <2ne1jenna@naver.com>
Date: Thu, 29 Jan 2026 01:35:39 +0900
Subject: [PATCH 2/7] =?UTF-8?q?feat:=20=EC=A0=9C=EC=95=88=ED=95=98?=
=?UTF-8?q?=EA=B8=B0=20=EC=83=9D=EC=84=B1=20=ED=8F=BC=20=EB=B0=94=ED=85=80?=
=?UTF-8?q?=EC=8B=9C=ED=8A=B8=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 캠페인 생성 폼에 다양한 선택 바텀시트 추가 (형식, 종류, 톤, 관여도, 활용 범위, 협찬품)
- 폼 필드 컴포넌트 스타일 통일 및 높이 조정
- 날짜 필드 포맷팅 기능 추가
---
package.json | 2 +-
pnpm-lock.yaml | 681 +++++++++---------
src/components/common/FilterBottomSheet.tsx | 4 +-
src/components/form/DateField.tsx | 24 +-
src/components/form/FeeInput.tsx | 6 +-
src/components/form/SelectField.tsx | 2 +-
src/components/form/TextInput.tsx | 2 +-
src/routeTree.gen.ts | 6 +-
.../create/campaignOptions.ts | 40 +
.../create/components/SelectBottomSheet.tsx | 122 ++++
.../create/create-campaign-content.tsx | 134 +++-
11 files changed, 644 insertions(+), 379 deletions(-)
create mode 100644 src/routes/_main/matching-suggest/create/campaignOptions.ts
create mode 100644 src/routes/_main/matching-suggest/create/components/SelectBottomSheet.tsx
diff --git a/package.json b/package.json
index ef6940b..5ced8d2 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"react-hook-form": "^7.71.0",
"react-mobile-picker": "^1.2.0",
"tailwind-merge": "^3.4.0",
- "zod": "3.23.8",
+ "zod": "^4.3.6",
"zustand": "^5.0.9"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4cff640..9f5b5c7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,16 +10,16 @@ importers:
dependencies:
'@hookform/resolvers':
specifier: ^5.2.2
- version: 5.2.2(react-hook-form@7.71.1(react@19.2.3))
+ version: 5.2.2(react-hook-form@7.71.1(react@19.2.4))
'@iconify/react':
specifier: ^6.0.2
- version: 6.0.2(react@19.2.3)
+ version: 6.0.2(react@19.2.4)
'@tanstack/react-query':
specifier: ^5.90.16
- version: 5.90.17(react@19.2.3)
+ version: 5.90.20(react@19.2.4)
'@tanstack/react-router':
specifier: ^1.145.7
- version: 1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
clsx:
specifier: ^2.1.1
version: 2.1.1
@@ -28,25 +28,25 @@ importers:
version: 1.4.0
react:
specifier: ^19.2.0
- version: 19.2.3
+ version: 19.2.4
react-dom:
specifier: ^19.2.0
- version: 19.2.3(react@19.2.3)
+ version: 19.2.4(react@19.2.4)
react-hook-form:
specifier: ^7.71.0
- version: 7.71.1(react@19.2.3)
+ version: 7.71.1(react@19.2.4)
react-mobile-picker:
specifier: ^1.2.0
- version: 1.2.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
tailwind-merge:
specifier: ^3.4.0
version: 3.4.0
zod:
- specifier: 3.23.8
- version: 3.23.8
+ specifier: ^4.3.6
+ version: 4.3.6
zustand:
specifier: ^5.0.9
- version: 5.0.10(@types/react@19.2.8)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3))
+ version: 5.0.10(@types/react@19.2.10)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4))
devDependencies:
'@babel/plugin-bugfix-firefox-class-in-computed-class-key':
specifier: ^7.28.5
@@ -59,19 +59,19 @@ importers:
version: 4.1.18
'@tanstack/router-devtools':
specifier: ^1.145.7
- version: 1.150.0(@tanstack/react-router@1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.150.0)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ version: 1.157.16(@tanstack/react-router@1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.157.16)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@tanstack/router-plugin':
specifier: ^1.145.7
- version: 1.150.0(@tanstack/react-router@1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0))
+ version: 1.157.16(@tanstack/react-router@1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0))
'@types/node':
specifier: ^24.10.1
version: 24.10.9
'@types/react':
specifier: ^19.2.5
- version: 19.2.8
+ version: 19.2.10
'@types/react-dom':
specifier: ^19.2.3
- version: 19.2.3(@types/react@19.2.8)
+ version: 19.2.3(@types/react@19.2.10)
'@vitejs/plugin-react':
specifier: ^5.1.1
version: 5.1.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0))
@@ -101,7 +101,7 @@ importers:
version: 5.9.3
typescript-eslint:
specifier: ^8.46.4
- version: 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
vite:
specifier: ^7.2.4
version: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)
@@ -157,8 +157,8 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/helper-define-polyfill-provider@0.6.5':
- resolution: {integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==}
+ '@babel/helper-define-polyfill-provider@0.6.6':
+ resolution: {integrity: sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
@@ -946,128 +946,128 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.55.1':
- resolution: {integrity: sha512-9R0DM/ykwfGIlNu6+2U09ga0WXeZ9MRC2Ter8jnz8415VbuIykVuc6bhdrbORFZANDmTDvq26mJrEVTl8TdnDg==}
+ '@rollup/rollup-android-arm-eabi@4.57.0':
+ resolution: {integrity: sha512-tPgXB6cDTndIe1ah7u6amCI1T0SsnlOuKgg10Xh3uizJk4e5M1JGaUMk7J4ciuAUcFpbOiNhm2XIjP9ON0dUqA==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.55.1':
- resolution: {integrity: sha512-eFZCb1YUqhTysgW3sj/55du5cG57S7UTNtdMjCW7LwVcj3dTTcowCsC8p7uBdzKsZYa8J7IDE8lhMI+HX1vQvg==}
+ '@rollup/rollup-android-arm64@4.57.0':
+ resolution: {integrity: sha512-sa4LyseLLXr1onr97StkU1Nb7fWcg6niokTwEVNOO7awaKaoRObQ54+V/hrF/BP1noMEaaAW6Fg2d/CfLiq3Mg==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.55.1':
- resolution: {integrity: sha512-p3grE2PHcQm2e8PSGZdzIhCKbMCw/xi9XvMPErPhwO17vxtvCN5FEA2mSLgmKlCjHGMQTP6phuQTYWUnKewwGg==}
+ '@rollup/rollup-darwin-arm64@4.57.0':
+ resolution: {integrity: sha512-/NNIj9A7yLjKdmkx5dC2XQ9DmjIECpGpwHoGmA5E1AhU0fuICSqSWScPhN1yLCkEdkCwJIDu2xIeLPs60MNIVg==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.55.1':
- resolution: {integrity: sha512-rDUjG25C9qoTm+e02Esi+aqTKSBYwVTaoS1wxcN47/Luqef57Vgp96xNANwt5npq9GDxsH7kXxNkJVEsWEOEaQ==}
+ '@rollup/rollup-darwin-x64@4.57.0':
+ resolution: {integrity: sha512-xoh8abqgPrPYPr7pTYipqnUi1V3em56JzE/HgDgitTqZBZ3yKCWI+7KUkceM6tNweyUKYru1UMi7FC060RyKwA==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.55.1':
- resolution: {integrity: sha512-+JiU7Jbp5cdxekIgdte0jfcu5oqw4GCKr6i3PJTlXTCU5H5Fvtkpbs4XJHRmWNXF+hKmn4v7ogI5OQPaupJgOg==}
+ '@rollup/rollup-freebsd-arm64@4.57.0':
+ resolution: {integrity: sha512-PCkMh7fNahWSbA0OTUQ2OpYHpjZZr0hPr8lId8twD7a7SeWrvT3xJVyza+dQwXSSq4yEQTMoXgNOfMCsn8584g==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.55.1':
- resolution: {integrity: sha512-V5xC1tOVWtLLmr3YUk2f6EJK4qksksOYiz/TCsFHu/R+woubcLWdC9nZQmwjOAbmExBIVKsm1/wKmEy4z4u4Bw==}
+ '@rollup/rollup-freebsd-x64@4.57.0':
+ resolution: {integrity: sha512-1j3stGx+qbhXql4OCDZhnK7b01s6rBKNybfsX+TNrEe9JNq4DLi1yGiR1xW+nL+FNVvI4D02PUnl6gJ/2y6WJA==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.55.1':
- resolution: {integrity: sha512-Rn3n+FUk2J5VWx+ywrG/HGPTD9jXNbicRtTM11e/uorplArnXZYsVifnPPqNNP5BsO3roI4n8332ukpY/zN7rQ==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.57.0':
+ resolution: {integrity: sha512-eyrr5W08Ms9uM0mLcKfM/Uzx7hjhz2bcjv8P2uynfj0yU8GGPdz8iYrBPhiLOZqahoAMB8ZiolRZPbbU2MAi6Q==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.55.1':
- resolution: {integrity: sha512-grPNWydeKtc1aEdrJDWk4opD7nFtQbMmV7769hiAaYyUKCT1faPRm2av8CX1YJsZ4TLAZcg9gTR1KvEzoLjXkg==}
+ '@rollup/rollup-linux-arm-musleabihf@4.57.0':
+ resolution: {integrity: sha512-Xds90ITXJCNyX9pDhqf85MKWUI4lqjiPAipJ8OLp8xqI2Ehk+TCVhF9rvOoN8xTbcafow3QOThkNnrM33uCFQA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.55.1':
- resolution: {integrity: sha512-a59mwd1k6x8tXKcUxSyISiquLwB5pX+fJW9TkWU46lCqD/GRDe9uDN31jrMmVP3feI3mhAdvcCClhV8V5MhJFQ==}
+ '@rollup/rollup-linux-arm64-gnu@4.57.0':
+ resolution: {integrity: sha512-Xws2KA4CLvZmXjy46SQaXSejuKPhwVdaNinldoYfqruZBaJHqVo6hnRa8SDo9z7PBW5x84SH64+izmldCgbezw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.55.1':
- resolution: {integrity: sha512-puS1MEgWX5GsHSoiAsF0TYrpomdvkaXm0CofIMG5uVkP6IBV+ZO9xhC5YEN49nsgYo1DuuMquF9+7EDBVYu4uA==}
+ '@rollup/rollup-linux-arm64-musl@4.57.0':
+ resolution: {integrity: sha512-hrKXKbX5FdaRJj7lTMusmvKbhMJSGWJ+w++4KmjiDhpTgNlhYobMvKfDoIWecy4O60K6yA4SnztGuNTQF+Lplw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loong64-gnu@4.55.1':
- resolution: {integrity: sha512-r3Wv40in+lTsULSb6nnoudVbARdOwb2u5fpeoOAZjFLznp6tDU8kd+GTHmJoqZ9lt6/Sys33KdIHUaQihFcu7g==}
+ '@rollup/rollup-linux-loong64-gnu@4.57.0':
+ resolution: {integrity: sha512-6A+nccfSDGKsPm00d3xKcrsBcbqzCTAukjwWK6rbuAnB2bHaL3r9720HBVZ/no7+FhZLz/U3GwwZZEh6tOSI8Q==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-loong64-musl@4.55.1':
- resolution: {integrity: sha512-MR8c0+UxAlB22Fq4R+aQSPBayvYa3+9DrwG/i1TKQXFYEaoW3B5b/rkSRIypcZDdWjWnpcvxbNaAJDcSbJU3Lw==}
+ '@rollup/rollup-linux-loong64-musl@4.57.0':
+ resolution: {integrity: sha512-4P1VyYUe6XAJtQH1Hh99THxr0GKMMwIXsRNOceLrJnaHTDgk1FTcTimDgneRJPvB3LqDQxUmroBclQ1S0cIJwQ==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.55.1':
- resolution: {integrity: sha512-3KhoECe1BRlSYpMTeVrD4sh2Pw2xgt4jzNSZIIPLFEsnQn9gAnZagW9+VqDqAHgm1Xc77LzJOo2LdigS5qZ+gw==}
+ '@rollup/rollup-linux-ppc64-gnu@4.57.0':
+ resolution: {integrity: sha512-8Vv6pLuIZCMcgXre6c3nOPhE0gjz1+nZP6T+hwWjr7sVH8k0jRkH+XnfjjOTglyMBdSKBPPz54/y1gToSKwrSQ==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-ppc64-musl@4.55.1':
- resolution: {integrity: sha512-ziR1OuZx0vdYZZ30vueNZTg73alF59DicYrPViG0NEgDVN8/Jl87zkAPu4u6VjZST2llgEUjaiNl9JM6HH1Vdw==}
+ '@rollup/rollup-linux-ppc64-musl@4.57.0':
+ resolution: {integrity: sha512-r1te1M0Sm2TBVD/RxBPC6RZVwNqUTwJTA7w+C/IW5v9Ssu6xmxWEi+iJQlpBhtUiT1raJ5b48pI8tBvEjEFnFA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.55.1':
- resolution: {integrity: sha512-uW0Y12ih2XJRERZ4jAfKamTyIHVMPQnTZcQjme2HMVDAHY4amf5u414OqNYC+x+LzRdRcnIG1YodLrrtA8xsxw==}
+ '@rollup/rollup-linux-riscv64-gnu@4.57.0':
+ resolution: {integrity: sha512-say0uMU/RaPm3CDQLxUUTF2oNWL8ysvHkAjcCzV2znxBr23kFfaxocS9qJm+NdkRhF8wtdEEAJuYcLPhSPbjuQ==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.55.1':
- resolution: {integrity: sha512-u9yZ0jUkOED1BFrqu3BwMQoixvGHGZ+JhJNkNKY/hyoEgOwlqKb62qu+7UjbPSHYjiVy8kKJHvXKv5coH4wDeg==}
+ '@rollup/rollup-linux-riscv64-musl@4.57.0':
+ resolution: {integrity: sha512-/MU7/HizQGsnBREtRpcSbSV1zfkoxSTR7wLsRmBPQ8FwUj5sykrP1MyJTvsxP5KBq9SyE6kH8UQQQwa0ASeoQQ==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.55.1':
- resolution: {integrity: sha512-/0PenBCmqM4ZUd0190j7J0UsQ/1nsi735iPRakO8iPciE7BQ495Y6msPzaOmvx0/pn+eJVVlZrNrSh4WSYLxNg==}
+ '@rollup/rollup-linux-s390x-gnu@4.57.0':
+ resolution: {integrity: sha512-Q9eh+gUGILIHEaJf66aF6a414jQbDnn29zeu0eX3dHMuysnhTvsUvZTCAyZ6tJhUjnvzBKE4FtuaYxutxRZpOg==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.55.1':
- resolution: {integrity: sha512-a8G4wiQxQG2BAvo+gU6XrReRRqj+pLS2NGXKm8io19goR+K8lw269eTrPkSdDTALwMmJp4th2Uh0D8J9bEV1vg==}
+ '@rollup/rollup-linux-x64-gnu@4.57.0':
+ resolution: {integrity: sha512-OR5p5yG5OKSxHReWmwvM0P+VTPMwoBS45PXTMYaskKQqybkS3Kmugq1W+YbNWArF8/s7jQScgzXUhArzEQ7x0A==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.55.1':
- resolution: {integrity: sha512-bD+zjpFrMpP/hqkfEcnjXWHMw5BIghGisOKPj+2NaNDuVT+8Ds4mPf3XcPHuat1tz89WRL+1wbcxKY3WSbiT7w==}
+ '@rollup/rollup-linux-x64-musl@4.57.0':
+ resolution: {integrity: sha512-XeatKzo4lHDsVEbm1XDHZlhYZZSQYym6dg2X/Ko0kSFgio+KXLsxwJQprnR48GvdIKDOpqWqssC3iBCjoMcMpw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-openbsd-x64@4.55.1':
- resolution: {integrity: sha512-eLXw0dOiqE4QmvikfQ6yjgkg/xDM+MdU9YJuP4ySTibXU0oAvnEWXt7UDJmD4UkYialMfOGFPJnIHSe/kdzPxg==}
+ '@rollup/rollup-openbsd-x64@4.57.0':
+ resolution: {integrity: sha512-Lu71y78F5qOfYmubYLHPcJm74GZLU6UJ4THkf/a1K7Tz2ycwC2VUbsqbJAXaR6Bx70SRdlVrt2+n5l7F0agTUw==}
cpu: [x64]
os: [openbsd]
- '@rollup/rollup-openharmony-arm64@4.55.1':
- resolution: {integrity: sha512-xzm44KgEP11te3S2HCSyYf5zIzWmx3n8HDCc7EE59+lTcswEWNpvMLfd9uJvVX8LCg9QWG67Xt75AuHn4vgsXw==}
+ '@rollup/rollup-openharmony-arm64@4.57.0':
+ resolution: {integrity: sha512-v5xwKDWcu7qhAEcsUubiav7r+48Uk/ENWdr82MBZZRIm7zThSxCIVDfb3ZeRRq9yqk+oIzMdDo6fCcA5DHfMyA==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.55.1':
- resolution: {integrity: sha512-yR6Bl3tMC/gBok5cz/Qi0xYnVbIxGx5Fcf/ca0eB6/6JwOY+SRUcJfI0OpeTpPls7f194as62thCt/2BjxYN8g==}
+ '@rollup/rollup-win32-arm64-msvc@4.57.0':
+ resolution: {integrity: sha512-XnaaaSMGSI6Wk8F4KK3QP7GfuuhjGchElsVerCplUuxRIzdvZ7hRBpLR0omCmw+kI2RFJB80nenhOoGXlJ5TfQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.55.1':
- resolution: {integrity: sha512-3fZBidchE0eY0oFZBnekYCfg+5wAB0mbpCBuofh5mZuzIU/4jIVkbESmd2dOsFNS78b53CYv3OAtwqkZZmU5nA==}
+ '@rollup/rollup-win32-ia32-msvc@4.57.0':
+ resolution: {integrity: sha512-3K1lP+3BXY4t4VihLw5MEg6IZD3ojSYzqzBG571W3kNQe4G4CcFpSUQVgurYgib5d+YaCjeFow8QivWp8vuSvA==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.55.1':
- resolution: {integrity: sha512-xGGY5pXj69IxKb4yv/POoocPy/qmEGhimy/FoTpTSVju3FYXUQQMFCaZZXJVidsmGxRioZAwpThl/4zX41gRKg==}
+ '@rollup/rollup-win32-x64-gnu@4.57.0':
+ resolution: {integrity: sha512-MDk610P/vJGc5L5ImE4k5s+GZT3en0KoK1MKPXCRgzmksAMk79j4h3k1IerxTNqwDLxsGxStEZVBqG0gIqZqoA==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.55.1':
- resolution: {integrity: sha512-SPEpaL6DX4rmcXtnhdrQYgzQ5W2uW3SCJch88lB2zImhJRhIIK44fkUrgIV/Q8yUNfw5oyZ5vkeQsZLhCb06lw==}
+ '@rollup/rollup-win32-x64-msvc@4.57.0':
+ resolution: {integrity: sha512-Zv7v6q6aV+VslnpwzqKAmrk5JdVkLUzok2208ZXGipjb+msxBr/fJPZyeEXiFgH7k62Ak0SLIfxQRZQvTuf7rQ==}
cpu: [x64]
os: [win32]
@@ -1165,32 +1165,32 @@ packages:
'@tailwindcss/postcss@4.1.18':
resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==}
- '@tanstack/history@1.145.7':
- resolution: {integrity: sha512-gMo/ReTUp0a3IOcZoI3hH6PLDC2R/5ELQ7P2yu9F6aEkA0wSQh+Q4qzMrtcKvF2ut0oE+16xWCGDo/TdYd6cEQ==}
+ '@tanstack/history@1.154.14':
+ resolution: {integrity: sha512-xyIfof8eHBuub1CkBnbKNKQXeRZC4dClhmzePHVOEel4G7lk/dW+TQ16da7CFdeNLv6u6Owf5VoBQxoo6DFTSA==}
engines: {node: '>=12'}
- '@tanstack/query-core@5.90.17':
- resolution: {integrity: sha512-hDww+RyyYhjhUfoYQ4es6pbgxY7LNiPWxt4l1nJqhByjndxJ7HIjDxTBtfvMr5HwjYavMrd+ids5g4Rfev3lVQ==}
+ '@tanstack/query-core@5.90.20':
+ resolution: {integrity: sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==}
- '@tanstack/react-query@5.90.17':
- resolution: {integrity: sha512-PGc2u9KLwohDUSchjW9MZqeDQJfJDON7y4W7REdNBgiFKxQy+Pf7eGjiFWEj5xPqKzAeHYdAb62IWI1a9UJyGQ==}
+ '@tanstack/react-query@5.90.20':
+ resolution: {integrity: sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==}
peerDependencies:
react: ^18 || ^19
- '@tanstack/react-router-devtools@1.150.0':
- resolution: {integrity: sha512-TlvTE+XK5XVCfYjazoMWkjyyPKe4kMw2nCA7EuWoYUJKOqRW5oKvBY7auViGWxp51FKDEjV3bbok3wPKBYwZww==}
+ '@tanstack/react-router-devtools@1.157.16':
+ resolution: {integrity: sha512-g6ekyzumfLBX6T5e+Vu2r37Z2CFJKrWRFqIy3vZ6A3x7OcuPV8uXNjyrLSiT/IsGTiF8YzwI4nWJa4fyd7NlCw==}
engines: {node: '>=12'}
peerDependencies:
- '@tanstack/react-router': ^1.150.0
- '@tanstack/router-core': ^1.150.0
+ '@tanstack/react-router': ^1.157.16
+ '@tanstack/router-core': ^1.157.16
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
peerDependenciesMeta:
'@tanstack/router-core':
optional: true
- '@tanstack/react-router@1.150.0':
- resolution: {integrity: sha512-k/oycTCpBT2XoEk9dNd/nNYhF0X9fLSB10lT40+NVX1TjOtBq5whksk8MT6oRnSoQ8KWeb7La3G9kFaAeSULkA==}
+ '@tanstack/react-router@1.157.16':
+ resolution: {integrity: sha512-xwFQa7S7dhBhm3aJYwU79cITEYgAKSrcL6wokaROIvl2JyIeazn8jueWqUPJzFjv+QF6Q8euKRlKUEyb5q2ymg==}
engines: {node: '>=12'}
peerDependencies:
react: '>=18.0.0 || >=19.0.0'
@@ -1202,25 +1202,25 @@ packages:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- '@tanstack/router-core@1.150.0':
- resolution: {integrity: sha512-cAm44t/tUbfyzaDH+rE/WO4u3AgaZdpJp00xjQ4gNkC2O95ntVHq5fx+4fhtrkKpgdXoKldgk8OK66djiWpuGQ==}
+ '@tanstack/router-core@1.157.16':
+ resolution: {integrity: sha512-eJuVgM7KZYTTr4uPorbUzUflmljMVcaX2g6VvhITLnHmg9SBx9RAgtQ1HmT+72mzyIbRSlQ1q0fY/m+of/fosA==}
engines: {node: '>=12'}
- '@tanstack/router-devtools-core@1.150.0':
- resolution: {integrity: sha512-61V+4fq2fOPru/48cuojKvWhQx2h/nuj4nVHwzu9E7O8h391h4Hks6axxRbY98/rIz96mn5TCoc0aYuoga53bg==}
+ '@tanstack/router-devtools-core@1.157.16':
+ resolution: {integrity: sha512-XBJTs/kMZYK6J2zhbGucHNuypwDB1t2vi8K5To+V6dUnLGBEyfQTf01fegiF4rpL1yXgomdGnP6aTiOFgldbVg==}
engines: {node: '>=12'}
peerDependencies:
- '@tanstack/router-core': ^1.150.0
+ '@tanstack/router-core': ^1.157.16
csstype: ^3.0.10
peerDependenciesMeta:
csstype:
optional: true
- '@tanstack/router-devtools@1.150.0':
- resolution: {integrity: sha512-fT7fvpFvBpvls214mJrNqnlZATWcrgmEr/bOszASf6FFwxXeH5IDpNbLOPitIDvbBvNnv3JEZvXRbW/HwPO07w==}
+ '@tanstack/router-devtools@1.157.16':
+ resolution: {integrity: sha512-szVmsVNp3b4WQWbZiTO8YSYYGPRMh5o2syPmt8YoKgSnQ5CmwyEOY3Y0ko0irCzHZxVq/TKC6eqWnIRS3VnWQA==}
engines: {node: '>=12'}
peerDependencies:
- '@tanstack/react-router': ^1.150.0
+ '@tanstack/react-router': ^1.157.16
csstype: ^3.0.10
react: '>=18.0.0 || >=19.0.0'
react-dom: '>=18.0.0 || >=19.0.0'
@@ -1228,16 +1228,16 @@ packages:
csstype:
optional: true
- '@tanstack/router-generator@1.150.0':
- resolution: {integrity: sha512-WsA1bN5/I+cxE6V1DkU5ABIPBQxZLlxszElYgnIhs884tzukv76rYMFOy6Xqd51YIFdYtjDrxZbp4/vfkrVCug==}
+ '@tanstack/router-generator@1.157.16':
+ resolution: {integrity: sha512-Ae2M00VTFjjED7glSCi/mMLENRzhEym6NgjoOx7UVNbCC/rLU/5ASDe5VIlDa8QLEqP5Pj088Gi51gjmRuICvQ==}
engines: {node: '>=12'}
- '@tanstack/router-plugin@1.150.0':
- resolution: {integrity: sha512-k2NLysBXO4Wpt4Oo0xeBhNtFsMwHOU8ud48/cWNWbV89QAjlk0XU5CGNj2JEaFMT0zlF3H/aM5/h0+vYnDjFFA==}
+ '@tanstack/router-plugin@1.157.16':
+ resolution: {integrity: sha512-YQg7L06xyCJAYyrEJNZGAnDL8oChILU+G/eSDIwEfcWn5iLk+47x1Gcdxr82++47PWmOPhzuTo8edDQXWs7kAA==}
engines: {node: '>=12'}
peerDependencies:
'@rsbuild/core': '>=1.0.2'
- '@tanstack/react-router': ^1.150.0
+ '@tanstack/react-router': ^1.157.16
vite: '>=5.0.0 || >=6.0.0 || >=7.0.0'
vite-plugin-solid: ^2.11.10
webpack: '>=5.92.0'
@@ -1253,15 +1253,15 @@ packages:
webpack:
optional: true
- '@tanstack/router-utils@1.143.11':
- resolution: {integrity: sha512-N24G4LpfyK8dOlnP8BvNdkuxg1xQljkyl6PcrdiPSA301pOjatRT1y8wuCCJZKVVD8gkd0MpCZ0VEjRMGILOtA==}
+ '@tanstack/router-utils@1.154.7':
+ resolution: {integrity: sha512-61bGx32tMKuEpVRseu2sh1KQe8CfB7793Mch/kyQt0EP3tD7X0sXmimCl3truRiDGUtI0CaSoQV1NPjAII1RBA==}
engines: {node: '>=12'}
'@tanstack/store@0.8.0':
resolution: {integrity: sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ==}
- '@tanstack/virtual-file-routes@1.145.4':
- resolution: {integrity: sha512-CI75JrfqSluhdGwLssgVeQBaCphgfkMQpi8MCY3UJX1hoGzXa8kHYJcUuIFMOLs1q7zqHy++EVVtMK03osR5wQ==}
+ '@tanstack/virtual-file-routes@1.154.7':
+ resolution: {integrity: sha512-cHHDnewHozgjpI+MIVp9tcib6lYEQK5MyUr0ChHpHFGBl8Xei55rohFK0I0ve/GKoHeioaK42Smd8OixPp6CTg==}
engines: {node: '>=12'}
'@tootallnate/once@2.0.0':
@@ -1297,8 +1297,8 @@ packages:
peerDependencies:
'@types/react': ^19.2.0
- '@types/react@19.2.8':
- resolution: {integrity: sha512-3MbSL37jEchWZz2p2mjntRZtPt837ij10ApxKfgmXCTuHWagYg7iA5bqPw6C8BMPfwidlvfPI/fxOc42HLhcyg==}
+ '@types/react@19.2.10':
+ resolution: {integrity: sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==}
'@types/resolve@1.20.2':
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
@@ -1306,63 +1306,63 @@ packages:
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
- '@typescript-eslint/eslint-plugin@8.53.0':
- resolution: {integrity: sha512-eEXsVvLPu8Z4PkFibtuFJLJOTAV/nPdgtSjkGoPpddpFk3/ym2oy97jynY6ic2m6+nc5M8SE1e9v/mHKsulcJg==}
+ '@typescript-eslint/eslint-plugin@8.54.0':
+ resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
- '@typescript-eslint/parser': ^8.53.0
+ '@typescript-eslint/parser': ^8.54.0
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/parser@8.53.0':
- resolution: {integrity: sha512-npiaib8XzbjtzS2N4HlqPvlpxpmZ14FjSJrteZpPxGUaYPlvhzlzUZ4mZyABo0EFrOWnvyd0Xxroq//hKhtAWg==}
+ '@typescript-eslint/parser@8.54.0':
+ resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/project-service@8.53.0':
- resolution: {integrity: sha512-Bl6Gdr7NqkqIP5yP9z1JU///Nmes4Eose6L1HwpuVHwScgDPPuEWbUVhvlZmb8hy0vX9syLk5EGNL700WcBlbg==}
+ '@typescript-eslint/project-service@8.54.0':
+ resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@8.53.0':
- resolution: {integrity: sha512-kWNj3l01eOGSdVBnfAF2K1BTh06WS0Yet6JUgb9Cmkqaz3Jlu0fdVUjj9UI8gPidBWSMqDIglmEXifSgDT/D0g==}
+ '@typescript-eslint/scope-manager@8.54.0':
+ resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/tsconfig-utils@8.53.0':
- resolution: {integrity: sha512-K6Sc0R5GIG6dNoPdOooQ+KtvT5KCKAvTcY8h2rIuul19vxH5OTQk7ArKkd4yTzkw66WnNY0kPPzzcmWA+XRmiA==}
+ '@typescript-eslint/tsconfig-utils@8.54.0':
+ resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@8.53.0':
- resolution: {integrity: sha512-BBAUhlx7g4SmcLhn8cnbxoxtmS7hcq39xKCgiutL3oNx1TaIp+cny51s8ewnKMpVUKQUGb41RAUWZ9kxYdovuw==}
+ '@typescript-eslint/type-utils@8.54.0':
+ resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@8.53.0':
- resolution: {integrity: sha512-Bmh9KX31Vlxa13+PqPvt4RzKRN1XORYSLlAE+sO1i28NkisGbTtSLFVB3l7PWdHtR3E0mVMuC7JilWJ99m2HxQ==}
+ '@typescript-eslint/types@8.54.0':
+ resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.53.0':
- resolution: {integrity: sha512-pw0c0Gdo7Z4xOG987u3nJ8akL9093yEEKv8QTJ+Bhkghj1xyj8cgPaavlr9rq8h7+s6plUJ4QJYw2gCZodqmGw==}
+ '@typescript-eslint/typescript-estree@8.54.0':
+ resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@8.53.0':
- resolution: {integrity: sha512-XDY4mXTez3Z1iRDI5mbRhH4DFSt46oaIFsLg+Zn97+sYrXACziXSQcSelMybnVZ5pa1P6xYkPr5cMJyunM1ZDA==}
+ '@typescript-eslint/utils@8.54.0':
+ resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@8.53.0':
- resolution: {integrity: sha512-LZ2NqIHFhvFwxG0qZeLL9DvdNAHPGCY5dIRwBhyYeU+LfLhcStE1ImjsuTG/WaVh3XysGaeLW8Rqq7cGkPCFvw==}
+ '@typescript-eslint/visitor-keys@8.54.0':
+ resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-react@5.1.2':
@@ -1474,8 +1474,8 @@ packages:
babel-dead-code-elimination@1.0.12:
resolution: {integrity: sha512-GERT7L2TiYcYDtYk1IpD+ASAYXjKbLTDPhBtYj7X1NuRMDTMtAx9kyBenub1Ev41lo91OHCKdmP+egTDmfQ7Ig==}
- babel-plugin-polyfill-corejs2@0.4.14:
- resolution: {integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==}
+ babel-plugin-polyfill-corejs2@0.4.15:
+ resolution: {integrity: sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
@@ -1484,16 +1484,16 @@ packages:
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
- babel-plugin-polyfill-regenerator@0.6.5:
- resolution: {integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==}
+ babel-plugin-polyfill-regenerator@0.6.6:
+ resolution: {integrity: sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==}
peerDependencies:
'@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- baseline-browser-mapping@2.9.14:
- resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==}
+ baseline-browser-mapping@2.9.19:
+ resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==}
hasBin: true
binary-extensions@2.3.0:
@@ -1542,8 +1542,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- caniuse-lite@1.0.30001764:
- resolution: {integrity: sha512-9JGuzl2M+vPL+pz70gtMF9sHdMFbY9FJaQBi186cHKH3pSzDvzoUJUPV6fqiKIMyXbud9ZLg4F3Yza1vJ1+93g==}
+ caniuse-lite@1.0.30001766:
+ resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==}
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
@@ -1584,8 +1584,8 @@ packages:
cookie-es@2.0.0:
resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==}
- core-js-compat@3.47.0:
- resolution: {integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==}
+ core-js-compat@3.48.0:
+ resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==}
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
@@ -1680,8 +1680,8 @@ packages:
engines: {node: '>=0.10.0'}
hasBin: true
- electron-to-chromium@1.5.267:
- resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==}
+ electron-to-chromium@1.5.279:
+ resolution: {integrity: sha512-0bblUU5UNdOt5G7XqGiJtpZMONma6WAfq9vsFmtn9x1+joAObr6x1chfqyxFSDCAFwFhCQDrqeAr6MYdpwJ9Hg==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -2145,8 +2145,8 @@ packages:
isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
- isbot@5.1.32:
- resolution: {integrity: sha512-VNfjM73zz2IBZmdShMfAUg10prm6t7HFUQmNAEOAVS4YH92ZrZcvkMcGX6cIgBJAzWDzPent/EeAtYEHNPNPBQ==}
+ isbot@5.1.34:
+ resolution: {integrity: sha512-aCMIBSKd/XPRYdiCQTLC8QHH4YT8B3JUADu+7COgYIZPvkeoMcUHMRjZLM9/7V8fCj+l7FSREc1lOPNjzogo/A==}
engines: {node: '>=18'}
isexe@2.0.0:
@@ -2313,11 +2313,11 @@ packages:
lodash.sortby@4.7.0:
resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ lodash@4.17.23:
+ resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
- lru-cache@11.2.4:
- resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==}
+ lru-cache@11.2.5:
+ resolution: {integrity: sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==}
engines: {node: 20 || >=22}
lru-cache@5.1.1:
@@ -2466,8 +2466,8 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier@3.8.0:
- resolution: {integrity: sha512-yEPsovQfpxYfgWNhCfECjG5AQaO+K3dp6XERmOepyPDVqcJm+bjyCVO3pmU+nAPe0N5dDvekfGezt/EIiRe1TA==}
+ prettier@3.8.1:
+ resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==}
engines: {node: '>=14'}
hasBin: true
@@ -2492,10 +2492,10 @@ packages:
randombytes@2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
- react-dom@19.2.3:
- resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==}
+ react-dom@19.2.4:
+ resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
peerDependencies:
- react: ^19.2.3
+ react: ^19.2.4
react-hook-form@7.71.1:
resolution: {integrity: sha512-9SUJKCGKo8HUSsCO+y0CtqkqI5nNuaDqTxyqPsZPqIwudpj4rCrAz/jZV+jn57bx5gtZKOh3neQu94DXMc+w5w==}
@@ -2513,8 +2513,8 @@ packages:
resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
engines: {node: '>=0.10.0'}
- react@19.2.3:
- resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==}
+ react@19.2.4:
+ resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
engines: {node: '>=0.10.0'}
readdirp@3.6.0:
@@ -2575,8 +2575,8 @@ packages:
engines: {node: '>=10.0.0'}
hasBin: true
- rollup@4.55.1:
- resolution: {integrity: sha512-wDv/Ht1BNHB4upNbK74s9usvl7hObDnvVzknxqY/E/O3X6rW1U1rV1aENEfJ54eFZDTNo7zv1f5N4edCluH7+A==}
+ rollup@4.57.0:
+ resolution: {integrity: sha512-e5lPJi/aui4TO1LpAXIRLySmwXSE8k3b9zoGfd42p67wzxog4WHjiZF3M2uheQih4DGyc25QEV4yRBbpueNiUA==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2617,14 +2617,14 @@ packages:
serialize-javascript@6.0.2:
resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
- seroval-plugins@1.4.2:
- resolution: {integrity: sha512-X7p4MEDTi+60o2sXZ4bnDBhgsUYDSkQEvzYZuJyFqWg9jcoPsHts5nrg5O956py2wyt28lUrBxk0M0/wU8URpA==}
+ seroval-plugins@1.5.0:
+ resolution: {integrity: sha512-EAHqADIQondwRZIdeW2I636zgsODzoBDwb3PT/+7TLDWyw1Dy/Xv7iGUIEXXav7usHDE9HVhOU61irI3EnyyHA==}
engines: {node: '>=10'}
peerDependencies:
seroval: ^1.0
- seroval@1.4.2:
- resolution: {integrity: sha512-N3HEHRCZYn3cQbsC4B5ldj9j+tHdf4JZoYPlcI4rRYu0Xy4qN8MQf1Z08EibzB0WpgRG5BGK08FTrmM66eSzKQ==}
+ seroval@1.5.0:
+ resolution: {integrity: sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw==}
engines: {node: '>=10'}
set-function-length@1.2.2:
@@ -2839,8 +2839,8 @@ packages:
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'}
- typescript-eslint@8.53.0:
- resolution: {integrity: sha512-xHURCQNxZ1dsWn0sdOaOfCSQG0HKeqSj9OexIxrz6ypU6wHYOdX2I3D2b8s8wFSsSOYJb+6q283cLiLlkEsBYw==}
+ typescript-eslint@8.54.0:
+ resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -3115,9 +3115,6 @@ packages:
peerDependencies:
zod: ^3.25.0 || ^4.0.0
- zod@3.23.8:
- resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
-
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
@@ -3221,7 +3218,7 @@ snapshots:
regexpu-core: 6.4.0
semver: 6.3.1
- '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.6)':
+ '@babel/helper-define-polyfill-provider@0.6.6(@babel/core@7.28.6)':
dependencies:
'@babel/core': 7.28.6
'@babel/helper-compilation-targets': 7.28.6
@@ -3787,10 +3784,10 @@ snapshots:
'@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.6)
'@babel/plugin-transform-unicode-sets-regex': 7.28.6(@babel/core@7.28.6)
'@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.6)
- babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.6)
+ babel-plugin-polyfill-corejs2: 0.4.15(@babel/core@7.28.6)
babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.6)
- babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.6)
- core-js-compat: 3.47.0
+ babel-plugin-polyfill-regenerator: 0.6.6(@babel/core@7.28.6)
+ core-js-compat: 3.48.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
@@ -3951,10 +3948,10 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
- '@hookform/resolvers@5.2.2(react-hook-form@7.71.1(react@19.2.3))':
+ '@hookform/resolvers@5.2.2(react-hook-form@7.71.1(react@19.2.4))':
dependencies:
'@standard-schema/utils': 0.3.0
- react-hook-form: 7.71.1(react@19.2.3)
+ react-hook-form: 7.71.1(react@19.2.4)
'@humanfs/core@0.19.1': {}
@@ -3967,10 +3964,10 @@ snapshots:
'@humanwhocodes/retry@0.4.3': {}
- '@iconify/react@6.0.2(react@19.2.3)':
+ '@iconify/react@6.0.2(react@19.2.4)':
dependencies:
'@iconify/types': 2.0.0
- react: 19.2.3
+ react: 19.2.4
'@iconify/types@2.0.0': {}
@@ -4065,79 +4062,79 @@ snapshots:
optionalDependencies:
rollup: 2.79.2
- '@rollup/rollup-android-arm-eabi@4.55.1':
+ '@rollup/rollup-android-arm-eabi@4.57.0':
optional: true
- '@rollup/rollup-android-arm64@4.55.1':
+ '@rollup/rollup-android-arm64@4.57.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.55.1':
+ '@rollup/rollup-darwin-arm64@4.57.0':
optional: true
- '@rollup/rollup-darwin-x64@4.55.1':
+ '@rollup/rollup-darwin-x64@4.57.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.55.1':
+ '@rollup/rollup-freebsd-arm64@4.57.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.55.1':
+ '@rollup/rollup-freebsd-x64@4.57.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.55.1':
+ '@rollup/rollup-linux-arm-gnueabihf@4.57.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.55.1':
+ '@rollup/rollup-linux-arm-musleabihf@4.57.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.55.1':
+ '@rollup/rollup-linux-arm64-gnu@4.57.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.55.1':
+ '@rollup/rollup-linux-arm64-musl@4.57.0':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.55.1':
+ '@rollup/rollup-linux-loong64-gnu@4.57.0':
optional: true
- '@rollup/rollup-linux-loong64-musl@4.55.1':
+ '@rollup/rollup-linux-loong64-musl@4.57.0':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.55.1':
+ '@rollup/rollup-linux-ppc64-gnu@4.57.0':
optional: true
- '@rollup/rollup-linux-ppc64-musl@4.55.1':
+ '@rollup/rollup-linux-ppc64-musl@4.57.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.55.1':
+ '@rollup/rollup-linux-riscv64-gnu@4.57.0':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.55.1':
+ '@rollup/rollup-linux-riscv64-musl@4.57.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.55.1':
+ '@rollup/rollup-linux-s390x-gnu@4.57.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.55.1':
+ '@rollup/rollup-linux-x64-gnu@4.57.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.55.1':
+ '@rollup/rollup-linux-x64-musl@4.57.0':
optional: true
- '@rollup/rollup-openbsd-x64@4.55.1':
+ '@rollup/rollup-openbsd-x64@4.57.0':
optional: true
- '@rollup/rollup-openharmony-arm64@4.55.1':
+ '@rollup/rollup-openharmony-arm64@4.57.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.55.1':
+ '@rollup/rollup-win32-arm64-msvc@4.57.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.55.1':
+ '@rollup/rollup-win32-ia32-msvc@4.57.0':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.55.1':
+ '@rollup/rollup-win32-x64-gnu@4.57.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.55.1':
+ '@rollup/rollup-win32-x64-msvc@4.57.0':
optional: true
'@standard-schema/utils@0.3.0': {}
@@ -4218,82 +4215,82 @@ snapshots:
postcss: 8.5.6
tailwindcss: 4.1.18
- '@tanstack/history@1.145.7': {}
+ '@tanstack/history@1.154.14': {}
- '@tanstack/query-core@5.90.17': {}
+ '@tanstack/query-core@5.90.20': {}
- '@tanstack/react-query@5.90.17(react@19.2.3)':
+ '@tanstack/react-query@5.90.20(react@19.2.4)':
dependencies:
- '@tanstack/query-core': 5.90.17
- react: 19.2.3
+ '@tanstack/query-core': 5.90.20
+ react: 19.2.4
- '@tanstack/react-router-devtools@1.150.0(@tanstack/react-router@1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.150.0)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@tanstack/react-router-devtools@1.157.16(@tanstack/react-router@1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.157.16)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@tanstack/react-router': 1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@tanstack/router-devtools-core': 1.150.0(@tanstack/router-core@1.150.0)(csstype@3.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@tanstack/react-router': 1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@tanstack/router-devtools-core': 1.157.16(@tanstack/router-core@1.157.16)(csstype@3.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
- '@tanstack/router-core': 1.150.0
+ '@tanstack/router-core': 1.157.16
transitivePeerDependencies:
- csstype
- '@tanstack/react-router@1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@tanstack/react-router@1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@tanstack/history': 1.145.7
- '@tanstack/react-store': 0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@tanstack/router-core': 1.150.0
- isbot: 5.1.32
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ '@tanstack/history': 1.154.14
+ '@tanstack/react-store': 0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@tanstack/router-core': 1.157.16
+ isbot: 5.1.34
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/react-store@0.8.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@tanstack/react-store@0.8.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@tanstack/store': 0.8.0
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
- use-sync-external-store: 1.6.0(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
+ use-sync-external-store: 1.6.0(react@19.2.4)
- '@tanstack/router-core@1.150.0':
+ '@tanstack/router-core@1.157.16':
dependencies:
- '@tanstack/history': 1.145.7
+ '@tanstack/history': 1.154.14
'@tanstack/store': 0.8.0
cookie-es: 2.0.0
- seroval: 1.4.2
- seroval-plugins: 1.4.2(seroval@1.4.2)
+ seroval: 1.5.0
+ seroval-plugins: 1.5.0(seroval@1.5.0)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/router-devtools-core@1.150.0(@tanstack/router-core@1.150.0)(csstype@3.2.3)':
+ '@tanstack/router-devtools-core@1.157.16(@tanstack/router-core@1.157.16)(csstype@3.2.3)':
dependencies:
- '@tanstack/router-core': 1.150.0
+ '@tanstack/router-core': 1.157.16
clsx: 2.1.1
goober: 2.1.18(csstype@3.2.3)
tiny-invariant: 1.3.3
optionalDependencies:
csstype: 3.2.3
- '@tanstack/router-devtools@1.150.0(@tanstack/react-router@1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.150.0)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
+ '@tanstack/router-devtools@1.157.16(@tanstack/react-router@1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.157.16)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
- '@tanstack/react-router': 1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
- '@tanstack/react-router-devtools': 1.150.0(@tanstack/react-router@1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(@tanstack/router-core@1.150.0)(csstype@3.2.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/react-router': 1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@tanstack/react-router-devtools': 1.157.16(@tanstack/react-router@1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.157.16)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
clsx: 2.1.1
goober: 2.1.18(csstype@3.2.3)
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
csstype: 3.2.3
transitivePeerDependencies:
- '@tanstack/router-core'
- '@tanstack/router-generator@1.150.0':
+ '@tanstack/router-generator@1.157.16':
dependencies:
- '@tanstack/router-core': 1.150.0
- '@tanstack/router-utils': 1.143.11
- '@tanstack/virtual-file-routes': 1.145.4
- prettier: 3.8.0
+ '@tanstack/router-core': 1.157.16
+ '@tanstack/router-utils': 1.154.7
+ '@tanstack/virtual-file-routes': 1.154.7
+ prettier: 3.8.1
recast: 0.23.11
source-map: 0.7.6
tsx: 4.21.0
@@ -4301,7 +4298,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@tanstack/router-plugin@1.150.0(@tanstack/react-router@1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0))':
+ '@tanstack/router-plugin@1.157.16(@tanstack/react-router@1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0))':
dependencies:
'@babel/core': 7.28.6
'@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.6)
@@ -4309,21 +4306,21 @@ snapshots:
'@babel/template': 7.28.6
'@babel/traverse': 7.28.6
'@babel/types': 7.28.6
- '@tanstack/router-core': 1.150.0
- '@tanstack/router-generator': 1.150.0
- '@tanstack/router-utils': 1.143.11
- '@tanstack/virtual-file-routes': 1.145.4
+ '@tanstack/router-core': 1.157.16
+ '@tanstack/router-generator': 1.157.16
+ '@tanstack/router-utils': 1.154.7
+ '@tanstack/virtual-file-routes': 1.154.7
babel-dead-code-elimination: 1.0.12
chokidar: 3.6.0
unplugin: 2.3.11
zod: 3.25.76
optionalDependencies:
- '@tanstack/react-router': 1.150.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
+ '@tanstack/react-router': 1.157.16(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
vite: 7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0)
transitivePeerDependencies:
- supports-color
- '@tanstack/router-utils@1.143.11':
+ '@tanstack/router-utils@1.154.7':
dependencies:
'@babel/core': 7.28.6
'@babel/generator': 7.28.6
@@ -4337,7 +4334,7 @@ snapshots:
'@tanstack/store@0.8.0': {}
- '@tanstack/virtual-file-routes@1.145.4': {}
+ '@tanstack/virtual-file-routes@1.154.7': {}
'@tootallnate/once@2.0.0': {}
@@ -4372,11 +4369,11 @@ snapshots:
dependencies:
undici-types: 7.16.0
- '@types/react-dom@19.2.3(@types/react@19.2.8)':
+ '@types/react-dom@19.2.3(@types/react@19.2.10)':
dependencies:
- '@types/react': 19.2.8
+ '@types/react': 19.2.10
- '@types/react@19.2.8':
+ '@types/react@19.2.10':
dependencies:
csstype: 3.2.3
@@ -4384,14 +4381,14 @@ snapshots:
'@types/trusted-types@2.0.7': {}
- '@typescript-eslint/eslint-plugin@8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 8.53.0
- '@typescript-eslint/type-utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.53.0
+ '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.54.0
+ '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.54.0
eslint: 9.39.2(jiti@2.6.1)
ignore: 7.0.5
natural-compare: 1.4.0
@@ -4400,41 +4397,41 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/scope-manager': 8.53.0
- '@typescript-eslint/types': 8.53.0
- '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 8.53.0
+ '@typescript-eslint/scope-manager': 8.54.0
+ '@typescript-eslint/types': 8.54.0
+ '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.54.0
debug: 4.4.3
eslint: 9.39.2(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.53.0(typescript@5.9.3)':
+ '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.53.0
+ '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.54.0
debug: 4.4.3
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.53.0':
+ '@typescript-eslint/scope-manager@8.54.0':
dependencies:
- '@typescript-eslint/types': 8.53.0
- '@typescript-eslint/visitor-keys': 8.53.0
+ '@typescript-eslint/types': 8.54.0
+ '@typescript-eslint/visitor-keys': 8.54.0
- '@typescript-eslint/tsconfig-utils@8.53.0(typescript@5.9.3)':
+ '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
- '@typescript-eslint/type-utils@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/types': 8.53.0
- '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/types': 8.54.0
+ '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
debug: 4.4.3
eslint: 9.39.2(jiti@2.6.1)
ts-api-utils: 2.4.0(typescript@5.9.3)
@@ -4442,14 +4439,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/types@8.53.0': {}
+ '@typescript-eslint/types@8.54.0': {}
- '@typescript-eslint/typescript-estree@8.53.0(typescript@5.9.3)':
+ '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)':
dependencies:
- '@typescript-eslint/project-service': 8.53.0(typescript@5.9.3)
- '@typescript-eslint/tsconfig-utils': 8.53.0(typescript@5.9.3)
- '@typescript-eslint/types': 8.53.0
- '@typescript-eslint/visitor-keys': 8.53.0
+ '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3)
+ '@typescript-eslint/types': 8.54.0
+ '@typescript-eslint/visitor-keys': 8.54.0
debug: 4.4.3
minimatch: 9.0.5
semver: 7.7.3
@@ -4459,20 +4456,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1))
- '@typescript-eslint/scope-manager': 8.53.0
- '@typescript-eslint/types': 8.53.0
- '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.54.0
+ '@typescript-eslint/types': 8.54.0
+ '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3)
eslint: 9.39.2(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/visitor-keys@8.53.0':
+ '@typescript-eslint/visitor-keys@8.54.0':
dependencies:
- '@typescript-eslint/types': 8.53.0
+ '@typescript-eslint/types': 8.54.0
eslint-visitor-keys: 4.2.1
'@vitejs/plugin-react@5.1.2(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0))':
@@ -4573,7 +4570,7 @@ snapshots:
autoprefixer@10.4.23(postcss@8.5.6):
dependencies:
browserslist: 4.28.1
- caniuse-lite: 1.0.30001764
+ caniuse-lite: 1.0.30001766
fraction.js: 5.3.4
picocolors: 1.1.1
postcss: 8.5.6
@@ -4592,11 +4589,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.6):
+ babel-plugin-polyfill-corejs2@0.4.15(@babel/core@7.28.6):
dependencies:
'@babel/compat-data': 7.28.6
'@babel/core': 7.28.6
- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6)
+ '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.6)
semver: 6.3.1
transitivePeerDependencies:
- supports-color
@@ -4604,21 +4601,21 @@ snapshots:
babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.6):
dependencies:
'@babel/core': 7.28.6
- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6)
- core-js-compat: 3.47.0
+ '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.6)
+ core-js-compat: 3.48.0
transitivePeerDependencies:
- supports-color
- babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.6):
+ babel-plugin-polyfill-regenerator@0.6.6(@babel/core@7.28.6):
dependencies:
'@babel/core': 7.28.6
- '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.6)
+ '@babel/helper-define-polyfill-provider': 0.6.6(@babel/core@7.28.6)
transitivePeerDependencies:
- supports-color
balanced-match@1.0.2: {}
- baseline-browser-mapping@2.9.14: {}
+ baseline-browser-mapping@2.9.19: {}
binary-extensions@2.3.0: {}
@@ -4639,9 +4636,9 @@ snapshots:
browserslist@4.28.1:
dependencies:
- baseline-browser-mapping: 2.9.14
- caniuse-lite: 1.0.30001764
- electron-to-chromium: 1.5.267
+ baseline-browser-mapping: 2.9.19
+ caniuse-lite: 1.0.30001766
+ electron-to-chromium: 1.5.279
node-releases: 2.0.27
update-browserslist-db: 1.2.3(browserslist@4.28.1)
@@ -4668,7 +4665,7 @@ snapshots:
callsites@3.1.0: {}
- caniuse-lite@1.0.30001764: {}
+ caniuse-lite@1.0.30001766: {}
chalk@4.1.2:
dependencies:
@@ -4709,7 +4706,7 @@ snapshots:
cookie-es@2.0.0: {}
- core-js-compat@3.47.0:
+ core-js-compat@3.48.0:
dependencies:
browserslist: 4.28.1
@@ -4799,7 +4796,7 @@ snapshots:
dependencies:
jake: 10.9.4
- electron-to-chromium@1.5.267: {}
+ electron-to-chromium@1.5.279: {}
emoji-regex@8.0.0: {}
@@ -5373,7 +5370,7 @@ snapshots:
isarray@2.0.5: {}
- isbot@5.1.32: {}
+ isbot@5.1.34: {}
isexe@2.0.0: {}
@@ -5525,9 +5522,9 @@ snapshots:
lodash.sortby@4.7.0: {}
- lodash@4.17.21: {}
+ lodash@4.17.23: {}
- lru-cache@11.2.4: {}
+ lru-cache@11.2.5: {}
lru-cache@5.1.1:
dependencies:
@@ -5633,7 +5630,7 @@ snapshots:
path-scurry@2.0.1:
dependencies:
- lru-cache: 11.2.4
+ lru-cache: 11.2.5
minipass: 7.1.2
pathe@2.0.3: {}
@@ -5656,7 +5653,7 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier@3.8.0: {}
+ prettier@3.8.1: {}
pretty-bytes@5.6.0: {}
@@ -5674,23 +5671,23 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
- react-dom@19.2.3(react@19.2.3):
+ react-dom@19.2.4(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
scheduler: 0.27.0
- react-hook-form@7.71.1(react@19.2.3):
+ react-hook-form@7.71.1(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
- react-mobile-picker@1.2.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3):
+ react-mobile-picker@1.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
- react: 19.2.3
- react-dom: 19.2.3(react@19.2.3)
+ react: 19.2.4
+ react-dom: 19.2.4(react@19.2.4)
react-refresh@0.18.0: {}
- react@19.2.3: {}
+ react@19.2.4: {}
readdirp@3.6.0:
dependencies:
@@ -5763,35 +5760,35 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
- rollup@4.55.1:
+ rollup@4.57.0:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.55.1
- '@rollup/rollup-android-arm64': 4.55.1
- '@rollup/rollup-darwin-arm64': 4.55.1
- '@rollup/rollup-darwin-x64': 4.55.1
- '@rollup/rollup-freebsd-arm64': 4.55.1
- '@rollup/rollup-freebsd-x64': 4.55.1
- '@rollup/rollup-linux-arm-gnueabihf': 4.55.1
- '@rollup/rollup-linux-arm-musleabihf': 4.55.1
- '@rollup/rollup-linux-arm64-gnu': 4.55.1
- '@rollup/rollup-linux-arm64-musl': 4.55.1
- '@rollup/rollup-linux-loong64-gnu': 4.55.1
- '@rollup/rollup-linux-loong64-musl': 4.55.1
- '@rollup/rollup-linux-ppc64-gnu': 4.55.1
- '@rollup/rollup-linux-ppc64-musl': 4.55.1
- '@rollup/rollup-linux-riscv64-gnu': 4.55.1
- '@rollup/rollup-linux-riscv64-musl': 4.55.1
- '@rollup/rollup-linux-s390x-gnu': 4.55.1
- '@rollup/rollup-linux-x64-gnu': 4.55.1
- '@rollup/rollup-linux-x64-musl': 4.55.1
- '@rollup/rollup-openbsd-x64': 4.55.1
- '@rollup/rollup-openharmony-arm64': 4.55.1
- '@rollup/rollup-win32-arm64-msvc': 4.55.1
- '@rollup/rollup-win32-ia32-msvc': 4.55.1
- '@rollup/rollup-win32-x64-gnu': 4.55.1
- '@rollup/rollup-win32-x64-msvc': 4.55.1
+ '@rollup/rollup-android-arm-eabi': 4.57.0
+ '@rollup/rollup-android-arm64': 4.57.0
+ '@rollup/rollup-darwin-arm64': 4.57.0
+ '@rollup/rollup-darwin-x64': 4.57.0
+ '@rollup/rollup-freebsd-arm64': 4.57.0
+ '@rollup/rollup-freebsd-x64': 4.57.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.57.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.57.0
+ '@rollup/rollup-linux-arm64-gnu': 4.57.0
+ '@rollup/rollup-linux-arm64-musl': 4.57.0
+ '@rollup/rollup-linux-loong64-gnu': 4.57.0
+ '@rollup/rollup-linux-loong64-musl': 4.57.0
+ '@rollup/rollup-linux-ppc64-gnu': 4.57.0
+ '@rollup/rollup-linux-ppc64-musl': 4.57.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.57.0
+ '@rollup/rollup-linux-riscv64-musl': 4.57.0
+ '@rollup/rollup-linux-s390x-gnu': 4.57.0
+ '@rollup/rollup-linux-x64-gnu': 4.57.0
+ '@rollup/rollup-linux-x64-musl': 4.57.0
+ '@rollup/rollup-openbsd-x64': 4.57.0
+ '@rollup/rollup-openharmony-arm64': 4.57.0
+ '@rollup/rollup-win32-arm64-msvc': 4.57.0
+ '@rollup/rollup-win32-ia32-msvc': 4.57.0
+ '@rollup/rollup-win32-x64-gnu': 4.57.0
+ '@rollup/rollup-win32-x64-msvc': 4.57.0
fsevents: 2.3.3
safe-array-concat@1.1.3:
@@ -5831,11 +5828,11 @@ snapshots:
dependencies:
randombytes: 2.1.0
- seroval-plugins@1.4.2(seroval@1.4.2):
+ seroval-plugins@1.5.0(seroval@1.5.0):
dependencies:
- seroval: 1.4.2
+ seroval: 1.5.0
- seroval@1.4.2: {}
+ seroval@1.5.0: {}
set-function-length@1.2.2:
dependencies:
@@ -6098,12 +6095,12 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
- typescript-eslint@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3):
+ typescript-eslint@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.53.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/parser': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
- '@typescript-eslint/typescript-estree': 8.53.0(typescript@5.9.3)
- '@typescript-eslint/utils': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.2(jiti@2.6.1)
typescript: 5.9.3
transitivePeerDependencies:
@@ -6163,9 +6160,9 @@ snapshots:
querystringify: 2.2.0
requires-port: 1.0.0
- use-sync-external-store@1.6.0(react@19.2.3):
+ use-sync-external-store@1.6.0(react@19.2.4):
dependencies:
- react: 19.2.3
+ react: 19.2.4
vite-plugin-pwa@1.2.0(vite@7.3.1(@types/node@24.10.9)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.21.0))(workbox-build@7.4.0(@types/babel__core@7.20.5))(workbox-window@7.4.0):
dependencies:
@@ -6184,7 +6181,7 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
postcss: 8.5.6
- rollup: 4.55.1
+ rollup: 4.57.0
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.10.9
@@ -6302,7 +6299,7 @@ snapshots:
fast-json-stable-stringify: 2.1.0
fs-extra: 9.1.0
glob: 11.1.0
- lodash: 4.17.21
+ lodash: 4.17.23
pretty-bytes: 5.6.0
rollup: 2.79.2
source-map: 0.8.0-beta.0
@@ -6416,14 +6413,12 @@ snapshots:
dependencies:
zod: 4.3.6
- zod@3.23.8: {}
-
zod@3.25.76: {}
zod@4.3.6: {}
- zustand@5.0.10(@types/react@19.2.8)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)):
+ zustand@5.0.10(@types/react@19.2.10)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)):
optionalDependencies:
- '@types/react': 19.2.8
- react: 19.2.3
- use-sync-external-store: 1.6.0(react@19.2.3)
+ '@types/react': 19.2.10
+ react: 19.2.4
+ use-sync-external-store: 1.6.0(react@19.2.4)
diff --git a/src/components/common/FilterBottomSheet.tsx b/src/components/common/FilterBottomSheet.tsx
index 287f592..4c68a22 100644
--- a/src/components/common/FilterBottomSheet.tsx
+++ b/src/components/common/FilterBottomSheet.tsx
@@ -44,14 +44,14 @@ export default function FilterBottomSheet({ isOpen, onClose, children, className
{/* 콘텐츠 */}
-
diff --git a/src/components/form/DateField.tsx b/src/components/form/DateField.tsx
index df996f9..f2327c2 100644
--- a/src/components/form/DateField.tsx
+++ b/src/components/form/DateField.tsx
@@ -4,20 +4,40 @@ interface DateFieldProps {
onClick: () => void;
}
+// 날짜를 "YYYY년 M월 D일" 형식으로 변환하는 함수
+function formatDateToKorean(dateString: string): string {
+ if (!dateString) return "";
+
+ try {
+ const date = new Date(dateString);
+ if (isNaN(date.getTime())) return dateString;
+
+ const year = date.getFullYear();
+ const month = date.getMonth() + 1;
+ const day = date.getDate();
+
+ return `${year}년 ${month}월 ${day}일`;
+ } catch {
+ return dateString;
+ }
+}
+
export default function DateField({
placeholder,
value,
onClick,
}: DateFieldProps) {
+ const displayValue = value ? formatDateToKorean(value) : placeholder;
+
return (
);
diff --git a/src/components/form/FeeInput.tsx b/src/components/form/FeeInput.tsx
index 0ef3fec..47028df 100644
--- a/src/components/form/FeeInput.tsx
+++ b/src/components/form/FeeInput.tsx
@@ -12,15 +12,15 @@ export default function FeeInput({
unit = "원",
}: FeeInputProps) {
return (
-
+
onChange(e.target.value.replace(/[^0-9]/g, ""))}
- className="flex-1 text-title3 text-text-black placeholder:text-text-gray3 focus:outline-none bg-transparent"
+ className="flex-1 text-title3 text-text-black placeholder:text-text-gray3 focus:outline-none bg-transparent text-right"
placeholder={placeholder}
/>
- {unit}
+ {unit}
);
}
diff --git a/src/components/form/SelectField.tsx b/src/components/form/SelectField.tsx
index 88901e3..0b1aacb 100644
--- a/src/components/form/SelectField.tsx
+++ b/src/components/form/SelectField.tsx
@@ -12,7 +12,7 @@ export default function SelectField({
return (
@@ -172,7 +191,7 @@ export default function CreateCampaignContent() {
setValue("involvement", "높음")}
+ onClick={() => setIsInvolvementSheetOpen(true)}
/>
@@ -180,25 +199,25 @@ export default function CreateCampaignContent() {
setValue("usageScope", "SNS")}
+ onClick={() => setIsUsageScopeSheetOpen(true)}
/>
{/* 협찬품 / 원고료 */}
-
-
+
+
setValue("sponsorProduct", "화장품 세트")}
+ onClick={() => setIsSponsorProductSheetOpen(true)}
/>
-
+
@@ -210,7 +229,7 @@ export default function CreateCampaignContent() {
{/* 제작 기간 */}
-
+
@@ -218,13 +237,13 @@ export default function CreateCampaignContent() {
setValue("startDate", "2024-01-01")}
+ onClick={() => {}}
/>
~
setValue("endDate", "2024-01-31")}
+ onClick={() => {}}
/>
@@ -244,6 +263,7 @@ export default function CreateCampaignContent() {
+ {/* 바텀시트 */}
{/* 기존 캠페인 선택 바텀시트 */}
{type === "existing" && (
{/* 헤더 */}
-
-

-
기존 캠페인 제안
+
+
+

+
기존 캠페인 제안
+
+
{/* 캠페인 목록 */}
-
+
{existingCampaigns.map((campaign) => (
@@ -252,13 +255,7 @@ export default function CreateCampaignContent() {
{/* 하단 버튼 */}
-
-
+
캠페인 제안하기
@@ -376,6 +373,22 @@ export default function CreateCampaignContent() {
onSubmit={(values) => setValue("sponsorProduct", values[0] || "")}
multiSelect={false}
/>
+
+ {/* 시작 날짜 선택 바텀시트 */}
+
setIsStartDateSheetOpen(false)}
+ initialValue={formValues.startDate}
+ onSelect={(date) => setValue("startDate", date)}
+ />
+
+ {/* 끝 날짜 선택 바텀시트 */}
+ setIsEndDateSheetOpen(false)}
+ initialValue={formValues.endDate}
+ onSelect={(date) => setValue("endDate", date)}
+ />
);
}
diff --git a/src/routes/_main/matching-suggest/matching-suggest-content.tsx b/src/routes/_main/matching-suggest/matching-suggest-content.tsx
index a7cf3fe..4eb7e4f 100644
--- a/src/routes/_main/matching-suggest/matching-suggest-content.tsx
+++ b/src/routes/_main/matching-suggest/matching-suggest-content.tsx
@@ -15,7 +15,7 @@ export default function MatchingSuggestContent() {
};
return (
-
+
+
@@ -27,7 +25,7 @@ export default function MatchingResultContent() {
text-[24px]
font-extrabold
tracking-[-0.02em]
- bg-[radial-gradient(circle_at_top,_#5D5DFF_0%,_#382FE4_45%,_#3915DA_100%)]
+ bg-[radial-gradient(circle_at_top,#5D5DFF_0%,#382FE4_45%,#3915DA_100%)]
bg-clip-text
text-transparent">
{resultData.userName}
@@ -76,18 +74,9 @@ export default function MatchingResultContent() {
-
navigate({ to: "/" })}
- >
-
+
RealMatch 시작하기
-
+
);
diff --git a/src/routes/_main/matching-test/matching-test/step1/step1-content.tsx b/src/routes/_main/matching-test/matching-test/step1/step1-content.tsx
index 8d5394a..7f4f365 100644
--- a/src/routes/_main/matching-test/matching-test/step1/step1-content.tsx
+++ b/src/routes/_main/matching-test/matching-test/step1/step1-content.tsx
@@ -1,5 +1,6 @@
import SelectChip from "../../components/SelectChip";
import MatchingTestTopBar from "../../components/MatchingTestHeader";
+import Button from "../../../../../components/common/Button";
type SectionKey = "style" | "function" | "skinType" | "skinTone" | "makeupStyle";
@@ -90,19 +91,15 @@ export default function MatchingTestContent({
{/* ✅ 하단 고정 */}
-
다음
-
+
);
diff --git a/src/routes/_main/matching-test/matching-test/step2/step2-content.tsx b/src/routes/_main/matching-test/matching-test/step2/step2-content.tsx
index 264354d..c731529 100644
--- a/src/routes/_main/matching-test/matching-test/step2/step2-content.tsx
+++ b/src/routes/_main/matching-test/matching-test/step2/step2-content.tsx
@@ -7,6 +7,7 @@ import BottomSheet from "../../components/BottomSheet";
import InputSheet from "../../components/InputSheet";
import SelectSheet from "../../components/SelectSheet";
import MatchingTestTopBar from "../../components/MatchingTestHeader";
+import Button from "../../../../../components/common/Button";
type Props = {
maxText: string;
@@ -191,17 +192,15 @@ export default function MatchingTestStep2Content({
{/* CTA */}
-
다음
-
+
diff --git a/src/routes/_main/matching-test/matching-test/step3/step3-content.tsx b/src/routes/_main/matching-test/matching-test/step3/step3-content.tsx
index 81d0061..89f2b18 100644
--- a/src/routes/_main/matching-test/matching-test/step3/step3-content.tsx
+++ b/src/routes/_main/matching-test/matching-test/step3/step3-content.tsx
@@ -1,12 +1,5 @@
import { useMemo, useState } from "react";
-import { useNavigate } from "@tanstack/react-router";
-
-import type {
- Step3ChipKey,
- Step3ChipsState,
- Step3SelectKey,
- Step3SelectedState,
-} from "../../../../../stores/matching-test";
+import type { Step3ChipKey, Step3ChipsState, Step3SelectKey, Step3SelectedState } from "../../../../../stores/matching-test";
import MatchingTestTopBar from "../../components/MatchingTestHeader";
import SelectChip from "../../components/SelectChip";
@@ -15,6 +8,7 @@ import BottomSheet from "../../components/BottomSheet";
import InputSheet from "../../components/InputSheet";
import SelectSheet from "../../components/SelectSheet";
import CheckDropdown from "../../components/CheckDropdown";
+import Button from "../../../../../components/common/Button";
type Props = {
snsUrl: string;
@@ -29,6 +23,7 @@ type Props = {
canGoNext: boolean;
onBack: () => void;
+ onNext: () => void;
};
type Sheet = null | "snsUrl" | "gender" | "ageGroup" | "videoLength" | "views";
@@ -54,9 +49,8 @@ export default function MatchingTestStep3Content({
onToggleChip,
canGoNext,
onBack,
+ onNext,
}: Props) {
- const navigate = useNavigate();
-
const [sheet, setSheet] = useState
(null);
const open = (s: Sheet) => setSheet(s);
const close = () => setSheet(null);
@@ -72,22 +66,17 @@ export default function MatchingTestStep3Content({
}),
[step3Chips]
);
-
const genderValue = step3Selected.gender.join("\n");
const ageValue = step3Selected.ageGroup.join("\n");
const lenValue = step3Selected.videoLength[0] ?? "";
const viewsValue = step3Selected.views[0] ?? "";
- // ✅ step3 완료 → matching-result로 이동
- const goToResult = () => {
- if (!canGoNext) return;
- navigate({ to: "/matching-test/matching-result" });
- };
-
return (
+ {/* ✅ step1과 동일한 상단 컴포넌트만 사용 */}
+ {/* ✅ step1 기준: px-6 */}
콘텐츠 특성을 모두 선택해주세요
@@ -210,18 +199,17 @@ export default function MatchingTestStep3Content({
+ {/* ✅ step1 기준: px-6 */}
-
다음
-
+
{sheet === "snsUrl" ? (
@@ -238,6 +226,8 @@ export default function MatchingTestStep3Content({
) : null}
+
+
{sheet === "gender" ? (
) : null}
+
{sheet === "ageGroup" ? (
) : null}
+
{sheet === "videoLength" ? (
Date: Fri, 30 Jan 2026 00:08:24 +0900
Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20=EB=A7=A4=EC=B9=AD=20=ED=85=8C?=
=?UTF-8?q?=EC=8A=A4=ED=8A=B8,=20=EC=A0=9C=EC=95=88=ED=95=98=EA=B8=B0=20?=
=?UTF-8?q?=EB=9D=BC=EC=9A=B0=ED=8A=B8=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80?=
=?UTF-8?q?=EA=B2=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- matching-suggest -> matching/suggest 디렉토리 구조 변경
- matching-test -> matching/test 디렉토리 구조 변경
- 관련 import 경로 업데이트
---
src/components/common/RealmatchHeader.tsx | 2 +-
.../_main/_home/components/StartRMButton.tsx | 2 +-
.../suggest}/components/ProfileSelector.tsx | 0
.../suggest}/components/SuggestHeader.tsx | 0
.../suggest}/create/campaignOptions.ts | 0
.../components/DatePickerBottomSheet.tsx | 8 ++++----
.../create/components/SelectBottomSheet.tsx | 6 +++---
.../create/create-campaign-content.tsx | 18 +++++++++---------
.../suggest}/create/route.tsx | 2 +-
.../suggest}/create/schema.ts | 0
.../suggest}/index.tsx | 2 +-
.../suggest}/matching-suggest-content.tsx | 10 +++++-----
.../suggest}/route.tsx | 4 ++--
.../test}/components/BottomSheet.tsx | 0
.../test}/components/CheckDropdown.tsx | 0
.../test}/components/FormField.tsx | 0
.../test}/components/InputSheet.tsx | 0
.../test}/components/MatchingTestHeader.tsx | 0
.../test}/components/SelectChip.tsx | 0
.../test}/components/SelectContents.tsx | 0
.../test}/components/SelectSheet.tsx | 0
.../test}/components/Selectfield.tsx | 0
.../test/result}/matching-result-content.tsx | 6 +++---
.../test/result}/route.tsx | 2 +-
.../test}/step1/route.tsx | 4 ++--
.../test}/step1/step1-content.tsx | 4 ++--
.../test}/step2/route.tsx | 6 +++---
.../test}/step2/step2-content.tsx | 12 ++++++------
.../test}/step3/route.tsx | 4 ++--
.../test}/step3/step3-content.tsx | 14 +++++++-------
src/routes/_main/mypage/mypage-content.tsx | 2 +-
31 files changed, 54 insertions(+), 54 deletions(-)
rename src/routes/_main/{matching-suggest => matching/suggest}/components/ProfileSelector.tsx (100%)
rename src/routes/_main/{matching-suggest => matching/suggest}/components/SuggestHeader.tsx (100%)
rename src/routes/_main/{matching-suggest => matching/suggest}/create/campaignOptions.ts (100%)
rename src/routes/_main/{matching-suggest => matching/suggest}/create/components/DatePickerBottomSheet.tsx (93%)
rename src/routes/_main/{matching-suggest => matching/suggest}/create/components/SelectBottomSheet.tsx (93%)
rename src/routes/_main/{matching-suggest => matching/suggest}/create/create-campaign-content.tsx (95%)
rename src/routes/_main/{matching-suggest => matching/suggest}/create/route.tsx (82%)
rename src/routes/_main/{matching-suggest => matching/suggest}/create/schema.ts (100%)
rename src/routes/_main/{matching-suggest => matching/suggest}/index.tsx (72%)
rename src/routes/_main/{matching-suggest => matching/suggest}/matching-suggest-content.tsx (73%)
rename src/routes/_main/{matching-suggest => matching/suggest}/route.tsx (83%)
rename src/routes/_main/{matching-test => matching/test}/components/BottomSheet.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/CheckDropdown.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/FormField.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/InputSheet.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/MatchingTestHeader.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/SelectChip.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/SelectContents.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/SelectSheet.tsx (100%)
rename src/routes/_main/{matching-test => matching/test}/components/Selectfield.tsx (100%)
rename src/routes/_main/{matching-test/matching-result => matching/test/result}/matching-result-content.tsx (93%)
rename src/routes/_main/{matching-test/matching-result => matching/test/result}/route.tsx (92%)
rename src/routes/_main/{matching-test/matching-test => matching/test}/step1/route.tsx (92%)
rename src/routes/_main/{matching-test/matching-test => matching/test}/step1/step1-content.tsx (96%)
rename src/routes/_main/{matching-test/matching-test => matching/test}/step2/route.tsx (90%)
rename src/routes/_main/{matching-test/matching-test => matching/test}/step2/step2-content.tsx (96%)
rename src/routes/_main/{matching-test/matching-test => matching/test}/step3/route.tsx (93%)
rename src/routes/_main/{matching-test/matching-test => matching/test}/step3/step3-content.tsx (96%)
diff --git a/src/components/common/RealmatchHeader.tsx b/src/components/common/RealmatchHeader.tsx
index 0349591..ef15fce 100644
--- a/src/components/common/RealmatchHeader.tsx
+++ b/src/components/common/RealmatchHeader.tsx
@@ -19,7 +19,7 @@ export default function RealMatchHeader({
// 가능하면 라우터 상위로, 실패하면 브라우저 히스토리
try {
- navigate({ to: "/matching-test/matching-test/step3" });
+ navigate({ to: "/matching/test/step3" });
} catch {
window.history.back();
}
diff --git a/src/routes/_main/_home/components/StartRMButton.tsx b/src/routes/_main/_home/components/StartRMButton.tsx
index deae0c5..eb96590 100644
--- a/src/routes/_main/_home/components/StartRMButton.tsx
+++ b/src/routes/_main/_home/components/StartRMButton.tsx
@@ -2,7 +2,7 @@ import Button from "../../../../components/common/Button";
export default function StartMatchingTestButton() {
return (
-
+
매칭률 검사하기
);
diff --git a/src/routes/_main/matching-suggest/components/ProfileSelector.tsx b/src/routes/_main/matching/suggest/components/ProfileSelector.tsx
similarity index 100%
rename from src/routes/_main/matching-suggest/components/ProfileSelector.tsx
rename to src/routes/_main/matching/suggest/components/ProfileSelector.tsx
diff --git a/src/routes/_main/matching-suggest/components/SuggestHeader.tsx b/src/routes/_main/matching/suggest/components/SuggestHeader.tsx
similarity index 100%
rename from src/routes/_main/matching-suggest/components/SuggestHeader.tsx
rename to src/routes/_main/matching/suggest/components/SuggestHeader.tsx
diff --git a/src/routes/_main/matching-suggest/create/campaignOptions.ts b/src/routes/_main/matching/suggest/create/campaignOptions.ts
similarity index 100%
rename from src/routes/_main/matching-suggest/create/campaignOptions.ts
rename to src/routes/_main/matching/suggest/create/campaignOptions.ts
diff --git a/src/routes/_main/matching-suggest/create/components/DatePickerBottomSheet.tsx b/src/routes/_main/matching/suggest/create/components/DatePickerBottomSheet.tsx
similarity index 93%
rename from src/routes/_main/matching-suggest/create/components/DatePickerBottomSheet.tsx
rename to src/routes/_main/matching/suggest/create/components/DatePickerBottomSheet.tsx
index fd8f935..815c0c0 100644
--- a/src/routes/_main/matching-suggest/create/components/DatePickerBottomSheet.tsx
+++ b/src/routes/_main/matching/suggest/create/components/DatePickerBottomSheet.tsx
@@ -1,8 +1,8 @@
import { useState, useMemo } from "react";
-import FilterBottomSheet from "../../../../../components/common/FilterBottomSheet";
-import Button from "../../../../../components/common/Button";
-import ArrowLeftIcon from "../../../../../assets/icon/arrow-left.svg";
-import ArrowRightIcon from "../../../../../assets/icon/arrow-right.svg";
+import FilterBottomSheet from "../../../../../../components/common/FilterBottomSheet";
+import Button from "../../../../../../components/common/Button";
+import ArrowLeftIcon from "../../../../../../assets/icon/arrow-left.svg";
+import ArrowRightIcon from "../../../../../../assets/icon/arrow-right.svg";
const WEEK_DAYS = ["일", "월", "화", "수", "목", "금", "토"];
diff --git a/src/routes/_main/matching-suggest/create/components/SelectBottomSheet.tsx b/src/routes/_main/matching/suggest/create/components/SelectBottomSheet.tsx
similarity index 93%
rename from src/routes/_main/matching-suggest/create/components/SelectBottomSheet.tsx
rename to src/routes/_main/matching/suggest/create/components/SelectBottomSheet.tsx
index c90354f..cb747fb 100644
--- a/src/routes/_main/matching-suggest/create/components/SelectBottomSheet.tsx
+++ b/src/routes/_main/matching/suggest/create/components/SelectBottomSheet.tsx
@@ -1,7 +1,7 @@
import { useState } from "react";
-import FilterBottomSheet from "../../../../../components/common/FilterBottomSheet";
-import Button from "../../../../../components/common/Button";
-import { CheckIcon } from "../../../../_auth/components/CheckIcon";
+import FilterBottomSheet from "../../../../../../components/common/FilterBottomSheet";
+import Button from "../../../../../../components/common/Button";
+import { CheckIcon } from "../../../../../_auth/components/CheckIcon";
interface SelectOption {
value: string;
diff --git a/src/routes/_main/matching-suggest/create/create-campaign-content.tsx b/src/routes/_main/matching/suggest/create/create-campaign-content.tsx
similarity index 95%
rename from src/routes/_main/matching-suggest/create/create-campaign-content.tsx
rename to src/routes/_main/matching/suggest/create/create-campaign-content.tsx
index 5625f42..016e5ef 100644
--- a/src/routes/_main/matching-suggest/create/create-campaign-content.tsx
+++ b/src/routes/_main/matching/suggest/create/create-campaign-content.tsx
@@ -2,19 +2,19 @@ import { useState } from "react";
import { useNavigate, useSearch } from "@tanstack/react-router";
import { useForm, useWatch } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
-import Button from "../../../../components/common/Button";
-import FilterBottomSheet from "../../../../components/common/FilterBottomSheet";
+import Button from "../../../../../components/common/Button";
+import FilterBottomSheet from "../../../../../components/common/FilterBottomSheet";
import {
TextInput,
TextArea,
SelectField,
DateField,
FeeInput,
-} from "../../../../components/form";
-import { useHideBottomTab } from "../../../../hooks/useHideBottomTab";
-import { CheckIcon } from "../../../_auth/components/CheckIcon";
-import ExistSuggestIcon from "../../../../assets/icon/exist-suggest.svg";
-import { existingCampaigns } from "../../../../data/existing-campaigns";
+} from "../../../../../components/form";
+import { useHideBottomTab } from "../../../../../hooks/useHideBottomTab";
+import { CheckIcon } from "../../../../_auth/components/CheckIcon";
+import ExistSuggestIcon from "../../../../../assets/icon/exist-suggest.svg";
+import { existingCampaigns } from "../../../../../data/existing-campaigns";
import ProfileSelector from "../components/ProfileSelector";
import SelectBottomSheet from "./components/SelectBottomSheet";
import DatePickerBottomSheet from "./components/DatePickerBottomSheet";
@@ -34,7 +34,7 @@ import {
export default function CreateCampaignContent() {
const navigate = useNavigate();
- const { type } = useSearch({ from: "/_main/matching-suggest/create" });
+ const { type } = useSearch({ from: "/_main/matching/suggest/create" });
// 바텀시트 상태 (기존 캠페인일 때만 열림)
const [isSheetOpen, setIsSheetOpen] = useState(type === "existing");
@@ -82,7 +82,7 @@ export default function CreateCampaignContent() {
const handleSheetClose = () => {
setIsSheetOpen(false);
- navigate({ to: "/matching-suggest" });
+ navigate({ to: "/matching/suggest" });
};
const onSubmit = (data: CampaignFormData) => {
diff --git a/src/routes/_main/matching-suggest/create/route.tsx b/src/routes/_main/matching/suggest/create/route.tsx
similarity index 82%
rename from src/routes/_main/matching-suggest/create/route.tsx
rename to src/routes/_main/matching/suggest/create/route.tsx
index 3808117..25650ae 100644
--- a/src/routes/_main/matching-suggest/create/route.tsx
+++ b/src/routes/_main/matching/suggest/create/route.tsx
@@ -1,7 +1,7 @@
import { createFileRoute } from "@tanstack/react-router";
import CreateCampaignContent from "./create-campaign-content";
-export const Route = createFileRoute("/_main/matching-suggest/create")({
+export const Route = createFileRoute("/_main/matching/suggest/create")({
validateSearch: (search: Record) => {
return {
type: (search.type as "new" | "existing") || "new",
diff --git a/src/routes/_main/matching-suggest/create/schema.ts b/src/routes/_main/matching/suggest/create/schema.ts
similarity index 100%
rename from src/routes/_main/matching-suggest/create/schema.ts
rename to src/routes/_main/matching/suggest/create/schema.ts
diff --git a/src/routes/_main/matching-suggest/index.tsx b/src/routes/_main/matching/suggest/index.tsx
similarity index 72%
rename from src/routes/_main/matching-suggest/index.tsx
rename to src/routes/_main/matching/suggest/index.tsx
index cf24f19..0ee3251 100644
--- a/src/routes/_main/matching-suggest/index.tsx
+++ b/src/routes/_main/matching/suggest/index.tsx
@@ -1,6 +1,6 @@
import { createFileRoute } from "@tanstack/react-router";
import MatchingSuggestContent from "./matching-suggest-content";
-export const Route = createFileRoute("/_main/matching-suggest/")({
+export const Route = createFileRoute("/_main/matching/suggest/")({
component: MatchingSuggestContent,
});
diff --git a/src/routes/_main/matching-suggest/matching-suggest-content.tsx b/src/routes/_main/matching/suggest/matching-suggest-content.tsx
similarity index 73%
rename from src/routes/_main/matching-suggest/matching-suggest-content.tsx
rename to src/routes/_main/matching/suggest/matching-suggest-content.tsx
index 4eb7e4f..33432bf 100644
--- a/src/routes/_main/matching-suggest/matching-suggest-content.tsx
+++ b/src/routes/_main/matching/suggest/matching-suggest-content.tsx
@@ -1,17 +1,17 @@
import { useNavigate } from "@tanstack/react-router";
-import Button from "../../../components/common/Button";
-import NewSuggestIcon from "../../../assets/icon/new-suggest.svg";
-import ExistSuggestIcon from "../../../assets/icon/exist-suggest.svg";
+import Button from "../../../../components/common/Button";
+import NewSuggestIcon from "../../../../assets/icon/new-suggest.svg";
+import ExistSuggestIcon from "../../../../assets/icon/exist-suggest.svg";
export default function MatchingSuggestContent() {
const navigate = useNavigate();
const handleNewCampaign = () => {
- navigate({ to: "/matching-suggest/create", search: { type: "new" } });
+ navigate({ to: "/matching/suggest/create", search: { type: "new" } });
};
const handleExistingCampaign = () => {
- navigate({ to: "/matching-suggest/create", search: { type: "existing" } });
+ navigate({ to: "/matching/suggest/create", search: { type: "existing" } });
};
return (
diff --git a/src/routes/_main/matching-suggest/route.tsx b/src/routes/_main/matching/suggest/route.tsx
similarity index 83%
rename from src/routes/_main/matching-suggest/route.tsx
rename to src/routes/_main/matching/suggest/route.tsx
index 41d1dd4..7741f41 100644
--- a/src/routes/_main/matching-suggest/route.tsx
+++ b/src/routes/_main/matching/suggest/route.tsx
@@ -1,9 +1,9 @@
import { createFileRoute, Outlet } from "@tanstack/react-router";
import { useContext, useEffect } from "react";
-import { LayoutContext } from "../layout-context";
+import { LayoutContext } from "../../layout-context";
import SuggestHeader from "./components/SuggestHeader";
-export const Route = createFileRoute("/_main/matching-suggest")({
+export const Route = createFileRoute("/_main/matching/suggest")({
component: MatchingSuggestLayout,
});
diff --git a/src/routes/_main/matching-test/components/BottomSheet.tsx b/src/routes/_main/matching/test/components/BottomSheet.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/BottomSheet.tsx
rename to src/routes/_main/matching/test/components/BottomSheet.tsx
diff --git a/src/routes/_main/matching-test/components/CheckDropdown.tsx b/src/routes/_main/matching/test/components/CheckDropdown.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/CheckDropdown.tsx
rename to src/routes/_main/matching/test/components/CheckDropdown.tsx
diff --git a/src/routes/_main/matching-test/components/FormField.tsx b/src/routes/_main/matching/test/components/FormField.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/FormField.tsx
rename to src/routes/_main/matching/test/components/FormField.tsx
diff --git a/src/routes/_main/matching-test/components/InputSheet.tsx b/src/routes/_main/matching/test/components/InputSheet.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/InputSheet.tsx
rename to src/routes/_main/matching/test/components/InputSheet.tsx
diff --git a/src/routes/_main/matching-test/components/MatchingTestHeader.tsx b/src/routes/_main/matching/test/components/MatchingTestHeader.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/MatchingTestHeader.tsx
rename to src/routes/_main/matching/test/components/MatchingTestHeader.tsx
diff --git a/src/routes/_main/matching-test/components/SelectChip.tsx b/src/routes/_main/matching/test/components/SelectChip.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/SelectChip.tsx
rename to src/routes/_main/matching/test/components/SelectChip.tsx
diff --git a/src/routes/_main/matching-test/components/SelectContents.tsx b/src/routes/_main/matching/test/components/SelectContents.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/SelectContents.tsx
rename to src/routes/_main/matching/test/components/SelectContents.tsx
diff --git a/src/routes/_main/matching-test/components/SelectSheet.tsx b/src/routes/_main/matching/test/components/SelectSheet.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/SelectSheet.tsx
rename to src/routes/_main/matching/test/components/SelectSheet.tsx
diff --git a/src/routes/_main/matching-test/components/Selectfield.tsx b/src/routes/_main/matching/test/components/Selectfield.tsx
similarity index 100%
rename from src/routes/_main/matching-test/components/Selectfield.tsx
rename to src/routes/_main/matching/test/components/Selectfield.tsx
diff --git a/src/routes/_main/matching-test/matching-result/matching-result-content.tsx b/src/routes/_main/matching/test/result/matching-result-content.tsx
similarity index 93%
rename from src/routes/_main/matching-test/matching-result/matching-result-content.tsx
rename to src/routes/_main/matching/test/result/matching-result-content.tsx
index 00c89fe..681575d 100644
--- a/src/routes/_main/matching-test/matching-result/matching-result-content.tsx
+++ b/src/routes/_main/matching/test/result/matching-result-content.tsx
@@ -1,7 +1,7 @@
import { Route } from "./route";
-import MatchResultHeader from "../../../../components/common/RealmatchHeader";
-import MainIcon from "../../../../assets/MainIcon.svg";
-import Button from "../../../../components/common/Button";
+import MatchResultHeader from "../../../../../components/common/RealmatchHeader";
+import MainIcon from "../../../../../assets/MainIcon.svg"
+import Button from "../../../../../components/common/Button";
export default function MatchingResultContent() {
const search = Route.useSearch();
diff --git a/src/routes/_main/matching-test/matching-result/route.tsx b/src/routes/_main/matching/test/result/route.tsx
similarity index 92%
rename from src/routes/_main/matching-test/matching-result/route.tsx
rename to src/routes/_main/matching/test/result/route.tsx
index 2f38863..0f4f1ab 100644
--- a/src/routes/_main/matching-test/matching-result/route.tsx
+++ b/src/routes/_main/matching/test/result/route.tsx
@@ -9,7 +9,7 @@ type Step4Search = {
recommendedBrand?: string;
};
-export const Route = createFileRoute("/_main/matching-test/matching-result")({
+export const Route = createFileRoute("/_main/matching/test/result")({
component: MatchingResultContent,
validateSearch: (search: Record): Step4Search => ({
userName: typeof search.userName === "string" ? search.userName : undefined,
diff --git a/src/routes/_main/matching-test/matching-test/step1/route.tsx b/src/routes/_main/matching/test/step1/route.tsx
similarity index 92%
rename from src/routes/_main/matching-test/matching-test/step1/route.tsx
rename to src/routes/_main/matching/test/step1/route.tsx
index 6facb39..24095e4 100644
--- a/src/routes/_main/matching-test/matching-test/step1/route.tsx
+++ b/src/routes/_main/matching/test/step1/route.tsx
@@ -19,7 +19,7 @@ const SECTIONS: Array<{
{ key: "makeupStyle", title: "메이크업 스타일", items: ["내추럴", "화려한", "글로우", "매트"] },
] as const;
-export const Route = createFileRoute("/_main/matching-test/matching-test/step1")({
+export const Route = createFileRoute("/_main/matching/test/step1")({
component: MatchingTestStep1Page,
});
@@ -49,7 +49,7 @@ function MatchingTestStep1Page() {
onToggle={(section, label) => toggleStore(section, label, MAX_PER_SECTION)}
canGoNext={canGoNext}
onBack={() => navigate({ to: "/" })}
- onNext={() => navigate({ to: "/matching-test/matching-test/step2" })}
+ onNext={() => navigate({ to: "/matching/test/step2" })}
/>
);
}
diff --git a/src/routes/_main/matching-test/matching-test/step1/step1-content.tsx b/src/routes/_main/matching/test/step1/step1-content.tsx
similarity index 96%
rename from src/routes/_main/matching-test/matching-test/step1/step1-content.tsx
rename to src/routes/_main/matching/test/step1/step1-content.tsx
index 7f4f365..7adf670 100644
--- a/src/routes/_main/matching-test/matching-test/step1/step1-content.tsx
+++ b/src/routes/_main/matching/test/step1/step1-content.tsx
@@ -1,5 +1,5 @@
-import SelectChip from "../../components/SelectChip";
-import MatchingTestTopBar from "../../components/MatchingTestHeader";
+import SelectChip from "../components/SelectChip";
+import MatchingTestTopBar from "../components/MatchingTestHeader";
import Button from "../../../../../components/common/Button";
type SectionKey = "style" | "function" | "skinType" | "skinTone" | "makeupStyle";
diff --git a/src/routes/_main/matching-test/matching-test/step2/route.tsx b/src/routes/_main/matching/test/step2/route.tsx
similarity index 90%
rename from src/routes/_main/matching-test/matching-test/step2/route.tsx
rename to src/routes/_main/matching/test/step2/route.tsx
index 3e107ff..9e67f4a 100644
--- a/src/routes/_main/matching-test/matching-test/step2/route.tsx
+++ b/src/routes/_main/matching/test/step2/route.tsx
@@ -3,7 +3,7 @@ import { useMemo } from "react";
import MatchingTestStep2Content from "./step2-content";
import { useMatchingTestStore, type Step2SectionKey } from "../../../../../stores/matching-test";
-export const Route = createFileRoute("/_main/matching-test/matching-test/step2")({
+export const Route = createFileRoute("/_main/matching/test/step2")({
component: MatchingTestStep2Page,
});
@@ -55,8 +55,8 @@ function MatchingTestStep2Page() {
onTopSizeChange={setTopSize}
onBottomSizeChange={setBottomSizeIn}
canGoNext={canGoNext}
- onBack={() => navigate({ to: "/matching-test/matching-test/step1" })}
- onNext={() => navigate({ to: "/matching-test/matching-test/step3" })}
+ onBack={() => navigate({ to: "/matching/test/step1" })}
+ onNext={() => navigate({ to: "/matching/test/step3" })}
/>
);
}
diff --git a/src/routes/_main/matching-test/matching-test/step2/step2-content.tsx b/src/routes/_main/matching/test/step2/step2-content.tsx
similarity index 96%
rename from src/routes/_main/matching-test/matching-test/step2/step2-content.tsx
rename to src/routes/_main/matching/test/step2/step2-content.tsx
index c731529..7aec17d 100644
--- a/src/routes/_main/matching-test/matching-test/step2/step2-content.tsx
+++ b/src/routes/_main/matching/test/step2/step2-content.tsx
@@ -1,12 +1,12 @@
import { useMemo, useState } from "react";
import type { Step2SectionKey, Step2SelectedState } from "../../../../../stores/matching-test";
-import SelectChip from "../../components/SelectChip";
-import FormField from "../../components/FormField";
-import BottomSheet from "../../components/BottomSheet";
-import InputSheet from "../../components/InputSheet";
-import SelectSheet from "../../components/SelectSheet";
-import MatchingTestTopBar from "../../components/MatchingTestHeader";
+import SelectChip from "../components/SelectChip";
+import FormField from "../components/FormField";
+import BottomSheet from "../components/BottomSheet";
+import InputSheet from "../components/InputSheet";
+import SelectSheet from "../components/SelectSheet";
+import MatchingTestTopBar from "../components/MatchingTestHeader";
import Button from "../../../../../components/common/Button";
type Props = {
diff --git a/src/routes/_main/matching-test/matching-test/step3/route.tsx b/src/routes/_main/matching/test/step3/route.tsx
similarity index 93%
rename from src/routes/_main/matching-test/matching-test/step3/route.tsx
rename to src/routes/_main/matching/test/step3/route.tsx
index 816157e..f4d5068 100644
--- a/src/routes/_main/matching-test/matching-test/step3/route.tsx
+++ b/src/routes/_main/matching/test/step3/route.tsx
@@ -3,7 +3,7 @@ import { useMemo } from "react";
import MatchingTestStep3Content from "./step3-content";
import { useMatchingTestStore, type Step3ChipKey, type Step3SelectKey } from "../../../../../stores/matching-test";
-export const Route = createFileRoute("/_main/matching-test/matching-test/step3")({
+export const Route = createFileRoute("/_main/matching/test/step3")({
component: MatchingTestStep3Page,
});
@@ -61,7 +61,7 @@ function MatchingTestStep3Page() {
step3Chips={step3Chips}
onToggleChip={onToggleChip}
canGoNext={canGoNext}
- onBack={() => navigate({ to: "/matching-test/matching-test/step2" })}
+ onBack={() => navigate({ to: "/matching/test/step2" })}
/>
);
}
diff --git a/src/routes/_main/matching-test/matching-test/step3/step3-content.tsx b/src/routes/_main/matching/test/step3/step3-content.tsx
similarity index 96%
rename from src/routes/_main/matching-test/matching-test/step3/step3-content.tsx
rename to src/routes/_main/matching/test/step3/step3-content.tsx
index 89f2b18..0f152f7 100644
--- a/src/routes/_main/matching-test/matching-test/step3/step3-content.tsx
+++ b/src/routes/_main/matching/test/step3/step3-content.tsx
@@ -1,13 +1,13 @@
import { useMemo, useState } from "react";
import type { Step3ChipKey, Step3ChipsState, Step3SelectKey, Step3SelectedState } from "../../../../../stores/matching-test";
-import MatchingTestTopBar from "../../components/MatchingTestHeader";
-import SelectChip from "../../components/SelectChip";
-import FormField from "../../components/FormField";
-import BottomSheet from "../../components/BottomSheet";
-import InputSheet from "../../components/InputSheet";
-import SelectSheet from "../../components/SelectSheet";
-import CheckDropdown from "../../components/CheckDropdown";
+import MatchingTestTopBar from "../components/MatchingTestHeader";
+import SelectChip from "../components/SelectChip";
+import FormField from "../components/FormField";
+import BottomSheet from "../components/BottomSheet";
+import InputSheet from "../components/InputSheet";
+import SelectSheet from "../components/SelectSheet";
+import CheckDropdown from "../components/CheckDropdown";
import Button from "../../../../../components/common/Button";
type Props = {
diff --git a/src/routes/_main/mypage/mypage-content.tsx b/src/routes/_main/mypage/mypage-content.tsx
index 94c983b..b3a2f78 100644
--- a/src/routes/_main/mypage/mypage-content.tsx
+++ b/src/routes/_main/mypage/mypage-content.tsx
@@ -17,7 +17,7 @@ export default function MyPageContent() {
email: me?.email ?? "yeahsel0608@cau.ac.kr",
avatarUrl: me?.avatarUrl ?? "/images/default-avatar.png",
}}
- onGoMatchingTest={() => navigate({ to: "/matching-test/matching-test/step1" })}
+ onGoMatchingTest={() => navigate({ to: "/matching/test/step1" })}
onOpenProfileCard={() => navigate({ to: "/mypage/profileCard" })}
onOpenLikes={() => navigate({ to: "/mypage/likes" })}
onOpenEditProfile={() => navigate({ to: "/mypage/edit" })}
From 4630647fc57a485a279b83278e4176f6a147f767 Mon Sep 17 00:00:00 2001
From: seyun31 <2ne1jenna@naver.com>
Date: Fri, 30 Jan 2026 00:16:45 +0900
Subject: [PATCH 5/7] =?UTF-8?q?fix:=20=EB=9D=BC=EC=9A=B0=ED=8A=B8=20?=
=?UTF-8?q?=ED=83=80=EC=9E=85=20=EC=97=90=EB=9F=AC=20=EB=B0=8F=20=EB=88=84?=
=?UTF-8?q?=EB=9D=BD=EB=90=9C=20prop=20=EC=88=98=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- TanStack Router createFileRoute 인자 제거 (자동 추론 사용)
- step3 라우트에 누락된 onNext prop 추가
- signup purpose 라우트에 type search 파라미터 추가
---
.gitignore | 3 +-
src/routeTree.gen.ts | 852 ++++++++++++++++++
src/routes/_auth/signup/purpose/route.tsx | 2 +
.../_main/matching/test/step3/route.tsx | 1 +
4 files changed, 856 insertions(+), 2 deletions(-)
create mode 100644 src/routeTree.gen.ts
diff --git a/.gitignore b/.gitignore
index 1b0fa86..e946f46 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,5 +30,4 @@ dist-ssr
# TanStack Router auto-generated
.tanstack/
-.tanstack/tmp
-src/routeTree.gen.ts
\ No newline at end of file
+.tanstack/tmp
\ No newline at end of file
diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts
new file mode 100644
index 0000000..9f20ed2
--- /dev/null
+++ b/src/routeTree.gen.ts
@@ -0,0 +1,852 @@
+/* eslint-disable */
+
+// @ts-nocheck
+
+// noinspection JSUnusedGlobalSymbols
+
+// This file was automatically generated by TanStack Router.
+// You should NOT make any changes in this file as it will be overwritten.
+// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.
+
+import { Route as rootRouteImport } from './routes/__root'
+import { Route as MainRouteImport } from './routes/_main'
+import { Route as RoomsRouteRouteImport } from './routes/rooms/route'
+import { Route as RoomsChatIdRouteImport } from './routes/rooms/$chatId'
+import { Route as MainMypageRouteRouteImport } from './routes/_main/mypage/route'
+import { Route as MainMatchingRouteRouteImport } from './routes/_main/matching/route'
+import { Route as MainChatRouteRouteImport } from './routes/_main/chat/route'
+import { Route as AuthLoginRouteRouteImport } from './routes/_auth/login/route'
+import { Route as MainHomeIndexRouteImport } from './routes/_main/_home/index'
+import { Route as MainMypageWithdrawRouteImport } from './routes/_main/mypage/withdraw'
+import { Route as MainMypageTermsRouteImport } from './routes/_main/mypage/terms'
+import { Route as MainMypageProfileCardRouteImport } from './routes/_main/mypage/profileCard'
+import { Route as MainMypagePrivacyRouteImport } from './routes/_main/mypage/privacy'
+import { Route as MainMypageNotificationsRouteImport } from './routes/_main/mypage/notifications'
+import { Route as MainMypageLikesRouteImport } from './routes/_main/mypage/likes'
+import { Route as MainMypageInquiryRouteImport } from './routes/_main/mypage/inquiry'
+import { Route as MainMypageEditRouteImport } from './routes/_main/mypage/edit'
+import { Route as MainHomePreRouteImport } from './routes/_main/_home/pre'
+import { Route as MainMatchingSuggestRouteRouteImport } from './routes/_main/matching/suggest/route'
+import { Route as MainMatchingCampaignRouteRouteImport } from './routes/_main/matching/campaign/route'
+import { Route as MainMatchingBrandRouteRouteImport } from './routes/_main/matching/brand/route'
+import { Route as MainBusinessRejectionRouteRouteImport } from './routes/_main/_business/rejection/route'
+import { Route as MainBusinessProposalRouteRouteImport } from './routes/_main/_business/proposal/route'
+import { Route as MainBusinessCampaignRouteRouteImport } from './routes/_main/_business/campaign/route'
+import { Route as MainBusinessCalendarRouteRouteImport } from './routes/_main/_business/calendar/route'
+import { Route as AuthSignupTypeRouteRouteImport } from './routes/_auth/signup/type/route'
+import { Route as AuthSignupTermsRouteRouteImport } from './routes/_auth/signup/terms/route'
+import { Route as AuthSignupSuccessRouteRouteImport } from './routes/_auth/signup/success/route'
+import { Route as AuthSignupPurposeRouteRouteImport } from './routes/_auth/signup/purpose/route'
+import { Route as AuthSignupInfoMoreRouteRouteImport } from './routes/_auth/signup/info-more/route'
+import { Route as AuthSignupInfoRouteRouteImport } from './routes/_auth/signup/info/route'
+import { Route as MainMatchingSuggestIndexRouteImport } from './routes/_main/matching/suggest/index'
+import { Route as MainMatchingTestStep3RouteRouteImport } from './routes/_main/matching/test/step3/route'
+import { Route as MainMatchingTestStep2RouteRouteImport } from './routes/_main/matching/test/step2/route'
+import { Route as MainMatchingTestStep1RouteRouteImport } from './routes/_main/matching/test/step1/route'
+import { Route as MainMatchingTestResultRouteRouteImport } from './routes/_main/matching/test/result/route'
+import { Route as MainMatchingSuggestCreateRouteRouteImport } from './routes/_main/matching/suggest/create/route'
+
+const MainRoute = MainRouteImport.update({
+ id: '/_main',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const RoomsRouteRoute = RoomsRouteRouteImport.update({
+ id: '/rooms',
+ path: '/rooms',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const RoomsChatIdRoute = RoomsChatIdRouteImport.update({
+ id: '/$chatId',
+ path: '/$chatId',
+ getParentRoute: () => RoomsRouteRoute,
+} as any)
+const MainMypageRouteRoute = MainMypageRouteRouteImport.update({
+ id: '/mypage',
+ path: '/mypage',
+ getParentRoute: () => MainRoute,
+} as any)
+const MainMatchingRouteRoute = MainMatchingRouteRouteImport.update({
+ id: '/matching',
+ path: '/matching',
+ getParentRoute: () => MainRoute,
+} as any)
+const MainChatRouteRoute = MainChatRouteRouteImport.update({
+ id: '/chat',
+ path: '/chat',
+ getParentRoute: () => MainRoute,
+} as any)
+const AuthLoginRouteRoute = AuthLoginRouteRouteImport.update({
+ id: '/_auth/login',
+ path: '/login',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const MainHomeIndexRoute = MainHomeIndexRouteImport.update({
+ id: '/_home/',
+ path: '/',
+ getParentRoute: () => MainRoute,
+} as any)
+const MainMypageWithdrawRoute = MainMypageWithdrawRouteImport.update({
+ id: '/withdraw',
+ path: '/withdraw',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainMypageTermsRoute = MainMypageTermsRouteImport.update({
+ id: '/terms',
+ path: '/terms',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainMypageProfileCardRoute = MainMypageProfileCardRouteImport.update({
+ id: '/profileCard',
+ path: '/profileCard',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainMypagePrivacyRoute = MainMypagePrivacyRouteImport.update({
+ id: '/privacy',
+ path: '/privacy',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainMypageNotificationsRoute = MainMypageNotificationsRouteImport.update({
+ id: '/notifications',
+ path: '/notifications',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainMypageLikesRoute = MainMypageLikesRouteImport.update({
+ id: '/likes',
+ path: '/likes',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainMypageInquiryRoute = MainMypageInquiryRouteImport.update({
+ id: '/inquiry',
+ path: '/inquiry',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainMypageEditRoute = MainMypageEditRouteImport.update({
+ id: '/edit',
+ path: '/edit',
+ getParentRoute: () => MainMypageRouteRoute,
+} as any)
+const MainHomePreRoute = MainHomePreRouteImport.update({
+ id: '/_home/pre',
+ path: '/pre',
+ getParentRoute: () => MainRoute,
+} as any)
+const MainMatchingSuggestRouteRoute =
+ MainMatchingSuggestRouteRouteImport.update({
+ id: '/suggest',
+ path: '/suggest',
+ getParentRoute: () => MainMatchingRouteRoute,
+ } as any)
+const MainMatchingCampaignRouteRoute =
+ MainMatchingCampaignRouteRouteImport.update({
+ id: '/campaign',
+ path: '/campaign',
+ getParentRoute: () => MainMatchingRouteRoute,
+ } as any)
+const MainMatchingBrandRouteRoute = MainMatchingBrandRouteRouteImport.update({
+ id: '/brand',
+ path: '/brand',
+ getParentRoute: () => MainMatchingRouteRoute,
+} as any)
+const MainBusinessRejectionRouteRoute =
+ MainBusinessRejectionRouteRouteImport.update({
+ id: '/_business/rejection',
+ path: '/rejection',
+ getParentRoute: () => MainRoute,
+ } as any)
+const MainBusinessProposalRouteRoute =
+ MainBusinessProposalRouteRouteImport.update({
+ id: '/_business/proposal',
+ path: '/proposal',
+ getParentRoute: () => MainRoute,
+ } as any)
+const MainBusinessCampaignRouteRoute =
+ MainBusinessCampaignRouteRouteImport.update({
+ id: '/_business/campaign',
+ path: '/campaign',
+ getParentRoute: () => MainRoute,
+ } as any)
+const MainBusinessCalendarRouteRoute =
+ MainBusinessCalendarRouteRouteImport.update({
+ id: '/_business/calendar',
+ path: '/calendar',
+ getParentRoute: () => MainRoute,
+ } as any)
+const AuthSignupTypeRouteRoute = AuthSignupTypeRouteRouteImport.update({
+ id: '/_auth/signup/type',
+ path: '/signup/type',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const AuthSignupTermsRouteRoute = AuthSignupTermsRouteRouteImport.update({
+ id: '/_auth/signup/terms',
+ path: '/signup/terms',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const AuthSignupSuccessRouteRoute = AuthSignupSuccessRouteRouteImport.update({
+ id: '/_auth/signup/success',
+ path: '/signup/success',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const AuthSignupPurposeRouteRoute = AuthSignupPurposeRouteRouteImport.update({
+ id: '/_auth/signup/purpose',
+ path: '/signup/purpose',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const AuthSignupInfoMoreRouteRoute = AuthSignupInfoMoreRouteRouteImport.update({
+ id: '/_auth/signup/info-more',
+ path: '/signup/info-more',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const AuthSignupInfoRouteRoute = AuthSignupInfoRouteRouteImport.update({
+ id: '/_auth/signup/info',
+ path: '/signup/info',
+ getParentRoute: () => rootRouteImport,
+} as any)
+const MainMatchingSuggestIndexRoute =
+ MainMatchingSuggestIndexRouteImport.update({
+ id: '/',
+ path: '/',
+ getParentRoute: () => MainMatchingSuggestRouteRoute,
+ } as any)
+const MainMatchingTestStep3RouteRoute =
+ MainMatchingTestStep3RouteRouteImport.update({
+ id: '/test/step3',
+ path: '/test/step3',
+ getParentRoute: () => MainMatchingRouteRoute,
+ } as any)
+const MainMatchingTestStep2RouteRoute =
+ MainMatchingTestStep2RouteRouteImport.update({
+ id: '/test/step2',
+ path: '/test/step2',
+ getParentRoute: () => MainMatchingRouteRoute,
+ } as any)
+const MainMatchingTestStep1RouteRoute =
+ MainMatchingTestStep1RouteRouteImport.update({
+ id: '/test/step1',
+ path: '/test/step1',
+ getParentRoute: () => MainMatchingRouteRoute,
+ } as any)
+const MainMatchingTestResultRouteRoute =
+ MainMatchingTestResultRouteRouteImport.update({
+ id: '/test/result',
+ path: '/test/result',
+ getParentRoute: () => MainMatchingRouteRoute,
+ } as any)
+const MainMatchingSuggestCreateRouteRoute =
+ MainMatchingSuggestCreateRouteRouteImport.update({
+ id: '/create',
+ path: '/create',
+ getParentRoute: () => MainMatchingSuggestRouteRoute,
+ } as any)
+
+export interface FileRoutesByFullPath {
+ '/rooms': typeof RoomsRouteRouteWithChildren
+ '/': typeof MainHomeIndexRoute
+ '/login': typeof AuthLoginRouteRoute
+ '/chat': typeof MainChatRouteRoute
+ '/matching': typeof MainMatchingRouteRouteWithChildren
+ '/mypage': typeof MainMypageRouteRouteWithChildren
+ '/rooms/$chatId': typeof RoomsChatIdRoute
+ '/signup/info': typeof AuthSignupInfoRouteRoute
+ '/signup/info-more': typeof AuthSignupInfoMoreRouteRoute
+ '/signup/purpose': typeof AuthSignupPurposeRouteRoute
+ '/signup/success': typeof AuthSignupSuccessRouteRoute
+ '/signup/terms': typeof AuthSignupTermsRouteRoute
+ '/signup/type': typeof AuthSignupTypeRouteRoute
+ '/calendar': typeof MainBusinessCalendarRouteRoute
+ '/campaign': typeof MainBusinessCampaignRouteRoute
+ '/proposal': typeof MainBusinessProposalRouteRoute
+ '/rejection': typeof MainBusinessRejectionRouteRoute
+ '/matching/brand': typeof MainMatchingBrandRouteRoute
+ '/matching/campaign': typeof MainMatchingCampaignRouteRoute
+ '/matching/suggest': typeof MainMatchingSuggestRouteRouteWithChildren
+ '/pre': typeof MainHomePreRoute
+ '/mypage/edit': typeof MainMypageEditRoute
+ '/mypage/inquiry': typeof MainMypageInquiryRoute
+ '/mypage/likes': typeof MainMypageLikesRoute
+ '/mypage/notifications': typeof MainMypageNotificationsRoute
+ '/mypage/privacy': typeof MainMypagePrivacyRoute
+ '/mypage/profileCard': typeof MainMypageProfileCardRoute
+ '/mypage/terms': typeof MainMypageTermsRoute
+ '/mypage/withdraw': typeof MainMypageWithdrawRoute
+ '/matching/suggest/create': typeof MainMatchingSuggestCreateRouteRoute
+ '/matching/test/result': typeof MainMatchingTestResultRouteRoute
+ '/matching/test/step1': typeof MainMatchingTestStep1RouteRoute
+ '/matching/test/step2': typeof MainMatchingTestStep2RouteRoute
+ '/matching/test/step3': typeof MainMatchingTestStep3RouteRoute
+ '/matching/suggest/': typeof MainMatchingSuggestIndexRoute
+}
+export interface FileRoutesByTo {
+ '/rooms': typeof RoomsRouteRouteWithChildren
+ '/login': typeof AuthLoginRouteRoute
+ '/chat': typeof MainChatRouteRoute
+ '/matching': typeof MainMatchingRouteRouteWithChildren
+ '/mypage': typeof MainMypageRouteRouteWithChildren
+ '/rooms/$chatId': typeof RoomsChatIdRoute
+ '/signup/info': typeof AuthSignupInfoRouteRoute
+ '/signup/info-more': typeof AuthSignupInfoMoreRouteRoute
+ '/signup/purpose': typeof AuthSignupPurposeRouteRoute
+ '/signup/success': typeof AuthSignupSuccessRouteRoute
+ '/signup/terms': typeof AuthSignupTermsRouteRoute
+ '/signup/type': typeof AuthSignupTypeRouteRoute
+ '/calendar': typeof MainBusinessCalendarRouteRoute
+ '/campaign': typeof MainBusinessCampaignRouteRoute
+ '/proposal': typeof MainBusinessProposalRouteRoute
+ '/rejection': typeof MainBusinessRejectionRouteRoute
+ '/matching/brand': typeof MainMatchingBrandRouteRoute
+ '/matching/campaign': typeof MainMatchingCampaignRouteRoute
+ '/pre': typeof MainHomePreRoute
+ '/mypage/edit': typeof MainMypageEditRoute
+ '/mypage/inquiry': typeof MainMypageInquiryRoute
+ '/mypage/likes': typeof MainMypageLikesRoute
+ '/mypage/notifications': typeof MainMypageNotificationsRoute
+ '/mypage/privacy': typeof MainMypagePrivacyRoute
+ '/mypage/profileCard': typeof MainMypageProfileCardRoute
+ '/mypage/terms': typeof MainMypageTermsRoute
+ '/mypage/withdraw': typeof MainMypageWithdrawRoute
+ '/': typeof MainHomeIndexRoute
+ '/matching/suggest/create': typeof MainMatchingSuggestCreateRouteRoute
+ '/matching/test/result': typeof MainMatchingTestResultRouteRoute
+ '/matching/test/step1': typeof MainMatchingTestStep1RouteRoute
+ '/matching/test/step2': typeof MainMatchingTestStep2RouteRoute
+ '/matching/test/step3': typeof MainMatchingTestStep3RouteRoute
+ '/matching/suggest': typeof MainMatchingSuggestIndexRoute
+}
+export interface FileRoutesById {
+ __root__: typeof rootRouteImport
+ '/rooms': typeof RoomsRouteRouteWithChildren
+ '/_main': typeof MainRouteWithChildren
+ '/_auth/login': typeof AuthLoginRouteRoute
+ '/_main/chat': typeof MainChatRouteRoute
+ '/_main/matching': typeof MainMatchingRouteRouteWithChildren
+ '/_main/mypage': typeof MainMypageRouteRouteWithChildren
+ '/rooms/$chatId': typeof RoomsChatIdRoute
+ '/_auth/signup/info': typeof AuthSignupInfoRouteRoute
+ '/_auth/signup/info-more': typeof AuthSignupInfoMoreRouteRoute
+ '/_auth/signup/purpose': typeof AuthSignupPurposeRouteRoute
+ '/_auth/signup/success': typeof AuthSignupSuccessRouteRoute
+ '/_auth/signup/terms': typeof AuthSignupTermsRouteRoute
+ '/_auth/signup/type': typeof AuthSignupTypeRouteRoute
+ '/_main/_business/calendar': typeof MainBusinessCalendarRouteRoute
+ '/_main/_business/campaign': typeof MainBusinessCampaignRouteRoute
+ '/_main/_business/proposal': typeof MainBusinessProposalRouteRoute
+ '/_main/_business/rejection': typeof MainBusinessRejectionRouteRoute
+ '/_main/matching/brand': typeof MainMatchingBrandRouteRoute
+ '/_main/matching/campaign': typeof MainMatchingCampaignRouteRoute
+ '/_main/matching/suggest': typeof MainMatchingSuggestRouteRouteWithChildren
+ '/_main/_home/pre': typeof MainHomePreRoute
+ '/_main/mypage/edit': typeof MainMypageEditRoute
+ '/_main/mypage/inquiry': typeof MainMypageInquiryRoute
+ '/_main/mypage/likes': typeof MainMypageLikesRoute
+ '/_main/mypage/notifications': typeof MainMypageNotificationsRoute
+ '/_main/mypage/privacy': typeof MainMypagePrivacyRoute
+ '/_main/mypage/profileCard': typeof MainMypageProfileCardRoute
+ '/_main/mypage/terms': typeof MainMypageTermsRoute
+ '/_main/mypage/withdraw': typeof MainMypageWithdrawRoute
+ '/_main/_home/': typeof MainHomeIndexRoute
+ '/_main/matching/suggest/create': typeof MainMatchingSuggestCreateRouteRoute
+ '/_main/matching/test/result': typeof MainMatchingTestResultRouteRoute
+ '/_main/matching/test/step1': typeof MainMatchingTestStep1RouteRoute
+ '/_main/matching/test/step2': typeof MainMatchingTestStep2RouteRoute
+ '/_main/matching/test/step3': typeof MainMatchingTestStep3RouteRoute
+ '/_main/matching/suggest/': typeof MainMatchingSuggestIndexRoute
+}
+export interface FileRouteTypes {
+ fileRoutesByFullPath: FileRoutesByFullPath
+ fullPaths:
+ | '/rooms'
+ | '/'
+ | '/login'
+ | '/chat'
+ | '/matching'
+ | '/mypage'
+ | '/rooms/$chatId'
+ | '/signup/info'
+ | '/signup/info-more'
+ | '/signup/purpose'
+ | '/signup/success'
+ | '/signup/terms'
+ | '/signup/type'
+ | '/calendar'
+ | '/campaign'
+ | '/proposal'
+ | '/rejection'
+ | '/matching/brand'
+ | '/matching/campaign'
+ | '/matching/suggest'
+ | '/pre'
+ | '/mypage/edit'
+ | '/mypage/inquiry'
+ | '/mypage/likes'
+ | '/mypage/notifications'
+ | '/mypage/privacy'
+ | '/mypage/profileCard'
+ | '/mypage/terms'
+ | '/mypage/withdraw'
+ | '/matching/suggest/create'
+ | '/matching/test/result'
+ | '/matching/test/step1'
+ | '/matching/test/step2'
+ | '/matching/test/step3'
+ | '/matching/suggest/'
+ fileRoutesByTo: FileRoutesByTo
+ to:
+ | '/rooms'
+ | '/login'
+ | '/chat'
+ | '/matching'
+ | '/mypage'
+ | '/rooms/$chatId'
+ | '/signup/info'
+ | '/signup/info-more'
+ | '/signup/purpose'
+ | '/signup/success'
+ | '/signup/terms'
+ | '/signup/type'
+ | '/calendar'
+ | '/campaign'
+ | '/proposal'
+ | '/rejection'
+ | '/matching/brand'
+ | '/matching/campaign'
+ | '/pre'
+ | '/mypage/edit'
+ | '/mypage/inquiry'
+ | '/mypage/likes'
+ | '/mypage/notifications'
+ | '/mypage/privacy'
+ | '/mypage/profileCard'
+ | '/mypage/terms'
+ | '/mypage/withdraw'
+ | '/'
+ | '/matching/suggest/create'
+ | '/matching/test/result'
+ | '/matching/test/step1'
+ | '/matching/test/step2'
+ | '/matching/test/step3'
+ | '/matching/suggest'
+ id:
+ | '__root__'
+ | '/rooms'
+ | '/_main'
+ | '/_auth/login'
+ | '/_main/chat'
+ | '/_main/matching'
+ | '/_main/mypage'
+ | '/rooms/$chatId'
+ | '/_auth/signup/info'
+ | '/_auth/signup/info-more'
+ | '/_auth/signup/purpose'
+ | '/_auth/signup/success'
+ | '/_auth/signup/terms'
+ | '/_auth/signup/type'
+ | '/_main/_business/calendar'
+ | '/_main/_business/campaign'
+ | '/_main/_business/proposal'
+ | '/_main/_business/rejection'
+ | '/_main/matching/brand'
+ | '/_main/matching/campaign'
+ | '/_main/matching/suggest'
+ | '/_main/_home/pre'
+ | '/_main/mypage/edit'
+ | '/_main/mypage/inquiry'
+ | '/_main/mypage/likes'
+ | '/_main/mypage/notifications'
+ | '/_main/mypage/privacy'
+ | '/_main/mypage/profileCard'
+ | '/_main/mypage/terms'
+ | '/_main/mypage/withdraw'
+ | '/_main/_home/'
+ | '/_main/matching/suggest/create'
+ | '/_main/matching/test/result'
+ | '/_main/matching/test/step1'
+ | '/_main/matching/test/step2'
+ | '/_main/matching/test/step3'
+ | '/_main/matching/suggest/'
+ fileRoutesById: FileRoutesById
+}
+export interface RootRouteChildren {
+ RoomsRouteRoute: typeof RoomsRouteRouteWithChildren
+ MainRoute: typeof MainRouteWithChildren
+ AuthLoginRouteRoute: typeof AuthLoginRouteRoute
+ AuthSignupInfoRouteRoute: typeof AuthSignupInfoRouteRoute
+ AuthSignupInfoMoreRouteRoute: typeof AuthSignupInfoMoreRouteRoute
+ AuthSignupPurposeRouteRoute: typeof AuthSignupPurposeRouteRoute
+ AuthSignupSuccessRouteRoute: typeof AuthSignupSuccessRouteRoute
+ AuthSignupTermsRouteRoute: typeof AuthSignupTermsRouteRoute
+ AuthSignupTypeRouteRoute: typeof AuthSignupTypeRouteRoute
+}
+
+declare module '@tanstack/react-router' {
+ interface FileRoutesByPath {
+ '/_main': {
+ id: '/_main'
+ path: ''
+ fullPath: '/'
+ preLoaderRoute: typeof MainRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/rooms': {
+ id: '/rooms'
+ path: '/rooms'
+ fullPath: '/rooms'
+ preLoaderRoute: typeof RoomsRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/rooms/$chatId': {
+ id: '/rooms/$chatId'
+ path: '/$chatId'
+ fullPath: '/rooms/$chatId'
+ preLoaderRoute: typeof RoomsChatIdRouteImport
+ parentRoute: typeof RoomsRouteRoute
+ }
+ '/_main/mypage': {
+ id: '/_main/mypage'
+ path: '/mypage'
+ fullPath: '/mypage'
+ preLoaderRoute: typeof MainMypageRouteRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_main/matching': {
+ id: '/_main/matching'
+ path: '/matching'
+ fullPath: '/matching'
+ preLoaderRoute: typeof MainMatchingRouteRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_main/chat': {
+ id: '/_main/chat'
+ path: '/chat'
+ fullPath: '/chat'
+ preLoaderRoute: typeof MainChatRouteRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_auth/login': {
+ id: '/_auth/login'
+ path: '/login'
+ fullPath: '/login'
+ preLoaderRoute: typeof AuthLoginRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/_main/_home/': {
+ id: '/_main/_home/'
+ path: '/'
+ fullPath: '/'
+ preLoaderRoute: typeof MainHomeIndexRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_main/mypage/withdraw': {
+ id: '/_main/mypage/withdraw'
+ path: '/withdraw'
+ fullPath: '/mypage/withdraw'
+ preLoaderRoute: typeof MainMypageWithdrawRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/mypage/terms': {
+ id: '/_main/mypage/terms'
+ path: '/terms'
+ fullPath: '/mypage/terms'
+ preLoaderRoute: typeof MainMypageTermsRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/mypage/profileCard': {
+ id: '/_main/mypage/profileCard'
+ path: '/profileCard'
+ fullPath: '/mypage/profileCard'
+ preLoaderRoute: typeof MainMypageProfileCardRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/mypage/privacy': {
+ id: '/_main/mypage/privacy'
+ path: '/privacy'
+ fullPath: '/mypage/privacy'
+ preLoaderRoute: typeof MainMypagePrivacyRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/mypage/notifications': {
+ id: '/_main/mypage/notifications'
+ path: '/notifications'
+ fullPath: '/mypage/notifications'
+ preLoaderRoute: typeof MainMypageNotificationsRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/mypage/likes': {
+ id: '/_main/mypage/likes'
+ path: '/likes'
+ fullPath: '/mypage/likes'
+ preLoaderRoute: typeof MainMypageLikesRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/mypage/inquiry': {
+ id: '/_main/mypage/inquiry'
+ path: '/inquiry'
+ fullPath: '/mypage/inquiry'
+ preLoaderRoute: typeof MainMypageInquiryRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/mypage/edit': {
+ id: '/_main/mypage/edit'
+ path: '/edit'
+ fullPath: '/mypage/edit'
+ preLoaderRoute: typeof MainMypageEditRouteImport
+ parentRoute: typeof MainMypageRouteRoute
+ }
+ '/_main/_home/pre': {
+ id: '/_main/_home/pre'
+ path: '/pre'
+ fullPath: '/pre'
+ preLoaderRoute: typeof MainHomePreRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_main/matching/suggest': {
+ id: '/_main/matching/suggest'
+ path: '/suggest'
+ fullPath: '/matching/suggest'
+ preLoaderRoute: typeof MainMatchingSuggestRouteRouteImport
+ parentRoute: typeof MainMatchingRouteRoute
+ }
+ '/_main/matching/campaign': {
+ id: '/_main/matching/campaign'
+ path: '/campaign'
+ fullPath: '/matching/campaign'
+ preLoaderRoute: typeof MainMatchingCampaignRouteRouteImport
+ parentRoute: typeof MainMatchingRouteRoute
+ }
+ '/_main/matching/brand': {
+ id: '/_main/matching/brand'
+ path: '/brand'
+ fullPath: '/matching/brand'
+ preLoaderRoute: typeof MainMatchingBrandRouteRouteImport
+ parentRoute: typeof MainMatchingRouteRoute
+ }
+ '/_main/_business/rejection': {
+ id: '/_main/_business/rejection'
+ path: '/rejection'
+ fullPath: '/rejection'
+ preLoaderRoute: typeof MainBusinessRejectionRouteRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_main/_business/proposal': {
+ id: '/_main/_business/proposal'
+ path: '/proposal'
+ fullPath: '/proposal'
+ preLoaderRoute: typeof MainBusinessProposalRouteRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_main/_business/campaign': {
+ id: '/_main/_business/campaign'
+ path: '/campaign'
+ fullPath: '/campaign'
+ preLoaderRoute: typeof MainBusinessCampaignRouteRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_main/_business/calendar': {
+ id: '/_main/_business/calendar'
+ path: '/calendar'
+ fullPath: '/calendar'
+ preLoaderRoute: typeof MainBusinessCalendarRouteRouteImport
+ parentRoute: typeof MainRoute
+ }
+ '/_auth/signup/type': {
+ id: '/_auth/signup/type'
+ path: '/signup/type'
+ fullPath: '/signup/type'
+ preLoaderRoute: typeof AuthSignupTypeRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/_auth/signup/terms': {
+ id: '/_auth/signup/terms'
+ path: '/signup/terms'
+ fullPath: '/signup/terms'
+ preLoaderRoute: typeof AuthSignupTermsRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/_auth/signup/success': {
+ id: '/_auth/signup/success'
+ path: '/signup/success'
+ fullPath: '/signup/success'
+ preLoaderRoute: typeof AuthSignupSuccessRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/_auth/signup/purpose': {
+ id: '/_auth/signup/purpose'
+ path: '/signup/purpose'
+ fullPath: '/signup/purpose'
+ preLoaderRoute: typeof AuthSignupPurposeRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/_auth/signup/info-more': {
+ id: '/_auth/signup/info-more'
+ path: '/signup/info-more'
+ fullPath: '/signup/info-more'
+ preLoaderRoute: typeof AuthSignupInfoMoreRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/_auth/signup/info': {
+ id: '/_auth/signup/info'
+ path: '/signup/info'
+ fullPath: '/signup/info'
+ preLoaderRoute: typeof AuthSignupInfoRouteRouteImport
+ parentRoute: typeof rootRouteImport
+ }
+ '/_main/matching/suggest/': {
+ id: '/_main/matching/suggest/'
+ path: '/'
+ fullPath: '/matching/suggest/'
+ preLoaderRoute: typeof MainMatchingSuggestIndexRouteImport
+ parentRoute: typeof MainMatchingSuggestRouteRoute
+ }
+ '/_main/matching/test/step3': {
+ id: '/_main/matching/test/step3'
+ path: '/test/step3'
+ fullPath: '/matching/test/step3'
+ preLoaderRoute: typeof MainMatchingTestStep3RouteRouteImport
+ parentRoute: typeof MainMatchingRouteRoute
+ }
+ '/_main/matching/test/step2': {
+ id: '/_main/matching/test/step2'
+ path: '/test/step2'
+ fullPath: '/matching/test/step2'
+ preLoaderRoute: typeof MainMatchingTestStep2RouteRouteImport
+ parentRoute: typeof MainMatchingRouteRoute
+ }
+ '/_main/matching/test/step1': {
+ id: '/_main/matching/test/step1'
+ path: '/test/step1'
+ fullPath: '/matching/test/step1'
+ preLoaderRoute: typeof MainMatchingTestStep1RouteRouteImport
+ parentRoute: typeof MainMatchingRouteRoute
+ }
+ '/_main/matching/test/result': {
+ id: '/_main/matching/test/result'
+ path: '/test/result'
+ fullPath: '/matching/test/result'
+ preLoaderRoute: typeof MainMatchingTestResultRouteRouteImport
+ parentRoute: typeof MainMatchingRouteRoute
+ }
+ '/_main/matching/suggest/create': {
+ id: '/_main/matching/suggest/create'
+ path: '/create'
+ fullPath: '/matching/suggest/create'
+ preLoaderRoute: typeof MainMatchingSuggestCreateRouteRouteImport
+ parentRoute: typeof MainMatchingSuggestRouteRoute
+ }
+ }
+}
+
+interface RoomsRouteRouteChildren {
+ RoomsChatIdRoute: typeof RoomsChatIdRoute
+}
+
+const RoomsRouteRouteChildren: RoomsRouteRouteChildren = {
+ RoomsChatIdRoute: RoomsChatIdRoute,
+}
+
+const RoomsRouteRouteWithChildren = RoomsRouteRoute._addFileChildren(
+ RoomsRouteRouteChildren,
+)
+
+interface MainMatchingSuggestRouteRouteChildren {
+ MainMatchingSuggestCreateRouteRoute: typeof MainMatchingSuggestCreateRouteRoute
+ MainMatchingSuggestIndexRoute: typeof MainMatchingSuggestIndexRoute
+}
+
+const MainMatchingSuggestRouteRouteChildren: MainMatchingSuggestRouteRouteChildren =
+ {
+ MainMatchingSuggestCreateRouteRoute: MainMatchingSuggestCreateRouteRoute,
+ MainMatchingSuggestIndexRoute: MainMatchingSuggestIndexRoute,
+ }
+
+const MainMatchingSuggestRouteRouteWithChildren =
+ MainMatchingSuggestRouteRoute._addFileChildren(
+ MainMatchingSuggestRouteRouteChildren,
+ )
+
+interface MainMatchingRouteRouteChildren {
+ MainMatchingBrandRouteRoute: typeof MainMatchingBrandRouteRoute
+ MainMatchingCampaignRouteRoute: typeof MainMatchingCampaignRouteRoute
+ MainMatchingSuggestRouteRoute: typeof MainMatchingSuggestRouteRouteWithChildren
+ MainMatchingTestResultRouteRoute: typeof MainMatchingTestResultRouteRoute
+ MainMatchingTestStep1RouteRoute: typeof MainMatchingTestStep1RouteRoute
+ MainMatchingTestStep2RouteRoute: typeof MainMatchingTestStep2RouteRoute
+ MainMatchingTestStep3RouteRoute: typeof MainMatchingTestStep3RouteRoute
+}
+
+const MainMatchingRouteRouteChildren: MainMatchingRouteRouteChildren = {
+ MainMatchingBrandRouteRoute: MainMatchingBrandRouteRoute,
+ MainMatchingCampaignRouteRoute: MainMatchingCampaignRouteRoute,
+ MainMatchingSuggestRouteRoute: MainMatchingSuggestRouteRouteWithChildren,
+ MainMatchingTestResultRouteRoute: MainMatchingTestResultRouteRoute,
+ MainMatchingTestStep1RouteRoute: MainMatchingTestStep1RouteRoute,
+ MainMatchingTestStep2RouteRoute: MainMatchingTestStep2RouteRoute,
+ MainMatchingTestStep3RouteRoute: MainMatchingTestStep3RouteRoute,
+}
+
+const MainMatchingRouteRouteWithChildren =
+ MainMatchingRouteRoute._addFileChildren(MainMatchingRouteRouteChildren)
+
+interface MainMypageRouteRouteChildren {
+ MainMypageEditRoute: typeof MainMypageEditRoute
+ MainMypageInquiryRoute: typeof MainMypageInquiryRoute
+ MainMypageLikesRoute: typeof MainMypageLikesRoute
+ MainMypageNotificationsRoute: typeof MainMypageNotificationsRoute
+ MainMypagePrivacyRoute: typeof MainMypagePrivacyRoute
+ MainMypageProfileCardRoute: typeof MainMypageProfileCardRoute
+ MainMypageTermsRoute: typeof MainMypageTermsRoute
+ MainMypageWithdrawRoute: typeof MainMypageWithdrawRoute
+}
+
+const MainMypageRouteRouteChildren: MainMypageRouteRouteChildren = {
+ MainMypageEditRoute: MainMypageEditRoute,
+ MainMypageInquiryRoute: MainMypageInquiryRoute,
+ MainMypageLikesRoute: MainMypageLikesRoute,
+ MainMypageNotificationsRoute: MainMypageNotificationsRoute,
+ MainMypagePrivacyRoute: MainMypagePrivacyRoute,
+ MainMypageProfileCardRoute: MainMypageProfileCardRoute,
+ MainMypageTermsRoute: MainMypageTermsRoute,
+ MainMypageWithdrawRoute: MainMypageWithdrawRoute,
+}
+
+const MainMypageRouteRouteWithChildren = MainMypageRouteRoute._addFileChildren(
+ MainMypageRouteRouteChildren,
+)
+
+interface MainRouteChildren {
+ MainChatRouteRoute: typeof MainChatRouteRoute
+ MainMatchingRouteRoute: typeof MainMatchingRouteRouteWithChildren
+ MainMypageRouteRoute: typeof MainMypageRouteRouteWithChildren
+ MainBusinessCalendarRouteRoute: typeof MainBusinessCalendarRouteRoute
+ MainBusinessCampaignRouteRoute: typeof MainBusinessCampaignRouteRoute
+ MainBusinessProposalRouteRoute: typeof MainBusinessProposalRouteRoute
+ MainBusinessRejectionRouteRoute: typeof MainBusinessRejectionRouteRoute
+ MainHomePreRoute: typeof MainHomePreRoute
+ MainHomeIndexRoute: typeof MainHomeIndexRoute
+}
+
+const MainRouteChildren: MainRouteChildren = {
+ MainChatRouteRoute: MainChatRouteRoute,
+ MainMatchingRouteRoute: MainMatchingRouteRouteWithChildren,
+ MainMypageRouteRoute: MainMypageRouteRouteWithChildren,
+ MainBusinessCalendarRouteRoute: MainBusinessCalendarRouteRoute,
+ MainBusinessCampaignRouteRoute: MainBusinessCampaignRouteRoute,
+ MainBusinessProposalRouteRoute: MainBusinessProposalRouteRoute,
+ MainBusinessRejectionRouteRoute: MainBusinessRejectionRouteRoute,
+ MainHomePreRoute: MainHomePreRoute,
+ MainHomeIndexRoute: MainHomeIndexRoute,
+}
+
+const MainRouteWithChildren = MainRoute._addFileChildren(MainRouteChildren)
+
+const rootRouteChildren: RootRouteChildren = {
+ RoomsRouteRoute: RoomsRouteRouteWithChildren,
+ MainRoute: MainRouteWithChildren,
+ AuthLoginRouteRoute: AuthLoginRouteRoute,
+ AuthSignupInfoRouteRoute: AuthSignupInfoRouteRoute,
+ AuthSignupInfoMoreRouteRoute: AuthSignupInfoMoreRouteRoute,
+ AuthSignupPurposeRouteRoute: AuthSignupPurposeRouteRoute,
+ AuthSignupSuccessRouteRoute: AuthSignupSuccessRouteRoute,
+ AuthSignupTermsRouteRoute: AuthSignupTermsRouteRoute,
+ AuthSignupTypeRouteRoute: AuthSignupTypeRouteRoute,
+}
+export const routeTree = rootRouteImport
+ ._addFileChildren(rootRouteChildren)
+ ._addFileTypes()
diff --git a/src/routes/_auth/signup/purpose/route.tsx b/src/routes/_auth/signup/purpose/route.tsx
index 6ff5169..f9e0da8 100644
--- a/src/routes/_auth/signup/purpose/route.tsx
+++ b/src/routes/_auth/signup/purpose/route.tsx
@@ -3,6 +3,7 @@ import SignUpPurposeContent from "./signup-purpose-content";
type SignUpPurposeSearch = {
provider?: "kakao" | "naver" | "google";
+ type?: "email" | "social";
};
export const Route = createFileRoute("/_auth/signup/purpose")({
@@ -10,6 +11,7 @@ export const Route = createFileRoute("/_auth/signup/purpose")({
validateSearch: (search: Record): SignUpPurposeSearch => {
return {
provider: search.provider as "kakao" | "naver" | "google" | undefined,
+ type: search.type as "email" | "social" | undefined,
};
},
});
diff --git a/src/routes/_main/matching/test/step3/route.tsx b/src/routes/_main/matching/test/step3/route.tsx
index f4d5068..953f679 100644
--- a/src/routes/_main/matching/test/step3/route.tsx
+++ b/src/routes/_main/matching/test/step3/route.tsx
@@ -62,6 +62,7 @@ function MatchingTestStep3Page() {
onToggleChip={onToggleChip}
canGoNext={canGoNext}
onBack={() => navigate({ to: "/matching/test/step2" })}
+ onNext={() => navigate({ to: "/matching/test/result" })}
/>
);
}
From 92d52a89c8682f3fdf6b1c512e02c2c19960a919 Mon Sep 17 00:00:00 2001
From: seyun31 <2ne1jenna@naver.com>
Date: Fri, 30 Jan 2026 00:19:48 +0900
Subject: [PATCH 6/7] =?UTF-8?q?fix:=20=EC=9D=98=EC=A1=B4=EC=84=B1=20?=
=?UTF-8?q?=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 2 +-
pnpm-lock.yaml | 17 ++++++-----------
2 files changed, 7 insertions(+), 12 deletions(-)
diff --git a/package.json b/package.json
index d03229a..197d9cf 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"react-hook-form": "^7.71.0",
"react-mobile-picker": "^1.2.0",
"tailwind-merge": "^3.4.0",
- "zod": "4.3.6",
+ "zod": "^3.23.8",
"zustand": "^5.0.9"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b522caa..9ba8a5c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -42,8 +42,8 @@ importers:
specifier: ^3.4.0
version: 3.4.0
zod:
- specifier: 4.3.6
- version: 4.3.6
+ specifier: ^3.23.8
+ version: 3.25.76
zustand:
specifier: ^5.0.9
version: 5.0.10(@types/react@19.2.10)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4))
@@ -3118,9 +3118,6 @@ packages:
zod@3.25.76:
resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==}
- zod@4.3.6:
- resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==}
-
zustand@5.0.10:
resolution: {integrity: sha512-U1AiltS1O9hSy3rul+Ub82ut2fqIAefiSuwECWt6jlMVUGejvf+5omLcRBSzqbRagSM3hQZbtzdeRc6QVScXTg==}
engines: {node: '>=12.20.0'}
@@ -4932,8 +4929,8 @@ snapshots:
'@babel/parser': 7.28.6
eslint: 9.39.2(jiti@2.6.1)
hermes-parser: 0.25.1
- zod: 4.3.6
- zod-validation-error: 4.0.2(zod@4.3.6)
+ zod: 3.25.76
+ zod-validation-error: 4.0.2(zod@3.25.76)
transitivePeerDependencies:
- supports-color
@@ -6409,14 +6406,12 @@ snapshots:
yocto-queue@0.1.0: {}
- zod-validation-error@4.0.2(zod@4.3.6):
+ zod-validation-error@4.0.2(zod@3.25.76):
dependencies:
- zod: 4.3.6
+ zod: 3.25.76
zod@3.25.76: {}
- zod@4.3.6: {}
-
zustand@5.0.10(@types/react@19.2.10)(react@19.2.4)(use-sync-external-store@1.6.0(react@19.2.4)):
optionalDependencies:
'@types/react': 19.2.10
From 8fca25037540b417f0d138f0850384855fe3efd9 Mon Sep 17 00:00:00 2001
From: seyun31 <2ne1jenna@naver.com>
Date: Fri, 30 Jan 2026 00:23:42 +0900
Subject: [PATCH 7/7] =?UTF-8?q?fix:=20=EB=A6=B0=ED=8A=B8=20=EC=98=A4?=
=?UTF-8?q?=EB=A5=98=20=ED=95=B4=EA=B2=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/routes/_auth/login/login-content.tsx | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/routes/_auth/login/login-content.tsx b/src/routes/_auth/login/login-content.tsx
index d947df7..f3e5024 100644
--- a/src/routes/_auth/login/login-content.tsx
+++ b/src/routes/_auth/login/login-content.tsx
@@ -1,22 +1,20 @@
-import { useState, useEffect } from "react";
+import { useState } from "react";
import { useNavigate } from "@tanstack/react-router";
import LoginLogo from "../../../assets/logo/login-logo.svg";
import { SocialLoginSection } from "./components/SocialLoginSection";
function LoginContent() {
const navigate = useNavigate();
- const [lastProvider, setLastProvider] = useState<"kakao" | "naver" | "google" | null>(null);
-
- useEffect(() => {
- const saved = localStorage.getItem("lastLoginProvider") as "kakao" | "naver" | "google" | null;
- if (saved) {
- setLastProvider(saved);
+ const [lastProvider] = useState<"kakao" | "naver" | "google" | null>(() => {
+ if (typeof window !== "undefined") {
+ return localStorage.getItem("lastLoginProvider") as "kakao" | "naver" | "google" | null;
}
- }, []);
+ return null;
+ });
const openSocialSignUp = (provider: "kakao" | "naver" | "google") => {
localStorage.setItem("lastLoginProvider", provider);
- // 소셜 로그인/회원가입 시 provider 정보 전달 (Type 페이지 생략하고 Terms로 바로 이동)
+ // 소셜 로그인/회원가입 시 provider 정보 전달
navigate({ to: "/signup/terms", search: { provider } });
};