diff --git a/.gitignore b/.gitignore index 802c2f4a..bb61046b 100644 --- a/.gitignore +++ b/.gitignore @@ -25,8 +25,9 @@ npm-debug.log* yarn-debug.log* yarn-error.log* -# local env files +# env files .env*.local +.env*.production # vercel .vercel diff --git a/app/(sub-page)/components/navigation-bar.tsx b/app/(sub-page)/components/navigation-bar.tsx index 34efdf10..fbe40e6d 100644 --- a/app/(sub-page)/components/navigation-bar.tsx +++ b/app/(sub-page)/components/navigation-bar.tsx @@ -6,6 +6,7 @@ import UserInfoNavigator from '@/app/ui/user/user-info-navigator/user-info-navig import SignButtonGroup from '@/app/ui/user/user-info-navigator/sign-button-group'; import Link from 'next/link'; import NavigationItems from './navigation-items'; +import UserDeleteModal from '@/app/ui/user/user-info-navigator/user-delete-modal'; export default function NavigationBar() { return ( @@ -19,6 +20,7 @@ export default function NavigationBar() { + ); } diff --git a/app/(sub-page)/find-id/page.tsx b/app/(sub-page)/find-id/page.tsx index 7228a57e..7043869d 100644 --- a/app/(sub-page)/find-id/page.tsx +++ b/app/(sub-page)/find-id/page.tsx @@ -3,6 +3,12 @@ import TitleBox from '@/app/ui/view/molecule/title-box/title-box'; import FindIdContainer from './components/find-id-container'; import { Suspense } from 'react'; import FindIdFormSkeleton from '@/app/ui/user/find-id-form/find-id-form.skeleton'; +import type { Metadata } from 'next'; + +export const metadata: Metadata = { + title: '아이디 찾기', + description: '학번을 통해 졸업을 부탁해의 아이디를 찾을 수 있어요.', +}; export default function FindIdPage() { return ( diff --git a/app/(sub-page)/find-password/page.tsx b/app/(sub-page)/find-password/page.tsx index d6f8e242..7242cd99 100644 --- a/app/(sub-page)/find-password/page.tsx +++ b/app/(sub-page)/find-password/page.tsx @@ -3,6 +3,12 @@ import TitleBox from '@/app/ui/view/molecule/title-box/title-box'; import FindPasswordContainer from './components/find-password-container'; import { Suspense } from 'react'; import FindIdFormSkeleton from '../../ui/user/find-id-form/find-id-form.skeleton'; +import type { Metadata } from 'next'; + +export const metadata: Metadata = { + title: '비밀번호 재설정', + description: '회원정보를 통해 졸업을 부탁해의 비밀번호를 재설정해요.', +}; function FindPasswordPage() { return ( diff --git a/app/(sub-page)/my/page.tsx b/app/(sub-page)/my/page.tsx index c545500f..61302c54 100644 --- a/app/(sub-page)/my/page.tsx +++ b/app/(sub-page)/my/page.tsx @@ -10,6 +10,7 @@ import SignButtonGroup from '@/app/ui/user/user-info-navigator/sign-button-group import ContentContainer from '@/app/ui/view/atom/content-container/content-container'; import TakenLectureSkeleton from '@/app/ui/lecture/taken-lecture/taken-lecture.skeleton'; import type { Metadata } from 'next'; +import UserDeleteModal from '@/app/ui/user/user-info-navigator/user-delete-modal'; export const metadata: Metadata = { title: '마이페이지', @@ -50,6 +51,7 @@ export default function MyPage() { + ); } diff --git a/app/layout.tsx b/app/layout.tsx index 64459477..e412ef9a 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -1,10 +1,11 @@ import type { Metadata } from 'next'; -import './globals.css'; import { Toaster } from './ui/view/molecule/toast/toaster'; -import { CypressProvider } from './utils/provider/cypress-provider'; -import { ReactQueryProvider } from './utils/provider/react-query-provider'; +import { CypressProvider } from './utils/global/cypress-provider'; +import { ReactQueryProvider } from './utils/global/react-query-provider'; +import ChannelTalk from './utils/global/channel-talk'; import MSWComponent from './mocks/msw-component.mock'; -import UserDeleteModal from './ui/user/user-info-navigator/user-delete-modal'; +import { GoogleAnalytics } from '@next/third-parties/google'; +import './globals.css'; export const metadata: Metadata = { metadataBase: new URL('https://mju-graduate.com'), @@ -43,6 +44,7 @@ export default function RootLayout({ +
@@ -51,8 +53,8 @@ export default function RootLayout({
- + ); } diff --git a/app/ui/lecture/lecture-search/lecture-search.stories.tsx b/app/ui/lecture/lecture-search/lecture-search.stories.tsx index f2a883a3..20d93143 100644 --- a/app/ui/lecture/lecture-search/lecture-search.stories.tsx +++ b/app/ui/lecture/lecture-search/lecture-search.stories.tsx @@ -9,7 +9,7 @@ import LectureSearch from '.'; import { DIALOG_KEY } from '@/app/utils/key/dialog-key.util'; import Drawer from '../../view/molecule/drawer/drawer'; import { delay } from 'msw'; -import { ReactQueryProvider } from '@/app/utils/provider/react-query-provider'; +import { ReactQueryProvider } from '@/app/utils/global/react-query-provider'; const meta = { title: 'ui/lecture/lecture-search', diff --git a/app/ui/result/result-category-detail-content/result-category-detail-content.tsx b/app/ui/result/result-category-detail-content/result-category-detail-content.tsx index 032afcd2..8a964a8c 100644 --- a/app/ui/result/result-category-detail-content/result-category-detail-content.tsx +++ b/app/ui/result/result-category-detail-content/result-category-detail-content.tsx @@ -5,7 +5,7 @@ import { useState } from 'react'; import { ResultCategoryDetailLectureToggle } from '../result-category-detail-lecture/result-category-detail-lecture-toggle'; import ResultCagegoryDetailLecture from '../result-category-detail-lecture/result-cagegory-detail-lecture'; import { ResultCategoryDetailResponse } from '@/app/store/querys/result'; -import { RESULT_CATEGORY, RESULT_CATEGORY_KO, ResultCategoryKey } from '@/app/utils/key/result-category.key'; +import { RESULT_CATEGORY_KO, ResultCategoryKey } from '@/app/utils/key/result-category.key'; interface ResultCategoryDetailContentProps extends ResultCategoryDetailResponse { category: ResultCategoryKey; @@ -19,8 +19,6 @@ function ResultCategoryDetailContent({ }: ResultCategoryDetailContentProps) { const [isTakenLecture, setIsTakenLectrue] = useState(false); - const includeChaple = (category: ResultCategoryKey) => category === RESULT_CATEGORY.COMMON_CULTURE; - return (
@@ -39,15 +37,11 @@ function ResultCategoryDetailContent({
과목이 표시됩니다.
-
- * 채플이 포함된 학점으로, 채플과목의 이수율은 채플 카테고리에서 확인 가능합니다. -
{takenCredit} / {totalCredit}
- {detailCategory.map((categoryInfo, index) => ( ))} diff --git a/app/ui/result/result-category-detail-lecture/result-cagegory-detail-lecture.tsx b/app/ui/result/result-category-detail-lecture/result-cagegory-detail-lecture.tsx index a203106d..df81ec43 100644 --- a/app/ui/result/result-category-detail-lecture/result-cagegory-detail-lecture.tsx +++ b/app/ui/result/result-category-detail-lecture/result-cagegory-detail-lecture.tsx @@ -29,7 +29,6 @@ function ResultCagegoryDetailLecture({ detailCategory, isTakenLecture }: ResultC const { categoryName, totalCredit, takenCredit, takenLectures, haveToLectures, completed } = detailCategory; const showCompleted = !isTakenLecture && completed; - return (
= CHAPEL_TOTAL_COUNT, + totalCredit: CHAPEL_TOTAL_CREDIT, + takenCredit: chapel.takenCredit, + haveToLectures: Array(haveToChapelCount).fill(CHAPEL_LECTURE_INFO), + takenLectures: Array(takenChapelCount).fill(CHAPEL_LECTURE_INFO), + }, + ]; +} + +export default function ResultCategoryDetailInfo({ category }: { category: ResultCategoryKey }) { + const { data: categoryInfo } = useFetchResultCategoryDetailInfo(category); + const { data: categories } = useFetchCredits(); + + const chapel = categories.find(({ category }) => category === 'CHAPEL'); + const isCommonCulture = category === RESULT_CATEGORY.COMMON_CULTURE; + const detailCategory = isCommonCulture + ? addChapelToCommonCulture(categoryInfo.detailCategory, chapel) + : categoryInfo.detailCategory; + + return ( + + ); +} diff --git a/app/ui/result/result-category-detail/result-category-detail.tsx b/app/ui/result/result-category-detail/result-category-detail.tsx index cf2f744c..25a83243 100644 --- a/app/ui/result/result-category-detail/result-category-detail.tsx +++ b/app/ui/result/result-category-detail/result-category-detail.tsx @@ -1,10 +1,10 @@ 'use client'; -import ResultCategoryDetailContent from '@/app/ui/result/result-category-detail-content/result-category-detail-content'; -import { useFetchResultCategoryDetailInfo } from '@/app/store/querys/result'; + import ResultCategoryDetailContentSkeleton from '@/app/ui/result/result-category-detail-content/result-category-detail-content.skeleton'; import ResultCategoryDetailDialog from './result-category-detail-dialog'; import { Suspense } from 'react'; import { ResultCategoryKey } from '@/app/utils/key/result-category.key'; +import ResultCategoryDetailInfo from './result-category-detail-info'; export default function ResultCategoryDetail({ category }: { category: ResultCategoryKey }) { if (!category) return; @@ -17,15 +17,3 @@ export default function ResultCategoryDetail({ category }: { category: ResultCat ); } - -function ResultCategoryDetailInfo({ category }: { category: ResultCategoryKey }) { - const { data } = useFetchResultCategoryDetailInfo(category); - return ( - - ); -} diff --git a/app/utils/global/channel-talk.tsx b/app/utils/global/channel-talk.tsx new file mode 100644 index 00000000..7e8d334c --- /dev/null +++ b/app/utils/global/channel-talk.tsx @@ -0,0 +1,16 @@ +'use client'; +import * as ChannelService from '@channel.io/channel-web-sdk-loader'; + +let channelTalkDidInit = false; + +export default function ChannelTalk() { + if (typeof window !== 'undefined' && !channelTalkDidInit) { + channelTalkDidInit = true; + ChannelService.loadScript(); + ChannelService.boot({ + pluginKey: process.env.NEXT_PUBLIC_CHANNELTALK_PLUGIN ?? '', + }); + } + + return null; +} diff --git a/app/utils/provider/cypress-provider.tsx b/app/utils/global/cypress-provider.tsx similarity index 100% rename from app/utils/provider/cypress-provider.tsx rename to app/utils/global/cypress-provider.tsx diff --git a/app/utils/provider/react-query-provider.tsx b/app/utils/global/react-query-provider.tsx similarity index 100% rename from app/utils/provider/react-query-provider.tsx rename to app/utils/global/react-query-provider.tsx diff --git a/package-lock.json b/package-lock.json index 508228b4..19b41421 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,10 +8,12 @@ "name": "myongji-graduate-next", "version": "0.1.0", "dependencies": { + "@channel.io/channel-web-sdk-loader": "^2.0.0", "@headlessui/react": "^1.7.18", "@headlessui/tailwindcss": "^0.2.0", "@heroicons/react": "^2.1.1", "@mswjs/http-middleware": "^0.9.2", + "@next/third-parties": "^14.2.13", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-dialog": "^1.0.5", @@ -28,7 +30,7 @@ "fetch-ax": "^1.0.10", "jotai": "^2.7.0", "lucide-react": "^0.336.0", - "next": "14.1.0", + "next": "^14.2.13", "react": "^18", "react-dom": "^18", "tailwind-merge": "^2.2.1", @@ -2433,6 +2435,11 @@ "statuses": "^2.0.1" } }, + "node_modules/@channel.io/channel-web-sdk-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@channel.io/channel-web-sdk-loader/-/channel-web-sdk-loader-2.0.0.tgz", + "integrity": "sha512-Z8DDpf2lAaYr/3aAnwQtxg0L8MYWgi/hhGV8c5/SLCV6Fx5Gssj7mfyHHrCVC315B0icmLYqZsXBlmbf6cN8Jg==" + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -3689,9 +3696,9 @@ } }, "node_modules/@next/env": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.1.0.tgz", - "integrity": "sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==" + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.13.tgz", + "integrity": "sha512-s3lh6K8cbW1h5Nga7NNeXrbe0+2jIIYK9YaA9T7IufDWnZpozdFUp6Hf0d5rNWUKu4fEuSX2rCKlGjCrtylfDw==" }, "node_modules/@next/eslint-plugin-next": { "version": "14.1.0", @@ -3703,9 +3710,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz", - "integrity": "sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.13.tgz", + "integrity": "sha512-IkAmQEa2Htq+wHACBxOsslt+jMoV3msvxCn0WFSfJSkv/scy+i/EukBKNad36grRxywaXUYJc9mxEGkeIs8Bzg==", "cpu": [ "arm64" ], @@ -3718,9 +3725,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz", - "integrity": "sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.13.tgz", + "integrity": "sha512-Dv1RBGs2TTjkwEnFMVL5XIfJEavnLqqwYSD6LXgTPdEy/u6FlSrLBSSfe1pcfqhFEXRAgVL3Wpjibe5wXJzWog==", "cpu": [ "x64" ], @@ -3733,9 +3740,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz", - "integrity": "sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.13.tgz", + "integrity": "sha512-yB1tYEFFqo4ZNWkwrJultbsw7NPAAxlPXURXioRl9SdW6aIefOLS+0TEsKrWBtbJ9moTDgU3HRILL6QBQnMevg==", "cpu": [ "arm64" ], @@ -3748,9 +3755,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz", - "integrity": "sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.13.tgz", + "integrity": "sha512-v5jZ/FV/eHGoWhMKYrsAweQ7CWb8xsWGM/8m1mwwZQ/sutJjoFaXchwK4pX8NqwImILEvQmZWyb8pPTcP7htWg==", "cpu": [ "arm64" ], @@ -3763,9 +3770,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz", - "integrity": "sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.13.tgz", + "integrity": "sha512-aVc7m4YL7ViiRv7SOXK3RplXzOEe/qQzRA5R2vpXboHABs3w8vtFslGTz+5tKiQzWUmTmBNVW0UQdhkKRORmGA==", "cpu": [ "x64" ], @@ -3778,9 +3785,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz", - "integrity": "sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.13.tgz", + "integrity": "sha512-4wWY7/OsSaJOOKvMsu1Teylku7vKyTuocvDLTZQq0TYv9OjiYYWt63PiE1nTuZnqQ4RPvME7Xai+9enoiN0Wrg==", "cpu": [ "x64" ], @@ -3793,9 +3800,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz", - "integrity": "sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.13.tgz", + "integrity": "sha512-uP1XkqCqV2NVH9+g2sC7qIw+w2tRbcMiXFEbMihkQ8B1+V6m28sshBwAB0SDmOe0u44ne1vFU66+gx/28RsBVQ==", "cpu": [ "arm64" ], @@ -3808,9 +3815,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz", - "integrity": "sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.13.tgz", + "integrity": "sha512-V26ezyjPqQpDBV4lcWIh8B/QICQ4v+M5Bo9ykLN+sqeKKBxJVDpEc6biDVyluTXTC40f5IqCU0ttth7Es2ZuMw==", "cpu": [ "ia32" ], @@ -3823,9 +3830,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz", - "integrity": "sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.13.tgz", + "integrity": "sha512-WwzOEAFBGhlDHE5Z73mNU8CO8mqMNLqaG+AO9ETmzdCQlJhVtWZnOl2+rqgVQS+YHunjOWptdFmNfbpwcUuEsw==", "cpu": [ "x64" ], @@ -3837,6 +3844,18 @@ "node": ">= 10" } }, + "node_modules/@next/third-parties": { + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.13.tgz", + "integrity": "sha512-OSqD2E9JO0/GE8HT5QAUsYVXwjWtPLScAX70kO2xopwDAdRzakrsQS55Cihd862X/4bUB37ApVZ9DlHcExzeOg==", + "dependencies": { + "third-party-capital": "1.0.20" + }, + "peerDependencies": { + "next": "^13.0.0 || ^14.0.0", + "react": "^18.2.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -6483,14 +6502,14 @@ "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" }, "node_modules/@swc/helpers": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", - "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", + "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", "dependencies": { + "@swc/counter": "^0.1.3", "tslib": "^2.4.0" } }, @@ -17424,12 +17443,12 @@ "dev": true }, "node_modules/next": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/next/-/next-14.1.0.tgz", - "integrity": "sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==", + "version": "14.2.13", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.13.tgz", + "integrity": "sha512-BseY9YNw8QJSwLYD7hlZzl6QVDoSFHL/URN5K64kVEVpCsSOWeyjbIGK+dZUaRViHTaMQX8aqmnn0PHBbGZezg==", "dependencies": { - "@next/env": "14.1.0", - "@swc/helpers": "0.5.2", + "@next/env": "14.2.13", + "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "graceful-fs": "^4.2.11", @@ -17443,18 +17462,19 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.1.0", - "@next/swc-darwin-x64": "14.1.0", - "@next/swc-linux-arm64-gnu": "14.1.0", - "@next/swc-linux-arm64-musl": "14.1.0", - "@next/swc-linux-x64-gnu": "14.1.0", - "@next/swc-linux-x64-musl": "14.1.0", - "@next/swc-win32-arm64-msvc": "14.1.0", - "@next/swc-win32-ia32-msvc": "14.1.0", - "@next/swc-win32-x64-msvc": "14.1.0" + "@next/swc-darwin-arm64": "14.2.13", + "@next/swc-darwin-x64": "14.2.13", + "@next/swc-linux-arm64-gnu": "14.2.13", + "@next/swc-linux-arm64-musl": "14.2.13", + "@next/swc-linux-x64-gnu": "14.2.13", + "@next/swc-linux-x64-musl": "14.2.13", + "@next/swc-win32-arm64-msvc": "14.2.13", + "@next/swc-win32-ia32-msvc": "14.2.13", + "@next/swc-win32-x64-msvc": "14.2.13" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", "react": "^18.2.0", "react-dom": "^18.2.0", "sass": "^1.3.0" @@ -17463,6 +17483,9 @@ "@opentelemetry/api": { "optional": true }, + "@playwright/test": { + "optional": true + }, "sass": { "optional": true } @@ -21913,6 +21936,11 @@ "node": ">=0.8" } }, + "node_modules/third-party-capital": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/third-party-capital/-/third-party-capital-1.0.20.tgz", + "integrity": "sha512-oB7yIimd8SuGptespDAZnNkzIz+NWaJCu2RMsbs4Wmp9zSDUM8Nhi3s2OOcqYuv3mN4hitXc8DVx+LyUmbUDiA==" + }, "node_modules/throttleit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", diff --git a/package.json b/package.json index 66ab23e6..72473618 100644 --- a/package.json +++ b/package.json @@ -23,10 +23,12 @@ "cypress:open": "cypress open" }, "dependencies": { + "@channel.io/channel-web-sdk-loader": "^2.0.0", "@headlessui/react": "^1.7.18", "@headlessui/tailwindcss": "^0.2.0", "@heroicons/react": "^2.1.1", "@mswjs/http-middleware": "^0.9.2", + "@next/third-parties": "^14.2.13", "@radix-ui/react-alert-dialog": "^1.0.5", "@radix-ui/react-avatar": "^1.0.4", "@radix-ui/react-dialog": "^1.0.5", @@ -43,7 +45,7 @@ "fetch-ax": "^1.0.10", "jotai": "^2.7.0", "lucide-react": "^0.336.0", - "next": "14.1.0", + "next": "^14.2.13", "react": "^18", "react-dom": "^18", "tailwind-merge": "^2.2.1",