From ebb04525c33dae96f179bfd6c8be2dfed16d376a Mon Sep 17 00:00:00 2001 From: yyypearl Date: Sat, 11 Jan 2025 21:44:18 +0900 Subject: [PATCH 1/8] =?UTF-8?q?=F0=9F=93=9D=20docs(#127):=20=EB=8D=94?= =?UTF-8?q?=EB=AF=B8=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/letter.ts | 253 ---------------------------------------- src/constants/orbit.ts | 105 ----------------- src/constants/planet.ts | 52 --------- 3 files changed, 410 deletions(-) delete mode 100644 src/constants/letter.ts delete mode 100644 src/constants/orbit.ts delete mode 100644 src/constants/planet.ts diff --git a/src/constants/letter.ts b/src/constants/letter.ts deleted file mode 100644 index 40172725..00000000 --- a/src/constants/letter.ts +++ /dev/null @@ -1,253 +0,0 @@ -import { LetterDetailType, LetterType } from "@/types/letter"; - -export const LETTER_DATA: LetterType[] = [ - { - id: 0, - url: "aa", - templateType: 3, - sender: "승효", - receiver: "유진주", - date: "2024-09-04", - content: - "전체 스크립트와 관련 있는 렉시컬 환경은 글로벌 렉시컬 환경이다. (Global Lexical Environment)이다. 전역 코드가 시작되면, 렉시컬 환경 객체가 만들어지고, 앞서 선언된 변수와 함수를 해당 레코드에 저장한다.전체 스크립트와 관련 있는 렉시컬 환경은 글로벌 렉시컬 환경이다. (Global Lexical Environment)이다. 전역 코드가 시작되면, 렉시컬 환경 객체가 만들어지고, 앞서 선언된 변수와 함수를 해당 레코드에 저장한다.전체 스크립트와 관련 있는 렉시컬 환경은 글로벌 렉시컬 환경이다. (Global Lexical Environment)이다. 전역 코드가 시작되면, 렉시컬 환경 객체가 만들어지고, 앞서 선언된 변수와 함수를 해당 레코드에 저장한다.", - images: [], - }, - { - id: 1, - url: "qq", - templateType: 2, - sender: "유진주", - receiver: "승효", - date: "2024-09-01", - content: "", - images: [], - }, - { - id: 3, - url: "circle", - templateType: 4, - sender: "김동우", - receiver: "오민지", - date: "2024-08-24", - content: - "민지 누나 언제나 기획 열정적으로 열심히 해줘서 너무 고마워! 특히 언제나 성실한누나의 모습을 본 받고 싶어. 누나는 꼭멋진 서비스 기획자가 될 거야. 응원할게! ", - images: [], - }, - { - id: 4, - url: "tocircle", - templateType: 6, - sender: "유진주", - receiver: "김동우", - date: "2024-08-21", - content: "", - images: [], - }, -]; - -export const LETTER_DETAIL_DATA: LetterDetailType[] = [ - { - id: 1, - url: "https://example.com/letter1", - templateType: 1, - sender: "철수", - receiver: "영희", - content: "안녕, 영희야! 잘 지내고 있지?", - images: [ - "https://via.assets.so/album.png?id=6&q=95&w=360&h=360&fit=fill", - "https://via.assets.so/album.png?id=2&q=95&w=360&h=360&fit=fill", - "https://via.assets.so/album.png?id=3&q=95&w=360&h=360&fit=fill", - ], - date: "2024-09-01", - space_name: "학교 친구들✨", - letter_count: 1, - next_letter: { - letter_id: "2", - sender_name: "영희", - }, - }, - { - id: 2, - url: "https://example.com/letter/1", - templateType: 1, - sender: "백승효", - receiver: "유진주", - content: "안녕 진주야~ 레터링 잘 끝내보자!! 화이팅!!", - images: [ - "https://via.assets.so/album.png?id=6&q=95&w=360&h=360&fit=fill", - "https://via.assets.so/album.png?id=2&q=95&w=360&h=360&fit=fill", - "https://via.assets.so/album.png?id=3&q=95&w=360&h=360&fit=fill", - ], - date: "2024-09-01", - space_name: "이것 저것", - letter_count: 1, - prev_letter: { - letter_id: "1", - sender_name: "유진주", - }, - next_letter: { - letter_id: "3", - sender_name: "김동우", - }, - }, - { - id: 3, - url: "https://example.com/letter/2", - templateType: 2, - sender: "백승효", - receiver: "유진주", - content: "안녕 진주야~ 레터링 잘 끝내보자!! 화이팅!!", - images: [ - "https://via.assets.so/album.png?id=6&q=95&w=360&h=360&fit=fill", - "https://via.assets.so/album.png?id=2&q=95&w=360&h=360&fit=fill", - "https://via.assets.so/album.png?id=3&q=95&w=360&h=360&fit=fill", - ], - date: "2024-09-02", - space_name: "이것 저것", - letter_count: 2, - prev_letter: { - letter_id: "2", - sender_name: "홍길동", - }, - next_letter: { - letter_id: "4", - sender_name: "최영준", - }, - }, - { - id: 4, - url: "https://example.com/letter4", - templateType: 1, - sender: "지은", - receiver: "민수", - content: "민수야, 잘 지내고 있는지 궁금해!", - images: [], - date: "2024-09-04", - space_name: "이것 저것", - letter_count: 4, - prev_letter: { - letter_id: "3", - sender_name: "민수", - }, - next_letter: { - letter_id: "5", - sender_name: "수현", - }, - }, - { - id: 5, - url: "https://example.com/letter5", - templateType: 2, - sender: "수현", - receiver: "지은", - content: "지은아, 오랜만이야!", - images: [], - date: "2024-09-05", - space_name: "이것 저것", - letter_count: 5, - prev_letter: { - letter_id: "4", - sender_name: "지은", - }, - next_letter: { - letter_id: "6", - sender_name: "준호", - }, - }, - { - id: 6, - url: "https://example.com/letter6", - templateType: 3, - sender: "준호", - receiver: "수현", - content: "수현아, 오랜만이야. 어떻게 지내?", - images: [], - date: "2024-09-06", - space_name: "이것 저것", - letter_count: 6, - prev_letter: { - letter_id: "5", - sender_name: "수현", - }, - next_letter: { - letter_id: "7", - sender_name: "유나", - }, - }, - { - id: 7, - url: "https://example.com/letter7", - templateType: 1, - sender: "유나", - receiver: "준호", - content: "준호야, 잘 지내고 있니?", - images: [], - date: "2024-09-07", - space_name: "이것 저것", - letter_count: 7, - prev_letter: { - letter_id: "6", - sender_name: "준호", - }, - next_letter: { - letter_id: "8", - sender_name: "석진", - }, - }, - { - id: 8, - url: "https://example.com/letter8", - templateType: 2, - sender: "석진", - receiver: "유나", - content: "유나야, 오랜만에 연락해!", - images: [], - date: "2024-09-08", - space_name: "이것 저것", - letter_count: 8, - prev_letter: { - letter_id: "7", - sender_name: "유나", - }, - next_letter: { - letter_id: "9", - sender_name: "서현", - }, - }, - { - id: 9, - url: "https://example.com/letter9", - templateType: 3, - sender: "서현", - receiver: "석진", - content: "석진아, 잘 지내고 있지?", - images: [], - date: "2024-09-09", - space_name: "이것 저것", - letter_count: 9, - prev_letter: { - letter_id: "8", - sender_name: "석진", - }, - next_letter: { - letter_id: "10", - sender_name: "하늘", - }, - }, - { - id: 10, - url: "https://example.com/letter10", - templateType: 1, - sender: "하늘", - receiver: "서현", - content: "서현아, 마지막 편지를 보내.", - images: [], - date: "2024-09-10", - space_name: "이것 저것", - letter_count: 10, - prev_letter: { - letter_id: "9", - sender_name: "서현", - }, - }, -]; diff --git a/src/constants/orbit.ts b/src/constants/orbit.ts deleted file mode 100644 index 3351ef1a..00000000 --- a/src/constants/orbit.ts +++ /dev/null @@ -1,105 +0,0 @@ -export interface Orbit { - letterId: string; - senderName: string; - receivedDate?: string; - isNew?: boolean; - date?: string; -} - -export const ORBIT_MESSAGE = [ - { - letterId: "0", - senderName: "예현", - isNew: false, - date: "2024.07.17", - }, - { - letterId: "1", - senderName: "동우", - isNew: false, - date: "2024.07.17", - }, - { - letterId: "2", - senderName: "민지", - isNew: true, - date: "2024.07.17", - }, - { - letterId: "3", - senderName: "규리", - isNew: true, - date: "2024.07.17", - }, - { - letterId: "4", - senderName: "승효", - isNew: true, - date: "2024.07.17", - }, - { - letterId: "5", - senderName: "진주", - isNew: true, - date: "2024.07.17", - }, - { - letterId: "6", - senderName: "규민", - isNew: true, - date: "2024.07.17", - }, -]; - -export const ORBITS = [ - { - letterId: "7", - senderName: "예진", - date: "2024.07.17", - }, - { - letterId: "8", - senderName: "진주", - date: "2024.07.17", - }, - { - letterId: "9", - senderName: "승효", - date: "2024.07.17", - }, - { - letterId: "10", - senderName: "규민", - date: "2024.07.17", - }, - { - letterId: "11", - senderName: "예현", - date: "2024.07.17", - }, - { - letterId: "12", - senderName: "이름5", - date: "2024.07.17", - }, - { - letterId: "13", - senderName: "이름6", - date: "2024.07.17", - }, - { - letterId: "14", - senderName: "이름7", - date: "2024.07.17", - }, - { - letterId: "15", - senderName: "이름8", - date: "2024.07.17", - }, - { - letterId: "16", - senderName: "이름9", - date: "2024.07.17", - }, -]; diff --git a/src/constants/planet.ts b/src/constants/planet.ts deleted file mode 100644 index 8e15db2e..00000000 --- a/src/constants/planet.ts +++ /dev/null @@ -1,52 +0,0 @@ -export interface Planet { - spaceId: string; - spaceName: string; - letterCount: number; - checked: boolean; - current: boolean; -}; - -export const PLANETS = [ - { - spaceId: "0", - spaceName: "ASAP", - letterCount: 5, - checked: true, - current: true, - }, - { - spaceId: "1", - spaceName: "20학번 동기들", - letterCount: 12, - checked: false, - current: false, - }, - { - spaceId: "2", - spaceName: "기디 소모임", - letterCount: 9, - checked: false, - current: false, - }, - { - spaceId: "3", - spaceName: "백프 프렌즈", - letterCount: 7, - checked: false, - current: false, - }, - { - spaceId: "4", - spaceName: "고딩 동창들", - letterCount: 3, - checked: false, - current: false, - }, - { - spaceId: "5", - spaceName: "학회 모임", - letterCount: 15, - checked: false, - current: false, - }, -] \ No newline at end of file From 93510f9c5856c0208e7ea8abff21a0b4877cc93b Mon Sep 17 00:00:00 2001 From: yyypearl Date: Sat, 11 Jan 2025 21:46:26 +0900 Subject: [PATCH 2/8] =?UTF-8?q?=F0=9F=93=9D=20docs(#127):=20=ED=81=AC?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=EB=A7=88=EC=8A=A4=20=EC=9D=B4=EB=B2=A4?= =?UTF-8?q?=ED=8A=B8=20=ED=8E=B8=EC=A7=80=EC=A7=80=20=EC=9C=84=EC=B9=98=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constants/templates.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/constants/templates.ts b/src/constants/templates.ts index d866bb56..c6a46a59 100644 --- a/src/constants/templates.ts +++ b/src/constants/templates.ts @@ -1,3 +1,3 @@ export const DEFAULT_TEMPLATES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; -export const EVENT_TEMPLATES = [10, 11, 12, 13]; -export const ALL_TEMPLATES = [...EVENT_TEMPLATES, ...DEFAULT_TEMPLATES]; +export const CHRISTMAS_TEMPLATES = [10, 11, 12, 13]; +export const ALL_TEMPLATES = [...DEFAULT_TEMPLATES, ...CHRISTMAS_TEMPLATES]; From b823e450866a8edc56739f8d181d53a00a4c8d75 Mon Sep 17 00:00:00 2001 From: yyypearl Date: Mon, 13 Jan 2025 15:01:27 +0900 Subject: [PATCH 3/8] =?UTF-8?q?=E2=9A=99=20chore(#127):=20Google=20MS=20cl?= =?UTF-8?q?arity=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 596 +++++++++++++++++++++++++++++++++++++++------ package.json | 3 +- src/app/layout.tsx | 3 + 3 files changed, 525 insertions(+), 77 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e25c1ba..200fca22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@next/third-parties": "^15.1.4", "axios": "^1.7.7", "browser-image-compression": "^2.0.2", "cookie": "^1.0.0", @@ -18,7 +19,7 @@ "eslint-config-prettier": "^9.1.0", "framer-motion": "^11.4.0", "js-cookie": "^3.0.5", - "next": "14.2.5", + "next": "^15.1.4", "react": "^18", "react-beautiful-dnd": "^13.1.1", "react-dom": "^18", @@ -272,6 +273,15 @@ "node": ">=6.9.0" } }, + "node_modules/@emnapi/runtime": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", @@ -738,6 +748,348 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead" }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -831,9 +1183,9 @@ } }, "node_modules/@next/env": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.5.tgz", - "integrity": "sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==" + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.4.tgz", + "integrity": "sha512-2fZ5YZjedi5AGaeoaC0B20zGntEHRhi2SdWcu61i48BllODcAmmtj8n7YarSPt4DaTsJaBFdxQAVEVzgmx2Zpw==" }, "node_modules/@next/eslint-plugin-next": { "version": "14.2.5", @@ -845,9 +1197,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.5.tgz", - "integrity": "sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.4.tgz", + "integrity": "sha512-wBEMBs+np+R5ozN1F8Y8d/Dycns2COhRnkxRc+rvnbXke5uZBHkUGFgWxfTXn5rx7OLijuUhyfB+gC/ap58dDw==", "cpu": [ "arm64" ], @@ -860,9 +1212,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.5.tgz", - "integrity": "sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.4.tgz", + "integrity": "sha512-7sgf5rM7Z81V9w48F02Zz6DgEJulavC0jadab4ZsJ+K2sxMNK0/BtF8J8J3CxnsJN3DGcIdC260wEKssKTukUw==", "cpu": [ "x64" ], @@ -875,9 +1227,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.5.tgz", - "integrity": "sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.4.tgz", + "integrity": "sha512-JaZlIMNaJenfd55kjaLWMfok+vWBlcRxqnRoZrhFQrhM1uAehP3R0+Aoe+bZOogqlZvAz53nY/k3ZyuKDtT2zQ==", "cpu": [ "arm64" ], @@ -890,9 +1242,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.5.tgz", - "integrity": "sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.4.tgz", + "integrity": "sha512-7EBBjNoyTO2ipMDgCiORpwwOf5tIueFntKjcN3NK+GAQD7OzFJe84p7a2eQUeWdpzZvhVXuAtIen8QcH71ZCOQ==", "cpu": [ "arm64" ], @@ -905,9 +1257,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.5.tgz", - "integrity": "sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.4.tgz", + "integrity": "sha512-9TGEgOycqZFuADyFqwmK/9g6S0FYZ3tphR4ebcmCwhL8Y12FW8pIBKJvSwV+UBjMkokstGNH+9F8F031JZKpHw==", "cpu": [ "x64" ], @@ -920,9 +1272,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.5.tgz", - "integrity": "sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.4.tgz", + "integrity": "sha512-0578bLRVDJOh+LdIoKvgNDz77+Bd85c5JrFgnlbI1SM3WmEQvsjxTA8ATu9Z9FCiIS/AliVAW2DV/BDwpXbtiQ==", "cpu": [ "x64" ], @@ -935,9 +1287,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.5.tgz", - "integrity": "sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.4.tgz", + "integrity": "sha512-JgFCiV4libQavwII+kncMCl30st0JVxpPOtzWcAI2jtum4HjYaclobKhj+JsRu5tFqMtA5CJIa0MvYyuu9xjjQ==", "cpu": [ "arm64" ], @@ -949,25 +1301,10 @@ "node": ">= 10" } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.5.tgz", - "integrity": "sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.5.tgz", - "integrity": "sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.4.tgz", + "integrity": "sha512-xxsJy9wzq7FR5SqPCUqdgSXiNXrMuidgckBa8nH9HtjjxsilgcN6VgXF6tZ3uEWuVEadotQJI8/9EQ6guTC4Yw==", "cpu": [ "x64" ], @@ -979,6 +1316,18 @@ "node": ">= 10" } }, + "node_modules/@next/third-parties": { + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-15.1.4.tgz", + "integrity": "sha512-x3HQ43zDt7HbtRzbbf+Yz61/KHXKIY3xdchKo0XahAUyc4AcBkHuOYxk7PDNkPTGA/vncyzdn0jy+Gi1ziceiA==", + "dependencies": { + "third-party-capital": "1.0.20" + }, + "peerDependencies": { + "next": "^13.0.0 || ^14.0.0 || ^15.0.0", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1033,12 +1382,11 @@ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" }, "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, "node_modules/@types/hoist-non-react-statics": { @@ -1721,6 +2069,19 @@ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1737,6 +2098,16 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -1984,6 +2355,15 @@ "node": ">=0.4.0" } }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "optional": true, + "engines": { + "node": ">=8" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3071,7 +3451,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", @@ -3905,40 +4286,41 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, "node_modules/next": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.5.tgz", - "integrity": "sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==", + "version": "15.1.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.1.4.tgz", + "integrity": "sha512-mTaq9dwaSuwwOrcu3ebjDYObekkxRnXpuVL21zotM8qE2W0HBOdVIdg2Li9QjMEZrj73LN96LcWcz62V19FjAg==", "dependencies": { - "@next/env": "14.2.5", - "@swc/helpers": "0.5.5", + "@next/env": "15.1.4", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", "postcss": "8.4.31", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.6" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=18.17.0" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.5", - "@next/swc-darwin-x64": "14.2.5", - "@next/swc-linux-arm64-gnu": "14.2.5", - "@next/swc-linux-arm64-musl": "14.2.5", - "@next/swc-linux-x64-gnu": "14.2.5", - "@next/swc-linux-x64-musl": "14.2.5", - "@next/swc-win32-arm64-msvc": "14.2.5", - "@next/swc-win32-ia32-msvc": "14.2.5", - "@next/swc-win32-x64-msvc": "14.2.5" + "@next/swc-darwin-arm64": "15.1.4", + "@next/swc-darwin-x64": "15.1.4", + "@next/swc-linux-arm64-gnu": "15.1.4", + "@next/swc-linux-arm64-musl": "15.1.4", + "@next/swc-linux-x64-gnu": "15.1.4", + "@next/swc-linux-x64-musl": "15.1.4", + "@next/swc-win32-arm64-msvc": "15.1.4", + "@next/swc-win32-x64-msvc": "15.1.4", + "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { @@ -3948,6 +4330,9 @@ "@playwright/test": { "optional": true }, + "babel-plugin-react-compiler": { + "optional": true + }, "sass": { "optional": true } @@ -4691,7 +5076,7 @@ "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "dev": true, + "devOptional": true, "bin": { "semver": "bin/semver.js" }, @@ -4734,6 +5119,45 @@ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -4782,6 +5206,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -5100,9 +5539,9 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", "dependencies": { "client-only": "0.0.1" }, @@ -5110,7 +5549,7 @@ "node": ">= 12.0.0" }, "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" }, "peerDependenciesMeta": { "@babel/core": { @@ -5162,6 +5601,11 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, + "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/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", @@ -5212,9 +5656,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/type-check": { "version": "0.4.0", diff --git a/package.json b/package.json index e6259fdc..bfee432a 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@next/third-parties": "^15.1.4", "axios": "^1.7.7", "browser-image-compression": "^2.0.2", "cookie": "^1.0.0", @@ -18,7 +19,7 @@ "eslint-config-prettier": "^9.1.0", "framer-motion": "^11.4.0", "js-cookie": "^3.0.5", - "next": "14.2.5", + "next": "^15.1.4", "react": "^18", "react-beautiful-dnd": "^13.1.1", "react-dom": "^18", diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d81be4e7..e2241ff5 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,5 @@ import Providers from "./providers"; +import { GoogleAnalytics, GoogleTagManager } from "@next/third-parties/google"; export const metadata = { title: "레터링 | 온라인 편지 아카이빙 플랫폼", @@ -76,6 +77,8 @@ export default function RootLayout({ }} /> {children} + + {/* Google Tag Manager Noscript */} ); diff --git a/src/app/letter/[id]/page.tsx b/src/app/letter/[id]/page.tsx index a6110ee4..e8165f44 100644 --- a/src/app/letter/[id]/page.tsx +++ b/src/app/letter/[id]/page.tsx @@ -97,7 +97,7 @@ const LetterPage = () => { key={key} contentType="all" pageType="space" - id={letterId} + id={letterId || ""} templateType={letterData.templateType} name={letterData.sender} content={letterData.content} diff --git a/src/app/mypage/send/[id]/page.tsx b/src/app/mypage/send/[id]/page.tsx index 482ebfeb..4206033b 100644 --- a/src/app/mypage/send/[id]/page.tsx +++ b/src/app/mypage/send/[id]/page.tsx @@ -1,7 +1,6 @@ "use client"; import { getSentLetterDetail } from "@/api/mypage/user"; -import Button from "@/components/common/Button"; import KakaoShareButton from "@/components/common/KakaoShareButton"; import Loader from "@/components/common/Loader"; import NavigatorBar from "@/components/common/NavigatorBar"; @@ -9,12 +8,11 @@ import Letter from "@/components/letter/Letter"; import { theme } from "@/styles/theme"; import { SentDetailLetterType } from "@/types/letter"; import { getAccessToken } from "@/utils/storage"; -import { useParams, useRouter } from "next/navigation"; +import { useParams } from "next/navigation"; import { Suspense, useEffect, useState } from "react"; import styled from "styled-components"; const SendDetailPage = () => { - const router = useRouter(); const { id } = useParams(); const letterId = Array.isArray(id) ? id[0] : id; const [key, setKey] = useState(1); @@ -61,7 +59,7 @@ const SendDetailPage = () => { { const router = useRouter(); diff --git a/src/app/planet/move/page.tsx b/src/app/planet/move/page.tsx index 714a8b2d..1251cbd9 100644 --- a/src/app/planet/move/page.tsx +++ b/src/app/planet/move/page.tsx @@ -7,7 +7,6 @@ import NavigatorBar from "@/components/common/NavigatorBar"; import Button from "@/components/common/Button"; import { useRouter, useSearchParams } from "next/navigation"; import PlanetBox from "@/components/planet/PlanetBox"; -import { Planet } from "@/constants/planet"; import Loader, { LoaderContainer } from "@/components/common/Loader"; import { putLetterToIndep, @@ -16,6 +15,7 @@ import { import Image from "next/image"; import { getSpaceList } from "@/api/planet/space/space"; import { useToast } from "@/hooks/useToast"; +import { Planet } from "@/types/planet"; const PlanetMovePage = () => { const router = useRouter(); diff --git a/src/app/planet/page.tsx b/src/app/planet/page.tsx index b51d9f50..67f66cce 100644 --- a/src/app/planet/page.tsx +++ b/src/app/planet/page.tsx @@ -4,9 +4,7 @@ import React, { useEffect, useRef, useState } from "react"; import styled from "styled-components"; import Image from "next/image"; import Bottom from "@/components/common/Bottom"; -import Planet from "@/components/common/Planet"; import Tag from "@/components/common/Tag"; -import { Orbit } from "@/constants/orbit"; import { theme } from "@/styles/theme"; import Pagination from "@/components/common/Pagination"; import { useRouter } from "next/navigation"; @@ -40,6 +38,7 @@ import { useToast } from "@/hooks/useToast"; import Tooltip from "@/components/common/Tooltip"; import { userState } from "@/recoil/userStore"; import { spaceState } from "@/recoil/spaceStore"; +import { Orbit } from "@/types/orbit"; const PlanetPage = () => { const router = useRouter(); diff --git a/src/app/send/complete/page.tsx b/src/app/send/complete/page.tsx index 9674f938..99c8a03b 100644 --- a/src/app/send/complete/page.tsx +++ b/src/app/send/complete/page.tsx @@ -1,7 +1,6 @@ "use client"; import Button from "@/components/common/Button"; -import KakaoShareButton from "@/components/common/KakaoShareButton"; import { sendLetterState } from "@/recoil/letterStore"; import { theme } from "@/styles/theme"; import Image from "next/image"; diff --git a/src/app/verify/letter/page.tsx b/src/app/verify/letter/page.tsx index 3647e537..89a2bbdd 100644 --- a/src/app/verify/letter/page.tsx +++ b/src/app/verify/letter/page.tsx @@ -9,7 +9,6 @@ import { getMainId } from "@/api/planet/space/space"; import Button from "@/components/common/Button"; import Loader, { LoaderContainer } from "@/components/common/Loader"; import Letter from "@/components/letter/Letter"; -import { LETTER_DATA } from "@/constants/letter"; import { LetterType } from "@/types/letter"; import { getAccessToken } from "@/utils/storage"; import { useRouter, useSearchParams } from "next/navigation"; @@ -109,33 +108,6 @@ const VerifyLetter = () => { }; checkMainIdAndVerify(); - //accessToken이 없는 상황이라면 로그인으로 - - //letterCode가 있다면 검증 진행 - // if (url) { - // verifyLetter(url) - // .then((res) => { - // if (res.data.letterId) { - // //검증 성공하면 letterData를 받아온다 - // setletterId(res.data.letterId); - // fetchLetterData(res.data.letterId); - // } - // }) - // .catch((error) => { - // //검증 실패시 조회할 수 없는 편지 에러 페이지로 이동 - // console.log(error); - // router.push(url ? `/error/letter?url=${url}` : `/error/letter`); - // }); - // } - - // if (letterData === null) { - // //LetterData 받아오는 로직 - // for (let i = 0; i < LETTER_DATA.length; i++) { - // if (LETTER_DATA[i].url === url) { - // setLetterData(LETTER_DATA[i]); - // } - // } - // } setIsLoading(false); }, []); @@ -155,7 +127,7 @@ const VerifyLetter = () => { { props.theme.colors.bg}; - /* background-image: url('/assets/signup/verify_image.png'); - background-size: 550px auto; - background-position: bottom 80px center; - background-repeat: no-repeat; */ `; const MainWrapper = styled.div` diff --git a/src/components/common/Bottom.tsx b/src/components/common/Bottom.tsx index 186ef3bc..21adc535 100644 --- a/src/components/common/Bottom.tsx +++ b/src/components/common/Bottom.tsx @@ -3,9 +3,8 @@ import styled from "styled-components"; import Tag from "./Tag"; import Button from "./Button"; import { theme } from "@/styles/theme"; -import { Orbit } from "@/constants/orbit"; -import Image from "next/image"; import { useRouter } from "next/navigation"; +import { Orbit } from "@/types/orbit"; interface BottomProps { orbitMessages: Orbit[] | null; diff --git a/src/components/common/Tag.tsx b/src/components/common/Tag.tsx index e0f0526a..84dff616 100644 --- a/src/components/common/Tag.tsx +++ b/src/components/common/Tag.tsx @@ -1,8 +1,7 @@ import { deleteOrbitLetter } from "@/api/planet/letter/spaceLetter"; -import { Orbit } from "@/constants/orbit"; import { planetRefState } from "@/recoil/RefStore"; import { theme } from "@/styles/theme"; -import { motion } from "framer-motion"; +import { Orbit } from "@/types/orbit"; import Image from "next/image"; import React, { useRef, useState } from "react"; import { useRecoilState } from "recoil"; @@ -380,9 +379,8 @@ const Box = styled.div<{ background: ${theme.colors.gray800}; ${(props) => props.theme.fonts.body08}; display: flex; - ${ - $hasEditIcon && - css` + ${$hasEditIcon && + css` height: 47px; padding: 9px 18px; border-radius: 200px; @@ -390,19 +388,16 @@ const Box = styled.div<{ backdrop-filter: blur(2px); ${(props) => props.theme.fonts.title01}; gap: 4px; - ` - } - ${ - $hasName === false && - css` + `} + ${$hasName === false && + css` padding: 7.5px 13px 7.5px 13px; - ` - } + `} `} ${({ $tagType, $orbitType }) => - $tagType === "letter" && - css` + $tagType === "letter" && + css` display: block; max-width: 90px; padding: ${$orbitType === "2" ? "7.5px 15px" : "11px 15px"}; diff --git a/src/components/planet/PlanetSlide.tsx b/src/components/planet/PlanetSlide.tsx index 6a8cb96b..ba480e82 100644 --- a/src/components/planet/PlanetSlide.tsx +++ b/src/components/planet/PlanetSlide.tsx @@ -1,10 +1,9 @@ -import { theme } from "@/styles/theme"; -import React, { useState } from "react"; +import React from "react"; import styled from "styled-components"; import { motion, AnimatePresence } from "framer-motion"; import { SpaceInfo } from "@/types/space"; -import { Orbit } from "@/constants/orbit"; import Planet from "../common/Planet"; +import { Orbit } from "@/types/orbit"; interface PlanetSlideProps { idx: number; diff --git a/src/types/orbit.ts b/src/types/orbit.ts index 0bd8dbab..87074dfd 100644 --- a/src/types/orbit.ts +++ b/src/types/orbit.ts @@ -1,6 +1,14 @@ +export interface Orbit { + letterId: string; + senderName: string; + receivedDate?: string; + isNew?: boolean; + date?: string; +} + export type OrbitMessage = { - id: number; - name: string; - read: boolean; - date: string; -}; \ No newline at end of file + id: number; + name: string; + read: boolean; + date: string; +}; diff --git a/src/types/planet.ts b/src/types/planet.ts new file mode 100644 index 00000000..2a599397 --- /dev/null +++ b/src/types/planet.ts @@ -0,0 +1,7 @@ +export interface Planet { + spaceId: string; + spaceName: string; + letterCount: number; + checked: boolean; + current: boolean; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 7b285893..f48e7ee6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -18,9 +22,19 @@ } ], "paths": { - "@/*": ["./src/*"] - } + "@/*": [ + "./src/*" + ] + }, + "target": "ES2017" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } From 8986ae8e21c9b11fee957f2fac1ce002e7fb0c87 Mon Sep 17 00:00:00 2001 From: yyypearl Date: Mon, 13 Jan 2025 15:52:32 +0900 Subject: [PATCH 6/8] =?UTF-8?q?=F0=9F=90=9B=20fix(#127):=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EB=8D=94=EB=AF=B8=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/guide/page.tsx | 5 ++- src/app/independent/[id]/page.tsx | 2 +- src/app/letter/[id]/page.tsx | 2 +- src/app/mypage/send/[id]/page.tsx | 6 ++-- src/app/onboarding/page.tsx | 2 +- src/app/planet/manage/page.tsx | 2 +- src/app/planet/move/page.tsx | 2 +- src/app/planet/page.tsx | 3 +- src/app/send/complete/page.tsx | 1 - src/app/verify/letter/page.tsx | 36 ++------------------- src/components/common/Bottom.tsx | 3 +- src/components/common/Tag.tsx | 23 ++++++-------- src/components/planet/PlanetSlide.tsx | 5 ++- src/constants/letterDummy.ts | 46 +++++++++++++++++++++++++++ src/types/orbit.ts | 18 ++++++++--- src/types/planet.ts | 7 ++++ tsconfig.json | 24 +++++++++++--- 17 files changed, 109 insertions(+), 78 deletions(-) create mode 100644 src/constants/letterDummy.ts create mode 100644 src/types/planet.ts diff --git a/src/app/guide/page.tsx b/src/app/guide/page.tsx index ed923a6b..4ba9eccb 100644 --- a/src/app/guide/page.tsx +++ b/src/app/guide/page.tsx @@ -1,7 +1,6 @@ "use client"; import BlinkTag from "@/components/common/BlinkingTag"; -// import BottomSheet from "@/components/common/BottomSheet"; import Button from "@/components/common/Button"; import Check from "@/components/common/Check"; import ConfirmModal from "@/components/common/ConfirmModal"; @@ -13,7 +12,7 @@ import Tag from "@/components/common/Tag"; import Toast from "@/components/common/Toast"; import Letter from "@/components/letter/Letter"; import NewItemPicker from "@/components/signup/NewItemPicker"; -import { LETTER_DATA } from "@/constants/letter"; +import { LETTER_DUMMY } from "@/constants/letterDummy"; import { theme } from "@/styles/theme"; import Image from "next/image"; import React, { useState } from "react"; @@ -72,7 +71,7 @@ const GuidePage = () => { }; //Letter - const letterData = LETTER_DATA[0]; + const letterData = LETTER_DUMMY[0]; const imageData = [ "https://via.assets.so/album.png?id=6&q=95&w=360&h=360&fit=fill", "https://via.assets.so/album.png?id=2&q=95&w=360&h=360&fit=fill", diff --git a/src/app/independent/[id]/page.tsx b/src/app/independent/[id]/page.tsx index a655b7a2..0020a594 100644 --- a/src/app/independent/[id]/page.tsx +++ b/src/app/independent/[id]/page.tsx @@ -79,7 +79,7 @@ const IndependentLetterPage = () => { showType="receive" key={key} contentType="all" - id={letterId} + id={letterId || ""} templateType={letterData.templateType} name={letterData.senderName} content={letterData.content} diff --git a/src/app/letter/[id]/page.tsx b/src/app/letter/[id]/page.tsx index a6110ee4..e8165f44 100644 --- a/src/app/letter/[id]/page.tsx +++ b/src/app/letter/[id]/page.tsx @@ -97,7 +97,7 @@ const LetterPage = () => { key={key} contentType="all" pageType="space" - id={letterId} + id={letterId || ""} templateType={letterData.templateType} name={letterData.sender} content={letterData.content} diff --git a/src/app/mypage/send/[id]/page.tsx b/src/app/mypage/send/[id]/page.tsx index 482ebfeb..4206033b 100644 --- a/src/app/mypage/send/[id]/page.tsx +++ b/src/app/mypage/send/[id]/page.tsx @@ -1,7 +1,6 @@ "use client"; import { getSentLetterDetail } from "@/api/mypage/user"; -import Button from "@/components/common/Button"; import KakaoShareButton from "@/components/common/KakaoShareButton"; import Loader from "@/components/common/Loader"; import NavigatorBar from "@/components/common/NavigatorBar"; @@ -9,12 +8,11 @@ import Letter from "@/components/letter/Letter"; import { theme } from "@/styles/theme"; import { SentDetailLetterType } from "@/types/letter"; import { getAccessToken } from "@/utils/storage"; -import { useParams, useRouter } from "next/navigation"; +import { useParams } from "next/navigation"; import { Suspense, useEffect, useState } from "react"; import styled from "styled-components"; const SendDetailPage = () => { - const router = useRouter(); const { id } = useParams(); const letterId = Array.isArray(id) ? id[0] : id; const [key, setKey] = useState(1); @@ -61,7 +59,7 @@ const SendDetailPage = () => { { const router = useRouter(); diff --git a/src/app/planet/move/page.tsx b/src/app/planet/move/page.tsx index 714a8b2d..1251cbd9 100644 --- a/src/app/planet/move/page.tsx +++ b/src/app/planet/move/page.tsx @@ -7,7 +7,6 @@ import NavigatorBar from "@/components/common/NavigatorBar"; import Button from "@/components/common/Button"; import { useRouter, useSearchParams } from "next/navigation"; import PlanetBox from "@/components/planet/PlanetBox"; -import { Planet } from "@/constants/planet"; import Loader, { LoaderContainer } from "@/components/common/Loader"; import { putLetterToIndep, @@ -16,6 +15,7 @@ import { import Image from "next/image"; import { getSpaceList } from "@/api/planet/space/space"; import { useToast } from "@/hooks/useToast"; +import { Planet } from "@/types/planet"; const PlanetMovePage = () => { const router = useRouter(); diff --git a/src/app/planet/page.tsx b/src/app/planet/page.tsx index b51d9f50..67f66cce 100644 --- a/src/app/planet/page.tsx +++ b/src/app/planet/page.tsx @@ -4,9 +4,7 @@ import React, { useEffect, useRef, useState } from "react"; import styled from "styled-components"; import Image from "next/image"; import Bottom from "@/components/common/Bottom"; -import Planet from "@/components/common/Planet"; import Tag from "@/components/common/Tag"; -import { Orbit } from "@/constants/orbit"; import { theme } from "@/styles/theme"; import Pagination from "@/components/common/Pagination"; import { useRouter } from "next/navigation"; @@ -40,6 +38,7 @@ import { useToast } from "@/hooks/useToast"; import Tooltip from "@/components/common/Tooltip"; import { userState } from "@/recoil/userStore"; import { spaceState } from "@/recoil/spaceStore"; +import { Orbit } from "@/types/orbit"; const PlanetPage = () => { const router = useRouter(); diff --git a/src/app/send/complete/page.tsx b/src/app/send/complete/page.tsx index 9674f938..99c8a03b 100644 --- a/src/app/send/complete/page.tsx +++ b/src/app/send/complete/page.tsx @@ -1,7 +1,6 @@ "use client"; import Button from "@/components/common/Button"; -import KakaoShareButton from "@/components/common/KakaoShareButton"; import { sendLetterState } from "@/recoil/letterStore"; import { theme } from "@/styles/theme"; import Image from "next/image"; diff --git a/src/app/verify/letter/page.tsx b/src/app/verify/letter/page.tsx index 3647e537..89a2bbdd 100644 --- a/src/app/verify/letter/page.tsx +++ b/src/app/verify/letter/page.tsx @@ -9,7 +9,6 @@ import { getMainId } from "@/api/planet/space/space"; import Button from "@/components/common/Button"; import Loader, { LoaderContainer } from "@/components/common/Loader"; import Letter from "@/components/letter/Letter"; -import { LETTER_DATA } from "@/constants/letter"; import { LetterType } from "@/types/letter"; import { getAccessToken } from "@/utils/storage"; import { useRouter, useSearchParams } from "next/navigation"; @@ -109,33 +108,6 @@ const VerifyLetter = () => { }; checkMainIdAndVerify(); - //accessToken이 없는 상황이라면 로그인으로 - - //letterCode가 있다면 검증 진행 - // if (url) { - // verifyLetter(url) - // .then((res) => { - // if (res.data.letterId) { - // //검증 성공하면 letterData를 받아온다 - // setletterId(res.data.letterId); - // fetchLetterData(res.data.letterId); - // } - // }) - // .catch((error) => { - // //검증 실패시 조회할 수 없는 편지 에러 페이지로 이동 - // console.log(error); - // router.push(url ? `/error/letter?url=${url}` : `/error/letter`); - // }); - // } - - // if (letterData === null) { - // //LetterData 받아오는 로직 - // for (let i = 0; i < LETTER_DATA.length; i++) { - // if (LETTER_DATA[i].url === url) { - // setLetterData(LETTER_DATA[i]); - // } - // } - // } setIsLoading(false); }, []); @@ -155,7 +127,7 @@ const VerifyLetter = () => { { props.theme.colors.bg}; - /* background-image: url('/assets/signup/verify_image.png'); - background-size: 550px auto; - background-position: bottom 80px center; - background-repeat: no-repeat; */ `; const MainWrapper = styled.div` diff --git a/src/components/common/Bottom.tsx b/src/components/common/Bottom.tsx index 186ef3bc..21adc535 100644 --- a/src/components/common/Bottom.tsx +++ b/src/components/common/Bottom.tsx @@ -3,9 +3,8 @@ import styled from "styled-components"; import Tag from "./Tag"; import Button from "./Button"; import { theme } from "@/styles/theme"; -import { Orbit } from "@/constants/orbit"; -import Image from "next/image"; import { useRouter } from "next/navigation"; +import { Orbit } from "@/types/orbit"; interface BottomProps { orbitMessages: Orbit[] | null; diff --git a/src/components/common/Tag.tsx b/src/components/common/Tag.tsx index e0f0526a..84dff616 100644 --- a/src/components/common/Tag.tsx +++ b/src/components/common/Tag.tsx @@ -1,8 +1,7 @@ import { deleteOrbitLetter } from "@/api/planet/letter/spaceLetter"; -import { Orbit } from "@/constants/orbit"; import { planetRefState } from "@/recoil/RefStore"; import { theme } from "@/styles/theme"; -import { motion } from "framer-motion"; +import { Orbit } from "@/types/orbit"; import Image from "next/image"; import React, { useRef, useState } from "react"; import { useRecoilState } from "recoil"; @@ -380,9 +379,8 @@ const Box = styled.div<{ background: ${theme.colors.gray800}; ${(props) => props.theme.fonts.body08}; display: flex; - ${ - $hasEditIcon && - css` + ${$hasEditIcon && + css` height: 47px; padding: 9px 18px; border-radius: 200px; @@ -390,19 +388,16 @@ const Box = styled.div<{ backdrop-filter: blur(2px); ${(props) => props.theme.fonts.title01}; gap: 4px; - ` - } - ${ - $hasName === false && - css` + `} + ${$hasName === false && + css` padding: 7.5px 13px 7.5px 13px; - ` - } + `} `} ${({ $tagType, $orbitType }) => - $tagType === "letter" && - css` + $tagType === "letter" && + css` display: block; max-width: 90px; padding: ${$orbitType === "2" ? "7.5px 15px" : "11px 15px"}; diff --git a/src/components/planet/PlanetSlide.tsx b/src/components/planet/PlanetSlide.tsx index 6a8cb96b..ba480e82 100644 --- a/src/components/planet/PlanetSlide.tsx +++ b/src/components/planet/PlanetSlide.tsx @@ -1,10 +1,9 @@ -import { theme } from "@/styles/theme"; -import React, { useState } from "react"; +import React from "react"; import styled from "styled-components"; import { motion, AnimatePresence } from "framer-motion"; import { SpaceInfo } from "@/types/space"; -import { Orbit } from "@/constants/orbit"; import Planet from "../common/Planet"; +import { Orbit } from "@/types/orbit"; interface PlanetSlideProps { idx: number; diff --git a/src/constants/letterDummy.ts b/src/constants/letterDummy.ts new file mode 100644 index 00000000..ce0dcc68 --- /dev/null +++ b/src/constants/letterDummy.ts @@ -0,0 +1,46 @@ +import { LetterType } from "@/types/letter"; + +export const LETTER_DUMMY: LetterType[] = [ + { + id: 0, + url: "aa", + templateType: 3, + sender: "승효", + receiver: "유진주", + date: "2024-09-04", + content: + "전체 스크립트와 관련 있는 렉시컬 환경은 글로벌 렉시컬 환경이다. (Global Lexical Environment)이다. 전역 코드가 시작되면, 렉시컬 환경 객체가 만들어지고, 앞서 선언된 변수와 함수를 해당 레코드에 저장한다.전체 스크립트와 관련 있는 렉시컬 환경은 글로벌 렉시컬 환경이다. (Global Lexical Environment)이다. 전역 코드가 시작되면, 렉시컬 환경 객체가 만들어지고, 앞서 선언된 변수와 함수를 해당 레코드에 저장한다.전체 스크립트와 관련 있는 렉시컬 환경은 글로벌 렉시컬 환경이다. (Global Lexical Environment)이다. 전역 코드가 시작되면, 렉시컬 환경 객체가 만들어지고, 앞서 선언된 변수와 함수를 해당 레코드에 저장한다.", + images: [], + }, + { + id: 1, + url: "qq", + templateType: 2, + sender: "유진주", + receiver: "승효", + date: "2024-09-01", + content: "", + images: [], + }, + { + id: 3, + url: "circle", + templateType: 4, + sender: "김동우", + receiver: "오민지", + date: "2024-08-24", + content: + "민지 누나 언제나 기획 열정적으로 열심히 해줘서 너무 고마워! 특히 언제나 성실한누나의 모습을 본 받고 싶어. 누나는 꼭멋진 서비스 기획자가 될 거야. 응원할게! ", + images: [], + }, + { + id: 4, + url: "tocircle", + templateType: 6, + sender: "유진주", + receiver: "김동우", + date: "2024-08-21", + content: "", + images: [], + }, +]; diff --git a/src/types/orbit.ts b/src/types/orbit.ts index 0bd8dbab..87074dfd 100644 --- a/src/types/orbit.ts +++ b/src/types/orbit.ts @@ -1,6 +1,14 @@ +export interface Orbit { + letterId: string; + senderName: string; + receivedDate?: string; + isNew?: boolean; + date?: string; +} + export type OrbitMessage = { - id: number; - name: string; - read: boolean; - date: string; -}; \ No newline at end of file + id: number; + name: string; + read: boolean; + date: string; +}; diff --git a/src/types/planet.ts b/src/types/planet.ts new file mode 100644 index 00000000..2a599397 --- /dev/null +++ b/src/types/planet.ts @@ -0,0 +1,7 @@ +export interface Planet { + spaceId: string; + spaceName: string; + letterCount: number; + checked: boolean; + current: boolean; +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 7b285893..f48e7ee6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,10 @@ { "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], "allowJs": true, "skipLibCheck": true, "strict": true, @@ -18,9 +22,19 @@ } ], "paths": { - "@/*": ["./src/*"] - } + "@/*": [ + "./src/*" + ] + }, + "target": "ES2017" }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] } From d07e40a8a71a8899712b134309114de094f453de Mon Sep 17 00:00:00 2001 From: yyypearl Date: Mon, 13 Jan 2025 15:56:48 +0900 Subject: [PATCH 7/8] =?UTF-8?q?=E2=9A=99=20chore(#127):=20Google=20MS=20cl?= =?UTF-8?q?arity=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 18 ++++++++++++++++++ package.json | 1 + src/app/layout.tsx | 23 +++-------------------- 3 files changed, 22 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e25c1ba..f7b55bd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@next/third-parties": "^14.2.5", "axios": "^1.7.7", "browser-image-compression": "^2.0.2", "cookie": "^1.0.0", @@ -979,6 +980,18 @@ "node": ">= 10" } }, + "node_modules/@next/third-parties": { + "version": "14.2.5", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.5.tgz", + "integrity": "sha512-PDRJm8RZ3rnGNporHKjcdCeZqoW8iJ5uP0clo1Z08TqJiQzuntJ66zrGYCJyqTakx62UJNOp73YsQCFo6kbYYg==", + "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", @@ -5162,6 +5175,11 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, + "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/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", diff --git a/package.json b/package.json index e6259fdc..cd9f9940 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dependencies": { "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", + "@next/third-parties": "^14.2.5", "axios": "^1.7.7", "browser-image-compression": "^2.0.2", "cookie": "^1.0.0", diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d81be4e7..b01eda78 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,5 @@ import Providers from "./providers"; +import { GoogleAnalytics, GoogleTagManager } from "@next/third-parties/google"; export const metadata = { title: "레터링 | 온라인 편지 아카이빙 플랫폼", @@ -64,27 +65,9 @@ export default function RootLayout({ /> -