From c008336837b0c761e385648c856349b46a878576 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Thu, 10 Oct 2024 18:54:37 +0900 Subject: [PATCH 01/25] =?UTF-8?q?=F0=9F=90=9B=20fix:=20update=20copy=20lin?= =?UTF-8?q?t=20svg=20name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LectureSummaryHeader/LectureSummaryHeader.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/entities/lecture/ui/LectureSummary/LectureSummaryHeader/LectureSummaryHeader.tsx b/src/entities/lecture/ui/LectureSummary/LectureSummaryHeader/LectureSummaryHeader.tsx index 9fa56df..8469734 100644 --- a/src/entities/lecture/ui/LectureSummary/LectureSummaryHeader/LectureSummaryHeader.tsx +++ b/src/entities/lecture/ui/LectureSummary/LectureSummaryHeader/LectureSummaryHeader.tsx @@ -47,7 +47,7 @@ const LectureSummaryHeader = ({ Date: Sat, 12 Oct 2024 15:45:34 +0900 Subject: [PATCH 02/25] =?UTF-8?q?=F0=9F=92=8E=20style:=20update=20dialog?= =?UTF-8?q?=20responsive=20style?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/ui/Dialog/Dialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/ui/Dialog/Dialog.tsx b/src/shared/ui/Dialog/Dialog.tsx index 18a7dbe..0a5bbb0 100755 --- a/src/shared/ui/Dialog/Dialog.tsx +++ b/src/shared/ui/Dialog/Dialog.tsx @@ -39,7 +39,7 @@ const DialogContent = React.forwardRef< Date: Sat, 12 Oct 2024 15:47:38 +0900 Subject: [PATCH 03/25] =?UTF-8?q?=F0=9F=A7=B9=20chore:=20add=20svgr=20webp?= =?UTF-8?q?ack=20setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- next.config.mjs | 13 ++ package.json | 1 + yarn.lock | 458 +++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 466 insertions(+), 6 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index fa9ac6f..43d6db6 100755 --- a/next.config.mjs +++ b/next.config.mjs @@ -12,6 +12,19 @@ const nextConfig = { config.resolve.alias.push({ name: "msw/node", alias: false }); else config.resolve.alias["msw/node"] = false; } + + config.module.rules.push({ + test: /\.svg$/, + use: [ + { + loader: "@svgr/webpack", + options: { + // 원하는 옵션 추가 + }, + }, + ], + }); + return config; }, images: { diff --git a/package.json b/package.json index 5af7ba8..ffb6c66 100755 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@radix-ui/react-progress": "^1.1.0", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.2", + "@svgr/webpack": "^8.1.0", "@tanstack/react-query": "^5.55.4", "@types/lodash": "^4.17.10", "axios": "^1.7.7", diff --git a/yarn.lock b/yarn.lock index 9556dd8..48efe03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,6 +33,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.7.tgz#b8479fe0018ef0ac87b6b7a5c6916fcd67ae2c9c" integrity sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw== +"@babel/compat-data@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.8.tgz#0376e83df5ab0eb0da18885c0140041f0747a402" + integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA== + "@babel/core@^7.18.9", "@babel/core@^7.24.4": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.7.tgz#1b3d144157575daf132a3bc80b2b18e6e3ca6ece" @@ -54,6 +59,27 @@ json5 "^2.2.3" semver "^6.3.1" +"@babel/core@^7.21.3": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.8.tgz#a57137d2a51bbcffcfaeba43cb4dd33ae3e0e1c6" + integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.25.7" + "@babel/generator" "^7.25.7" + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-module-transforms" "^7.25.7" + "@babel/helpers" "^7.25.7" + "@babel/parser" "^7.25.8" + "@babel/template" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/types" "^7.25.8" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/generator@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56" @@ -244,6 +270,13 @@ dependencies: "@babel/types" "^7.25.7" +"@babel/parser@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2" + integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ== + dependencies: + "@babel/types" "^7.25.8" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz#93969ac50ef4d68b2504b01b758af714e4cbdd64" @@ -453,6 +486,15 @@ "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/traverse" "^7.25.7" +"@babel/plugin-transform-async-generator-functions@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz#3331de02f52cc1f2c75b396bec52188c85b0b1ec" + integrity sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-remap-async-to-generator" "^7.25.7" + "@babel/traverse" "^7.25.7" + "@babel/plugin-transform-async-to-generator@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz#a44c7323f8d4285a6c568dd43c5c361d6367ec52" @@ -493,6 +535,14 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-transform-class-static-block@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz#a8af22028920fe404668031eceb4c3aadccb5262" + integrity sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-classes@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz#5103206cf80d02283bbbd044509ea3b65d0906bb" @@ -551,6 +601,13 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-transform-dynamic-import@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz#f1edbe75b248cf44c70c8ca8ed3818a668753aaa" + integrity sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-exponentiation-operator@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz#5961a3a23a398faccd6cddb34a2182807d75fb5f" @@ -567,6 +624,13 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-transform-export-namespace-from@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz#d1988c3019a380b417e0516418b02804d3858145" + integrity sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-for-of@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz#0acfea0f27aa290818b5b48a5a44b3f03fc13669" @@ -592,6 +656,13 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-transform-json-strings@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz#6fb3ec383a2ea92652289fdba653e3f9de722694" + integrity sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-literals@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz#70cbdc742f2cfdb1a63ea2cbd018d12a60b213c3" @@ -607,6 +678,13 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-transform-logical-assignment-operators@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz#01868ff92daa9e525b4c7902aa51979082a05710" + integrity sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-member-expression-literals@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz#0a36c3fbd450cc9e6485c507f005fa3d1bc8fca5" @@ -672,6 +750,13 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-transform-nullish-coalescing-operator@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz#befb4900c130bd52fccf2b926314557987f1b552" + integrity sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-numeric-separator@^7.24.1", "@babel/plugin-transform-numeric-separator@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.7.tgz#a516b78f894d1c08283f39d809b2048fd2f29448" @@ -680,6 +765,13 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-transform-numeric-separator@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz#91e370486371637bd42161052f2602c701386891" + integrity sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-object-rest-spread@^7.24.1", "@babel/plugin-transform-object-rest-spread@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.7.tgz#fa0916521be96fd434e2db59780b24b308c6d169" @@ -690,6 +782,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.25.7" +"@babel/plugin-transform-object-rest-spread@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz#0904ac16bcce41df4db12d915d6780f85c7fb04b" + integrity sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g== + dependencies: + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-parameters" "^7.25.7" + "@babel/plugin-transform-object-super@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz#582a9cea8cf0a1e02732be5b5a703a38dedf5661" @@ -706,6 +807,13 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-transform-optional-catch-binding@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz#2649b86a3bb202c6894ec81a6ddf41b94d8f3103" + integrity sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-optional-chaining@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.7.tgz#b7f7c9321aa1d8414e67799c28d87c23682e4d68" @@ -715,6 +823,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-transform-optional-chaining@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz#f46283b78adcc5b6ab988a952f989e7dce70653f" + integrity sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7" + "@babel/plugin-transform-parameters@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz#80c38b03ef580f6d6bffe1c5254bb35986859ac7" @@ -740,6 +856,15 @@ "@babel/helper-plugin-utils" "^7.25.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-transform-private-property-in-object@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz#1234f856ce85e061f9688764194e51ea7577c434" + integrity sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.7" + "@babel/helper-create-class-features-plugin" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-property-literals@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz#a8612b4ea4e10430f00012ecf0155662c7d6550d" @@ -747,6 +872,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.7" +"@babel/plugin-transform-react-constant-elements@^7.21.3": + version "7.25.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.7.tgz#b7f18dcdfac137a635a3f1242ea7c931df82a666" + integrity sha512-/qXt69Em8HgsjCLu7G3zdIQn7A2QwmYND7Wa0LTp09Na+Zn8L5d0A7wSXrKi18TJRc/Q5S1i1De/SU1LzVkSvA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/plugin-transform-react-display-name@^7.25.7": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz#2753e875a1b702fb1d806c4f5d4c194d64cadd88" @@ -885,6 +1017,80 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.7" "@babel/helper-plugin-utils" "^7.25.7" +"@babel/preset-env@^7.20.2": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.8.tgz#dc6b719627fb29cd9cccbbbe041802fd575b524c" + integrity sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg== + dependencies: + "@babel/compat-data" "^7.25.8" + "@babel/helper-compilation-targets" "^7.25.7" + "@babel/helper-plugin-utils" "^7.25.7" + "@babel/helper-validator-option" "^7.25.7" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.7" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.7" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.7" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.7" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.25.7" + "@babel/plugin-syntax-import-attributes" "^7.25.7" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.25.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.8" + "@babel/plugin-transform-async-to-generator" "^7.25.7" + "@babel/plugin-transform-block-scoped-functions" "^7.25.7" + "@babel/plugin-transform-block-scoping" "^7.25.7" + "@babel/plugin-transform-class-properties" "^7.25.7" + "@babel/plugin-transform-class-static-block" "^7.25.8" + "@babel/plugin-transform-classes" "^7.25.7" + "@babel/plugin-transform-computed-properties" "^7.25.7" + "@babel/plugin-transform-destructuring" "^7.25.7" + "@babel/plugin-transform-dotall-regex" "^7.25.7" + "@babel/plugin-transform-duplicate-keys" "^7.25.7" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.7" + "@babel/plugin-transform-dynamic-import" "^7.25.8" + "@babel/plugin-transform-exponentiation-operator" "^7.25.7" + "@babel/plugin-transform-export-namespace-from" "^7.25.8" + "@babel/plugin-transform-for-of" "^7.25.7" + "@babel/plugin-transform-function-name" "^7.25.7" + "@babel/plugin-transform-json-strings" "^7.25.8" + "@babel/plugin-transform-literals" "^7.25.7" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.8" + "@babel/plugin-transform-member-expression-literals" "^7.25.7" + "@babel/plugin-transform-modules-amd" "^7.25.7" + "@babel/plugin-transform-modules-commonjs" "^7.25.7" + "@babel/plugin-transform-modules-systemjs" "^7.25.7" + "@babel/plugin-transform-modules-umd" "^7.25.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.7" + "@babel/plugin-transform-new-target" "^7.25.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.8" + "@babel/plugin-transform-numeric-separator" "^7.25.8" + "@babel/plugin-transform-object-rest-spread" "^7.25.8" + "@babel/plugin-transform-object-super" "^7.25.7" + "@babel/plugin-transform-optional-catch-binding" "^7.25.8" + "@babel/plugin-transform-optional-chaining" "^7.25.8" + "@babel/plugin-transform-parameters" "^7.25.7" + "@babel/plugin-transform-private-methods" "^7.25.7" + "@babel/plugin-transform-private-property-in-object" "^7.25.8" + "@babel/plugin-transform-property-literals" "^7.25.7" + "@babel/plugin-transform-regenerator" "^7.25.7" + "@babel/plugin-transform-reserved-words" "^7.25.7" + "@babel/plugin-transform-shorthand-properties" "^7.25.7" + "@babel/plugin-transform-spread" "^7.25.7" + "@babel/plugin-transform-sticky-regex" "^7.25.7" + "@babel/plugin-transform-template-literals" "^7.25.7" + "@babel/plugin-transform-typeof-symbol" "^7.25.7" + "@babel/plugin-transform-unicode-escapes" "^7.25.7" + "@babel/plugin-transform-unicode-property-regex" "^7.25.7" + "@babel/plugin-transform-unicode-regex" "^7.25.7" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.7" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.6" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.38.1" + semver "^6.3.1" + "@babel/preset-env@^7.24.4": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.7.tgz#fc1b092152db4b58377b85dc05c890081c1157e0" @@ -983,7 +1189,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.24.1": +"@babel/preset-react@^7.18.6", "@babel/preset-react@^7.24.1": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.25.7.tgz#081cbe1dea363b732764d06a0fdda67ffa17735d" integrity sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg== @@ -995,7 +1201,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.25.7" "@babel/plugin-transform-react-pure-annotations" "^7.25.7" -"@babel/preset-typescript@^7.24.1": +"@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.24.1": version "7.25.7" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz#43c5b68eccb856ae5b52274b77b1c3c413cde1b7" integrity sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw== @@ -1044,6 +1250,15 @@ "@babel/helper-validator-identifier" "^7.25.7" to-fast-properties "^2.0.0" +"@babel/types@^7.21.3", "@babel/types@^7.25.8": + version "7.25.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1" + integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg== + dependencies: + "@babel/helper-string-parser" "^7.25.7" + "@babel/helper-validator-identifier" "^7.25.7" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -2591,6 +2806,112 @@ resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.3.4.tgz#7e8ea53673fea9cbefa4464347cddb4860364f82" integrity sha512-D4XVsQgTtpHEHLhwkx59aGy1GBwOedVr/mNns7hFrH8FjEpxrrWCuZQASq1ZpCl8LXlh7uvmT5sM2rOdQbGuGg== +"@svgr/babel-plugin-add-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz#4001f5d5dd87fa13303e36ee106e3ff3a7eb8b22" + integrity sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g== + +"@svgr/babel-plugin-remove-jsx-attribute@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186" + integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44" + integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA== + +"@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz#8fbb6b2e91fa26ac5d4aa25c6b6e4f20f9c0ae27" + integrity sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ== + +"@svgr/babel-plugin-svg-dynamic-title@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz#1d5ba1d281363fc0f2f29a60d6d936f9bbc657b0" + integrity sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og== + +"@svgr/babel-plugin-svg-em-dimensions@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz#35e08df300ea8b1d41cb8f62309c241b0369e501" + integrity sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g== + +"@svgr/babel-plugin-transform-react-native-svg@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz#90a8b63998b688b284f255c6a5248abd5b28d754" + integrity sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q== + +"@svgr/babel-plugin-transform-svg-component@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz#013b4bfca88779711f0ed2739f3f7efcefcf4f7e" + integrity sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw== + +"@svgr/babel-preset@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-8.1.0.tgz#0e87119aecdf1c424840b9d4565b7137cabf9ece" + integrity sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-attribute" "8.0.0" + "@svgr/babel-plugin-remove-jsx-empty-expression" "8.0.0" + "@svgr/babel-plugin-replace-jsx-attribute-value" "8.0.0" + "@svgr/babel-plugin-svg-dynamic-title" "8.0.0" + "@svgr/babel-plugin-svg-em-dimensions" "8.0.0" + "@svgr/babel-plugin-transform-react-native-svg" "8.1.0" + "@svgr/babel-plugin-transform-svg-component" "8.0.0" + +"@svgr/core@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-8.1.0.tgz#41146f9b40b1a10beaf5cc4f361a16a3c1885e88" + integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + camelcase "^6.2.0" + cosmiconfig "^8.1.3" + snake-case "^3.0.4" + +"@svgr/hast-util-to-babel-ast@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz#6952fd9ce0f470e1aded293b792a2705faf4ffd4" + integrity sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q== + dependencies: + "@babel/types" "^7.21.3" + entities "^4.4.0" + +"@svgr/plugin-jsx@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz#96969f04a24b58b174ee4cd974c60475acbd6928" + integrity sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA== + dependencies: + "@babel/core" "^7.21.3" + "@svgr/babel-preset" "8.1.0" + "@svgr/hast-util-to-babel-ast" "8.0.0" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz#b115b7b967b564f89ac58feae89b88c3decd0f00" + integrity sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA== + dependencies: + cosmiconfig "^8.1.3" + deepmerge "^4.3.1" + svgo "^3.0.2" + +"@svgr/webpack@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-8.1.0.tgz#16f1b5346f102f89fda6ec7338b96a701d8be0c2" + integrity sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA== + dependencies: + "@babel/core" "^7.21.3" + "@babel/plugin-transform-react-constant-elements" "^7.21.3" + "@babel/preset-env" "^7.20.2" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.21.0" + "@svgr/core" "8.1.0" + "@svgr/plugin-jsx" "8.1.0" + "@svgr/plugin-svgo" "8.1.0" + "@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" @@ -2665,6 +2986,11 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + "@ts-morph/common@~0.11.0": version "0.11.1" resolved "https://registry.yarnpkg.com/@ts-morph/common/-/common-0.11.1.tgz#281af2a0642b19354d8aa07a0d50dfdb4aa8164e" @@ -4226,6 +4552,11 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663: version "1.0.30001666" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz#112d77e80f1762f62a1b71ba92164e0cb3f3dd13" @@ -4515,6 +4846,11 @@ commander@^4.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -4643,6 +4979,16 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +cosmiconfig@^8.1.3: + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== + dependencies: + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + path-type "^4.0.0" + cosmiconfig@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" @@ -4740,7 +5086,34 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-what@^6.0.1: +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + +css-tree@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" + integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== + dependencies: + mdn-data "2.0.30" + source-map-js "^1.0.1" + +css-tree@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" + integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== + dependencies: + mdn-data "2.0.28" + source-map-js "^1.0.1" + +css-what@^6.0.1, css-what@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -4755,6 +5128,13 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +csso@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" + integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== + dependencies: + css-tree "~2.2.0" + csstype@^3.0.2: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" @@ -4869,7 +5249,7 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2: +deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -5028,12 +5408,21 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + domain-browser@^4.22.0: version "4.23.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-4.23.0.tgz#427ebb91efcb070f05cffdfb8a4e9a6c25f8c94b" integrity sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA== -domelementtype@^2.0.1, domelementtype@^2.2.0: +domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -5045,6 +5434,13 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -5054,6 +5450,15 @@ domutils@^2.5.2, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -5189,6 +5594,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.2.0, entities@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + env-paths@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" @@ -7624,6 +8034,16 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" +mdn-data@2.0.28: + version "2.0.28" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" + integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== + +mdn-data@2.0.30: + version "2.0.30" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" + integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== + media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -9600,12 +10020,20 @@ slice-ansi@^7.1.0: ansi-styles "^6.2.1" is-fullwidth-code-point "^5.0.0" +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + sonner@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sonner/-/sonner-1.5.0.tgz#af359f817063318415326b33aab54c5d17c747b7" integrity sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA== -source-map-js@^1.0.2, source-map-js@^1.2.1: +source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== @@ -9969,6 +10397,24 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^3.0.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.3.2.tgz#ad58002652dffbb5986fc9716afe52d869ecbda8" + integrity sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^5.1.0" + css-tree "^2.3.1" + css-what "^6.1.0" + csso "^5.0.5" + picocolors "^1.0.0" + synckit@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88" From 6565ba767f4964fb2728f97fe4ac14519e368f66 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 15:48:09 +0900 Subject: [PATCH 04/25] =?UTF-8?q?=F0=9F=92=8E=20style:=20update=20tailwind?= =?UTF-8?q?=20custom=20color?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tailwind.config.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tailwind.config.ts b/tailwind.config.ts index f367ff0..6e83eca 100755 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -36,6 +36,8 @@ const config: Config = { footerBackground: "#3E3E3E", kakao: "#FEE500", purple: "#4F118C", + hoverPurple: "#2B0253", + orange: "#FF501A", textBlackColor: "#171717", textSemiBoldBlackColor: "#404040", textGrayColor: "#737373", From 3f952e65f86ea1f420482f7630caccded31690a2 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 15:48:29 +0900 Subject: [PATCH 05/25] =?UTF-8?q?=F0=9F=90=9B=20fix:=20update=20icons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/icons/like.svg | 2 +- public/icons/like_filled.svg | 4 ++-- public/icons/marker.svg | 12 ++++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) mode change 100755 => 100644 public/icons/like_filled.svg create mode 100644 public/icons/marker.svg diff --git a/public/icons/like.svg b/public/icons/like.svg index 0676612..e756f65 100644 --- a/public/icons/like.svg +++ b/public/icons/like.svg @@ -1,3 +1,3 @@ - + diff --git a/public/icons/like_filled.svg b/public/icons/like_filled.svg old mode 100755 new mode 100644 index b7c6d79..6bc4e3a --- a/public/icons/like_filled.svg +++ b/public/icons/like_filled.svg @@ -1,3 +1,3 @@ - - + + diff --git a/public/icons/marker.svg b/public/icons/marker.svg new file mode 100644 index 0000000..e1c5af7 --- /dev/null +++ b/public/icons/marker.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + From c013ce617e5da4dfd9909a62d0e1f75e9bb313e8 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 15:48:57 +0900 Subject: [PATCH 06/25] =?UTF-8?q?=E2=9C=A8=20feat:=20add=20svg=20types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/types/svg.d.ts | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/shared/types/svg.d.ts diff --git a/src/shared/types/svg.d.ts b/src/shared/types/svg.d.ts new file mode 100644 index 0000000..70f75c0 --- /dev/null +++ b/src/shared/types/svg.d.ts @@ -0,0 +1,6 @@ +// src/types/svg.d.ts 또는 types/svg.d.ts +declare module "*.svg" { + import React from "react"; + const ReactComponent: React.FC>; + export default ReactComponent; +} From ac09e7b87fc967494b893a4ca65697810c1527b1 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 15:49:36 +0900 Subject: [PATCH 07/25] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20update?= =?UTF-8?q?=20IconButton=20loading,=20className=20props?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/ui/IconButton/IconButton.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/shared/ui/IconButton/IconButton.tsx b/src/shared/ui/IconButton/IconButton.tsx index bf959ed..abbced7 100644 --- a/src/shared/ui/IconButton/IconButton.tsx +++ b/src/shared/ui/IconButton/IconButton.tsx @@ -1,5 +1,6 @@ import { Button } from "../Button"; import Image from "next/image"; +import { Loader2 } from "lucide-react"; import { twMerge } from "tailwind-merge"; interface IconButtonProps { @@ -10,6 +11,8 @@ interface IconButtonProps { alt: string; iconWidth: number; iconHeight: number; + loading?: boolean; + className?: string; } const IconButton = ({ @@ -20,18 +23,26 @@ const IconButton = ({ alt, iconWidth, iconHeight, + loading, + className, }: IconButtonProps) => { return ( ); }; From 98d59321ab6aa41fd0395fee11a77d60ed1d5dad Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 15:51:02 +0900 Subject: [PATCH 08/25] =?UTF-8?q?=F0=9F=92=8E=20style:=20update=20responsi?= =?UTF-8?q?ve=20design?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/entities/lecture/ui/LectureList/LectureList.tsx | 2 +- src/features/map/ui/Map/Map.tsx | 10 +++++----- src/shared/ui/Footer/Footer.tsx | 6 +++++- src/shared/ui/Header/Header.tsx | 2 +- .../ui/Header/HeaderDescription/HeaderDescription.tsx | 2 +- src/shared/ui/Header/HeaderFeatures/HeaderFeatures.tsx | 2 +- 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/entities/lecture/ui/LectureList/LectureList.tsx b/src/entities/lecture/ui/LectureList/LectureList.tsx index 5ed1074..77afd67 100755 --- a/src/entities/lecture/ui/LectureList/LectureList.tsx +++ b/src/entities/lecture/ui/LectureList/LectureList.tsx @@ -13,7 +13,7 @@ interface LectureListProps { const LectureList = ({ lectureListData, type }: LectureListProps) => { return ( -
+
{lectureListData.map((lectureData) => { return ( { clickable: true, map: map, icon: { - content: `클래스 위치`, + content: `클래스 위치`, size: new naver.maps.Size(35, 35), anchor: new naver.maps.Point(11, 35), }, }); const hostedBy = lectureData.hosted_by; - const address = lectureData.address; + const address = lectureData.long_address; // InfoWindow 생성 const infoWindow = new naver.maps.InfoWindow({ content: ` -
+
-
+
${hostedBy}
-
+
${address}
`, diff --git a/src/shared/ui/Footer/Footer.tsx b/src/shared/ui/Footer/Footer.tsx index 69f5df9..f810606 100755 --- a/src/shared/ui/Footer/Footer.tsx +++ b/src/shared/ui/Footer/Footer.tsx @@ -29,11 +29,15 @@ const Footer = () => { link: "https://www.notion.so/17e92e6c1188429cb17ad92d84f65103?pvs=4", content: "위치기반시스템이용약관", }, + { + link: "https://www.notion.so/f34337d192d54efd818663cbeb2ad77c?pvs=4", + content: "서비스가이드", + }, ]; return ( isRenderFooter() && ( -
+
{ return ( -
+
diff --git a/src/shared/ui/Header/HeaderDescription/HeaderDescription.tsx b/src/shared/ui/Header/HeaderDescription/HeaderDescription.tsx index 8d3fb00..3365523 100644 --- a/src/shared/ui/Header/HeaderDescription/HeaderDescription.tsx +++ b/src/shared/ui/Header/HeaderDescription/HeaderDescription.tsx @@ -1,7 +1,7 @@ const HeaderDescription = () => { return (
-
+
50+ 시ː니어를 위한 문화생활 플랫폼
diff --git a/src/shared/ui/Header/HeaderFeatures/HeaderFeatures.tsx b/src/shared/ui/Header/HeaderFeatures/HeaderFeatures.tsx index b6ad04e..b028dc7 100644 --- a/src/shared/ui/Header/HeaderFeatures/HeaderFeatures.tsx +++ b/src/shared/ui/Header/HeaderFeatures/HeaderFeatures.tsx @@ -52,7 +52,7 @@ const HeaderFeatures = () => {
+
+
+
+
+
+
+ {division} +
+
+
+ [{name}] +
+
+
+
+
+ {/* FIXME: 색상 추가 */} +
+ {short_address} +
+
+ {start_date.replaceAll("-", ".").split(".")[1]}. + {/* FIXME:수정 */} + {/* {start_date.replaceAll("-", ".").split(".")[2]}({day_of_week}){" "} */} + {/* TODO: time to 오전 오후 시간 */} + {Number(time.split(":")[0]) / 12 ? "오후" : "오전"}{" "} + {Number(time.split(":")[0]) % 12}: + {time.split(":")[1].slice(0, 2)} +
+
+
+
+
+
+ ); +}; + +export default DisabledHomeLectureCard; diff --git a/src/entities/lecture/ui/LectureCard/HomeLectureCard/DisabledHomeLectureCard/index.ts b/src/entities/lecture/ui/LectureCard/HomeLectureCard/DisabledHomeLectureCard/index.ts new file mode 100644 index 0000000..b47b381 --- /dev/null +++ b/src/entities/lecture/ui/LectureCard/HomeLectureCard/DisabledHomeLectureCard/index.ts @@ -0,0 +1 @@ +export { default as DisabledHomeLectureCard } from "./DisabledHomeLectureCard"; diff --git a/src/entities/lecture/ui/LectureCard/PickLectureCard/DisabledPickLectureCard/DisabledPickLectureCard.tsx b/src/entities/lecture/ui/LectureCard/PickLectureCard/DisabledPickLectureCard/DisabledPickLectureCard.tsx new file mode 100644 index 0000000..0e62916 --- /dev/null +++ b/src/entities/lecture/ui/LectureCard/PickLectureCard/DisabledPickLectureCard/DisabledPickLectureCard.tsx @@ -0,0 +1,120 @@ +import { LectureInfo, PickLectureInfo } from "@/entities/lecture/model/lecture"; +import { useEffect, useState } from "react"; + +import { Button } from "@/shared/ui"; +import { HeartsLectureListResDataInfo } from "@/features/like/model/like"; +import Image from "next/image"; +import Link from "next/link"; + +interface PickLectureCardProps { + lectureData: LectureInfo | PickLectureInfo | HeartsLectureListResDataInfo; +} + +const DisabledPickLectureCard = (props: PickLectureCardProps) => { + const { lectureData } = props; + + const { thumbnail, name, time, short_address, heart, start_date, division } = + lectureData; + + const [dimensions, setDimensions] = useState({ width: 384, height: 280 }); + + useEffect(() => { + const handleResize = () => { + if (window.innerWidth < 768) { + setDimensions({ width: 312, height: 190 }); + } else if (window.innerWidth < 1440) { + setDimensions({ width: 344, height: 256 }); + } else { + setDimensions({ width: 384, height: 280 }); + } + }; + + window.addEventListener("resize", handleResize); + + // 초기 크기 설정 + handleResize(); + + return () => { + window.removeEventListener("resize", handleResize); + }; + }, []); + + return ( +
+
+
+
+ thumbnail +
{`문화`}
+
+ +
+
+
+ 마감 +
+
+
+
+
+
+
+ {division} +
+
+
+ [{name}] +
+
+
+
+
+ {/* FIXME: 색상 추가 */} +
+ {short_address} +
+
+ {start_date.replaceAll("-", ".").split(".")[1]}. + {start_date.replaceAll("-", ".").split(".")[2]}{" "} + {/* TODO: ({day_of_week}){" "} */} + {/* TODO: time to 오전 오후 시간 */} + {Number(time.split(":")[0]) / 12 ? "오후" : "오전"}{" "} + {Number(time.split(":")[0]) % 12}: + {time.split(":")[1].slice(0, 2)} +
+
+
+
+
+
+ ); +}; + +export default DisabledPickLectureCard; diff --git a/src/entities/lecture/ui/LectureCard/PickLectureCard/DisabledPickLectureCard/index.ts b/src/entities/lecture/ui/LectureCard/PickLectureCard/DisabledPickLectureCard/index.ts new file mode 100644 index 0000000..1a2302a --- /dev/null +++ b/src/entities/lecture/ui/LectureCard/PickLectureCard/DisabledPickLectureCard/index.ts @@ -0,0 +1 @@ +export { default as DisabledPickLectureCard } from "./DisabledPickLectureCard"; diff --git a/src/entities/lecture/ui/LectureCard/PickLectureCard/index.ts b/src/entities/lecture/ui/LectureCard/PickLectureCard/index.ts index 3ed864b..78f1042 100644 --- a/src/entities/lecture/ui/LectureCard/PickLectureCard/index.ts +++ b/src/entities/lecture/ui/LectureCard/PickLectureCard/index.ts @@ -1 +1,2 @@ export { default as PickLectureCard } from "./PickLectureCard"; +export * from "./DisabledPickLectureCard"; From 3041f1cc396f45fc171d688721a40cb1c1e34690 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 16:00:43 +0900 Subject: [PATCH 18/25] =?UTF-8?q?=E2=9C=A8=20feat:=20update=20like=20lectu?= =?UTF-8?q?re=20api=20state=20and=20authentication=20login=20user?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HomeLectureCard/HomeLectureCard.tsx | 154 ++++++++++++---- .../ui/LectureCard/HomeLectureCard/index.ts | 1 + .../PickLectureCard/PickLectureCard.tsx | 142 +++++++++++---- .../ui/LectureFooter/LectureFooter.tsx | 170 +++++++++++------- .../ui/LectureImageInfo/LectureImageInfo.tsx | 149 +++++++++++---- 5 files changed, 449 insertions(+), 167 deletions(-) diff --git a/src/entities/lecture/ui/LectureCard/HomeLectureCard/HomeLectureCard.tsx b/src/entities/lecture/ui/LectureCard/HomeLectureCard/HomeLectureCard.tsx index 796bb75..257e683 100644 --- a/src/entities/lecture/ui/LectureCard/HomeLectureCard/HomeLectureCard.tsx +++ b/src/entities/lecture/ui/LectureCard/HomeLectureCard/HomeLectureCard.tsx @@ -1,13 +1,21 @@ +import "moment/locale/ko"; + +import { Button, UnifiedDialog } from "@/shared/ui"; import { LectureInfo, PickLectureInfo } from "@/entities/lecture/model/lecture"; import { MouseEvent, useEffect, useState } from "react"; -import { Button } from "@/shared/ui"; +import { DisabledHomeLectureCard } from "./DisabledHomeLectureCard"; import { HeartsLectureListResDataInfo } from "@/features/like/model/like"; import Image from "next/image"; import Link from "next/link"; +import { getCookie } from "cookies-next"; +import moment from "moment"; import { toast } from "sonner"; import useDeleteLikeLecture from "@/features/like/api/useDeleteLikeLecture"; import usePostLikeLecture from "@/features/like/api/usePostLikeLecture"; +import { useRouter } from "next/navigation"; + +moment.locale("ko"); interface HomeLectureCardProps { lectureData: LectureInfo | PickLectureInfo | HeartsLectureListResDataInfo; @@ -23,20 +31,36 @@ const HomeLectureCard = (props: HomeLectureCardProps) => { time, target, status, - address, + long_address, + short_address, division, link, - heart, + heart: initialHeart, start_date, end_date, day_of_week, } = lectureData; const [dimensions, setDimensions] = useState({ width: 384, height: 280 }); + const [openLoginDialog, setOpenLoginDialog] = useState(false); + const [isHovered, setIsHovered] = useState(false); + const [isHoveredFilled, setIsHoveredFilled] = useState(true); + const [heart, setHeart] = useState(initialHeart); const postLikeLecture = usePostLikeLecture(id); const deleteLikeLecture = useDeleteLikeLecture(id); + const router = useRouter(); + const token = getCookie("accessToken"); + + const dateString = start_date.replaceAll("-", "."); + + // Moment 객체 생성 + const date = moment(dateString, "YYYY.MM.DD"); + + // 요일 가져오기 (예: "요일" 표시) + const shortDayOfWeek = date.format("ddd"); // 짧은 요일 이름 (예: "Wed") + useEffect(() => { const handleResize = () => { if (window.innerWidth < 768) { @@ -58,11 +82,21 @@ const HomeLectureCard = (props: HomeLectureCardProps) => { }; }, []); + const linkToLogin = () => { + setOpenLoginDialog(false); + router.push("/login"); + }; + const handleLikeClick = (e: MouseEvent) => { e.stopPropagation(); e.preventDefault(); - - if (lectureData.heart === true) { + if (!token) { + // DIALOG OPEN + setOpenLoginDialog(true); + return; + } + if (heart === true) { + setHeart(false); deleteLikeLecture.mutate( { lectureId: id, @@ -71,10 +105,14 @@ const HomeLectureCard = (props: HomeLectureCardProps) => { onSuccess: () => { toast("좋아요 삭제 성공"); }, + onError: () => { + setHeart(true); + }, }, ); } - if (lectureData.heart === false) { + if (heart === false) { + setHeart(true); postLikeLecture.mutate( { lectureId: id, @@ -83,11 +121,71 @@ const HomeLectureCard = (props: HomeLectureCardProps) => { onSuccess: () => { toast("좋아요 성공"); }, + onError: () => { + setHeart(false); + }, }, ); } }; + const triggerItem = () => { + return ( + + ); + }; + + const dialogContent = () => { + return ( +
+
+
+ 로그인이 필요한 +
+
서비스에요
+
+
+ +
+
+ ); + }; + + if (lectureData.status === false) { + return ; + } + return ( { className="object-cover desktop:w-[384px] tablet:w-[280px] mobile:w-[240px] desktop:h-[280px] tablet:h-[188px] mobile:h-[168px]" />
{`문화`}
-
- +
{ + e.stopPropagation(); + e.preventDefault(); + }} + > +
@@ -146,12 +236,12 @@ const HomeLectureCard = (props: HomeLectureCardProps) => {
{/* FIXME: 색상 추가 */}
- {address} + {short_address}
{start_date.replaceAll("-", ".").split(".")[1]}. - {start_date.replaceAll("-", ".").split(".")[2]}({day_of_week}){" "} - {/* TODO: time to 오전 오후 시간 */} + {start_date.replaceAll("-", ".").split(".")[2]} + {`(${shortDayOfWeek})`} {Number(time.split(":")[0]) / 12 ? "오후" : "오전"}{" "} {Number(time.split(":")[0]) % 12}: {time.split(":")[1].slice(0, 2)} diff --git a/src/entities/lecture/ui/LectureCard/HomeLectureCard/index.ts b/src/entities/lecture/ui/LectureCard/HomeLectureCard/index.ts index 06254fe..1b4f0b5 100644 --- a/src/entities/lecture/ui/LectureCard/HomeLectureCard/index.ts +++ b/src/entities/lecture/ui/LectureCard/HomeLectureCard/index.ts @@ -1 +1,2 @@ export { default as HomeLectureCard } from "./HomeLectureCard"; +export * from "./HomeLectureCard"; diff --git a/src/entities/lecture/ui/LectureCard/PickLectureCard/PickLectureCard.tsx b/src/entities/lecture/ui/LectureCard/PickLectureCard/PickLectureCard.tsx index 41de6bd..b089a51 100644 --- a/src/entities/lecture/ui/LectureCard/PickLectureCard/PickLectureCard.tsx +++ b/src/entities/lecture/ui/LectureCard/PickLectureCard/PickLectureCard.tsx @@ -1,13 +1,17 @@ +import { Button, UnifiedDialog } from "@/shared/ui"; import { LectureInfo, PickLectureInfo } from "@/entities/lecture/model/lecture"; import { MouseEvent, useEffect, useState } from "react"; -import { Button } from "@/shared/ui"; +import { DisabledHomeLectureCard } from "../HomeLectureCard/DisabledHomeLectureCard"; +import { DisabledPickLectureCard } from "./DisabledPickLectureCard"; import { HeartsLectureListResDataInfo } from "@/features/like/model/like"; import Image from "next/image"; import Link from "next/link"; +import { getCookie } from "cookies-next"; import { toast } from "sonner"; import useDeleteLikeLecture from "@/features/like/api/useDeleteLikeLecture"; import usePostLikeLecture from "@/features/like/api/usePostLikeLecture"; +import { useRouter } from "next/navigation"; interface PickLectureCardProps { lectureData: LectureInfo | PickLectureInfo | HeartsLectureListResDataInfo; @@ -24,9 +28,10 @@ const PickLectureCard = (props: PickLectureCardProps) => { time, target, status, - address, + long_address, + short_address, link, - heart, + heart: initialHeart, start_date, end_date, day_of_week, @@ -34,10 +39,17 @@ const PickLectureCard = (props: PickLectureCardProps) => { } = lectureData; const [dimensions, setDimensions] = useState({ width: 384, height: 280 }); + const [openLoginDialog, setOpenLoginDialog] = useState(false); + const [isHovered, setIsHovered] = useState(false); + const [isHoveredFilled, setIsHoveredFilled] = useState(true); + const [heart, setHeart] = useState(initialHeart); const postLikeLecture = usePostLikeLecture(id); const deleteLikeLecture = useDeleteLikeLecture(id); + const router = useRouter(); + const token = getCookie("accessToken"); + useEffect(() => { const handleResize = () => { if (window.innerWidth < 768) { @@ -59,11 +71,21 @@ const PickLectureCard = (props: PickLectureCardProps) => { }; }, []); + const linkToLogin = () => { + setOpenLoginDialog(false); + router.push("/login"); + }; + const handleLikeClick = (e: MouseEvent) => { e.stopPropagation(); e.preventDefault(); - - if (lectureData.heart === true) { + if (!token) { + // DIALOG OPEN + setOpenLoginDialog(true); + return; + } + if (heart === true) { + setHeart(false); deleteLikeLecture.mutate( { lectureId: id, @@ -72,10 +94,14 @@ const PickLectureCard = (props: PickLectureCardProps) => { onSuccess: () => { toast("좋아요 삭제 성공"); }, + onError: () => { + setHeart(true); + }, }, ); } - if (lectureData.heart === false) { + if (heart === false) { + setHeart(true); postLikeLecture.mutate( { lectureId: id, @@ -84,10 +110,71 @@ const PickLectureCard = (props: PickLectureCardProps) => { onSuccess: () => { toast("좋아요 성공"); }, + onError: () => { + setHeart(false); + }, }, ); } }; + + const triggerItem = () => { + return ( + + ); + }; + + const dialogContent = () => { + return ( +
+
+
+ 로그인이 필요한 +
+
서비스에요
+
+
+ +
+
+ ); + }; + + if (lectureData.status === false) { + return ; + } + return ( { className="object-cover desktop:w-[384px] tablet:w-[344px] mobile:w-[312px] desktop:h-[280px] tablet:h-[256px] mobile:h-[190px]" />
{`문화`}
-
- +
{ + e.stopPropagation(); + e.preventDefault(); + }} + > +
@@ -146,11 +225,12 @@ const PickLectureCard = (props: PickLectureCardProps) => {
{/* FIXME: 색상 추가 */}
- {address} + {short_address}
{start_date.replaceAll("-", ".").split(".")[1]}. - {start_date.replaceAll("-", ".").split(".")[2]}({day_of_week}){" "} + {start_date.replaceAll("-", ".").split(".")[2]}{" "} + {/* TODO: ({day_of_week}){" "} */} {/* TODO: time to 오전 오후 시간 */} {Number(time.split(":")[0]) / 12 ? "오후" : "오전"}{" "} {Number(time.split(":")[0]) % 12}: diff --git a/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx b/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx index a635a8f..7541747 100644 --- a/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx +++ b/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx @@ -1,23 +1,33 @@ "use client"; import { Button, IconButton, Skeleton, UnifiedDialog } from "@/shared/ui"; +import { Dispatch, SetStateAction, useState } from "react"; -import Image from "next/image"; import { Lecture } from "../../model/lecture"; import { getCookie } from "cookies-next"; import { toast } from "sonner"; import useDeleteLikeLecture from "@/features/like/api/useDeleteLikeLecture"; import usePostLikeLecture from "@/features/like/api/usePostLikeLecture"; import { useRouter } from "next/navigation"; -import { useState } from "react"; interface LectureFooterProps { - lectureInfo?: Lecture; + lectureInfo: Lecture; isLoading: boolean; + heart: boolean; + setHeart: Dispatch>; } -const LectureFooter = ({ lectureInfo, isLoading }: LectureFooterProps) => { - const [open, setOpen] = useState(false); +const LectureFooter = ({ + lectureInfo, + isLoading, + heart, + setHeart, +}: LectureFooterProps) => { + const [openApplyDialog, setOpenApplyDialog] = useState(false); + const [openApplyLoginDialog, setOpenApplyLoginDialog] = + useState(false); + const [openLoginDialog, setOpenLoginDialog] = useState(false); + const token = getCookie("accessToken"); const router = useRouter(); @@ -39,39 +49,78 @@ const LectureFooter = ({ lectureInfo, isLoading }: LectureFooterProps) => { }; const handleLikeLecture = () => { - if (lectureInfo) { - // TODO: 좋아요 API TEST - if (lectureInfo.heart === true) { - deleteLikeLecture.mutate( - { - lectureId: lectureInfo.id, + if (heart === true) { + setHeart(false); + deleteLikeLecture.mutate( + { + lectureId: lectureInfo.id, + }, + { + onSuccess: () => { + toast("좋아요 삭제 성공"); }, - { - onSuccess: () => { - toast("좋아요 삭제 성공"); - }, + onError: () => { + setHeart(true); }, - ); - } - if (lectureInfo.heart === false) { - postLikeLecture.mutate( - { - lectureId: lectureInfo.id, + }, + ); + } + if (heart === false) { + setHeart(true); + postLikeLecture.mutate( + { + lectureId: lectureInfo.id, + }, + { + onSuccess: () => { + toast("좋아요 성공"); }, - { - onSuccess: () => { - toast("좋아요 성공"); - }, + onError: () => { + setHeart(false); }, - ); - } + }, + ); } }; + const triggerLoginItem = () => { + return heart ? ( +
{ + e.stopPropagation(); + e.preventDefault(); + }} + > + +
+ ) : ( +
{ + e.preventDefault(); + e.stopPropagation(); + }} + > + +
+ ); + }; + const triggerItem = () => { return (
-
+
신청하러 가기
@@ -87,7 +136,7 @@ const LectureFooter = ({ lectureInfo, isLoading }: LectureFooterProps) => {
- ); - } if (!token) { return ( { /> ); } - if (!token && lectureInfo && lectureInfo.status === false) { + if (token && lectureInfo && lectureInfo.status === false) { return ( { /> ); } + if (lectureInfo && lectureInfo.link && token && lectureInfo.status) { + return ( + + ); + } }; return ( -
+
- {lectureInfo && lectureInfo.heart === true ? ( - - ) : ( - - )} +
- {isLoading && } {lectureInfo && (
{lectureInfo.price}
)} - {isLoading && ( - - )} {renderApplyButton()}
); diff --git a/src/entities/lecture/ui/LectureImageInfo/LectureImageInfo.tsx b/src/entities/lecture/ui/LectureImageInfo/LectureImageInfo.tsx index 59e623d..72461c6 100644 --- a/src/entities/lecture/ui/LectureImageInfo/LectureImageInfo.tsx +++ b/src/entities/lecture/ui/LectureImageInfo/LectureImageInfo.tsx @@ -1,29 +1,49 @@ -import { Button, Skeleton } from "@/shared/ui"; +"use client"; + +import { Button, UnifiedDialog } from "@/shared/ui"; +import { Dispatch, SetStateAction, useState } from "react"; import Image from "next/image"; import { Lecture } from "../../model/lecture"; +import { getCookie } from "cookies-next"; import { toast } from "sonner"; import useDeleteLikeLecture from "@/features/like/api/useDeleteLikeLecture"; import usePostLikeLecture from "@/features/like/api/usePostLikeLecture"; +import { useRouter } from "next/navigation"; interface LectureImageInfoProps { - lectureInfo?: Lecture; + lectureInfo: Lecture; isLoading: boolean; + heart: boolean; + setHeart: Dispatch>; } const LectureImageInfo = ({ lectureInfo, isLoading, + heart, + setHeart, }: LectureImageInfoProps) => { + const [openLoginDialog, setOpenLoginDialog] = useState(false); + const [isHovered, setIsHovered] = useState(false); + const [isHoveredFilled, setIsHoveredFilled] = useState(true); + const postLikeLecture = usePostLikeLecture(lectureInfo ? lectureInfo.id : -1); const deleteLikeLecture = useDeleteLikeLecture( lectureInfo ? lectureInfo.id : -1, ); + const router = useRouter(); + const token = getCookie("accessToken"); + const handleLikeLecture = () => { + if (!token) { + setOpenLoginDialog(true); + return; + } if (lectureInfo) { - // TODO: 좋아요 API TEST 필요 - if (lectureInfo.heart === true) { + if (heart === true) { + setHeart(false); deleteLikeLecture.mutate( { lectureId: lectureInfo.id, @@ -32,10 +52,14 @@ const LectureImageInfo = ({ onSuccess: () => { toast("좋아요 삭제 성공"); }, + onError: () => { + setHeart(true); + }, }, ); } - if (lectureInfo.heart === false) { + if (heart === false) { + setHeart(true); postLikeLecture.mutate( { lectureId: lectureInfo.id, @@ -44,54 +68,105 @@ const LectureImageInfo = ({ onSuccess: () => { toast("좋아요 성공"); }, + onError: () => { + setHeart(false); + }, }, ); } } }; + const linkToLogin = () => { + setOpenLoginDialog(false); + router.push("/login"); + }; + + const triggerItem = () => { + return ( +
{ + e.stopPropagation(); + e.preventDefault(); + }} + > + +
+ ); + }; + + const dialogContent = () => { + return ( +
+
+
+ 로그인이 필요한 +
+
서비스에요
+
+
+ +
+
+ ); + }; + return (
{lectureInfo && (
- 문화 + {lectureInfo.category && lectureInfo.category !== "미정" + ? lectureInfo.category + : "문화"}
)} - {/* TODO: 몇 일 남았는지 계산하는 로직 필요 */} {lectureInfo && (
- 7일 남음 -
- )} - {lectureInfo && ( -
- + {lectureInfo.d_day}일 남음
)} - {isLoading && ( - - )} + {lectureInfo && ( Date: Sat, 12 Oct 2024 16:01:09 +0900 Subject: [PATCH 19/25] =?UTF-8?q?=E2=9C=A8=20feat:=20update=20layout=20mar?= =?UTF-8?q?gin=20and=20max=20width?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index ecfbf47..f5eadb1 100755 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -37,7 +37,7 @@ export default function RootLayout({
-
+
{children} From 8aba003c770fc04d4856439ed0415be1c1ac8633 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 16:01:48 +0900 Subject: [PATCH 20/25] =?UTF-8?q?=F0=9F=90=9B=20fix:=20delete=20dist=20par?= =?UTF-8?q?ams=20and=20update=20progress=20design?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index 1ee2e3e..8c0eb86 100755 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -23,6 +23,7 @@ import { useCarouselApi } from "@/shared/lib/useCarouselApi"; import { useGeoLocation } from "@/shared/lib/useGeolocation"; import useHomeLectureList from "@/entities/lecture/api/useHomeLectureList"; import useLoginedUserStore from "@/shared/store/user"; +import usePostLikeLecture from "@/features/like/api/usePostLikeLecture"; import { useRouter } from "next/navigation"; const Home = () => { @@ -32,7 +33,7 @@ const Home = () => { const [lectureSize, setLectureSize] = useState({ page: 0, size: 9, - dist: 500, + // dist: 500, }); const [user, setUser] = useState({ id: 0, @@ -95,6 +96,7 @@ const Home = () => { }; }); } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [geolocation.curLocation]); @@ -105,7 +107,7 @@ const Home = () => { params: { page: lectureSize.page, size: lectureSize.size, - dist: lectureSize.dist, + // dist: lectureSize.dist, }, payload: { latitude: user.latitude, @@ -158,7 +160,10 @@ const Home = () => { isPreviousIcon />
- +
{`${current}`}
{`/ ${count}`}
@@ -194,9 +199,6 @@ const Home = () => { ); }; - // TODO: 캐러셀 - // TODO: 캐러셀 더 불러오기 상태관리 - return (
From 64cb2c8b00f835c931821f967e6610895c3a51b4 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 16:02:46 +0900 Subject: [PATCH 21/25] =?UTF-8?q?=F0=9F=90=9B=20fix:=20delete=20dist=20par?= =?UTF-8?q?ams=20in=20entire,=20like=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/entire/page.tsx | 4 ++-- src/app/like/page.tsx | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/entire/page.tsx b/src/app/entire/page.tsx index a5a7d07..3326752 100755 --- a/src/app/entire/page.tsx +++ b/src/app/entire/page.tsx @@ -21,7 +21,7 @@ const EntirePage = () => { const [lectureSize, setLectureSize] = useState({ page: 0, size: 9, - dist: 500, + // dist: 500, }); const [hasNext, setHasNext] = useState(true); @@ -41,7 +41,7 @@ const EntirePage = () => { params: { page: lectureSize.page, size: lectureSize.size, - dist: lectureSize.dist, + // dist: lectureSize.dist, }, payload: { latitude: user.latitude, longitude: user.longitude }, }, diff --git a/src/app/like/page.tsx b/src/app/like/page.tsx index f53e2f2..f3bacea 100755 --- a/src/app/like/page.tsx +++ b/src/app/like/page.tsx @@ -15,9 +15,9 @@ const LikePage = () => { const [lectureListData, setLectureListData] = useState(); const [lectureSize, setLectureSize] = useState({ - page: 1, - size: 2, - dist: 500, + page: 0, + size: 9, + // dist: 500, }); const [hasNext, setHasNext] = useState(true); @@ -28,7 +28,7 @@ const LikePage = () => { const { data, isLoading, isSuccess } = useLikeLectureList({ page: lectureSize.page, size: lectureSize.size, - dist: lectureSize.dist, + // dist: lectureSize.dist, }); useEffect(() => { From f1e18846e06c9ab67f9a49136955e536443a18e2 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 16:03:16 +0900 Subject: [PATCH 22/25] =?UTF-8?q?=F0=9F=90=9B=20fix:=20update=20lecture=20?= =?UTF-8?q?info=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/class/[id]/page.tsx | 67 ++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/src/app/class/[id]/page.tsx b/src/app/class/[id]/page.tsx index 967d987..8537ca1 100755 --- a/src/app/class/[id]/page.tsx +++ b/src/app/class/[id]/page.tsx @@ -1,5 +1,6 @@ "use client"; +import { IconButton, Skeleton } from "@/shared/ui"; import { Lecture, LecturePayload } from "@/entities/lecture/model/lecture"; import { LectureDetail, @@ -22,6 +23,7 @@ const LectureInfoPage = () => { const [lectureInfo, setLectureInfo] = useState(); const [user, setUser] = useState(); const [windowInnerWidth, setWindowInnerWidth] = useState(); + const [heart, setHeart] = useState(false); const { id } = useParams(); @@ -54,6 +56,7 @@ const LectureInfoPage = () => { { onSuccess: (data) => { setLectureInfo(data.data.data); + setHeart(data.data.data.heart); }, }, ); @@ -106,7 +109,17 @@ const LectureInfoPage = () => { return (
- + {isLoading && ( + + )} + {lectureInfo && ( + + )}
@@ -121,7 +134,17 @@ const LectureInfoPage = () => {
- + {isLoading && ( + + )} + {lectureInfo && ( + + )}
@@ -136,7 +159,17 @@ const LectureInfoPage = () => { return (
- + {isLoading && ( + + )} + {lectureInfo && ( + + )}
@@ -158,7 +191,33 @@ const LectureInfoPage = () => {
{renderSummary()} - + {isLoading && ( +
+
+ + + +
+
+ +
+ +
+ )} + {lectureInfo && ( + + )}
); }; From b204632d83bb2e991081944d55055f6f65a08d1a Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 16:04:09 +0900 Subject: [PATCH 23/25] =?UTF-8?q?=F0=9F=92=8E=20style:=20update=20button?= =?UTF-8?q?=20hover=20bg=20color?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/signup/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/signup/page.tsx b/src/app/signup/page.tsx index b361f20..3e24e69 100755 --- a/src/app/signup/page.tsx +++ b/src/app/signup/page.tsx @@ -136,7 +136,7 @@ const SignUpPage = () => { )} />
{/* TODO: 연령대, 주소 조건문 처리 */}
- {loginedUser.age_range}대, {loginedUser.location} + {userAgeMap[loginedUser.age_range]}대, {loginedUser.location}
@@ -354,7 +358,7 @@ const UserInfoPage = () => { disabled={ !isEmpty(errors.nickname) || !isEmpty(errors.address) } - className="desktop:w-[400px] tablet:w-[400px] mobile:w-[260px] h-14 font-semibold text-2xl bg-custom-purple hover:bg-purple-950 rounded-md" + className="desktop:w-[400px] tablet:w-[400px] mobile:w-[260px] h-14 font-semibold text-2xl bg-custom-purple hover:bg-custom-hoverPurple rounded-md" > 저장하기 From 358aab09049b77752b8bbe306be8715205552130 Mon Sep 17 00:00:00 2001 From: Lawrene Jang Date: Sat, 12 Oct 2024 16:14:17 +0900 Subject: [PATCH 25/25] =?UTF-8?q?=F0=9F=90=9B=20fix:=20update=20lecture=20?= =?UTF-8?q?footer=20render=20like=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/LectureFooter/LectureFooter.tsx | 70 +++++++++---------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx b/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx index 7541747..93ffff2 100644 --- a/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx +++ b/src/entities/lecture/ui/LectureFooter/LectureFooter.tsx @@ -85,35 +85,21 @@ const LectureFooter = ({ const triggerLoginItem = () => { return heart ? ( -
{ - e.stopPropagation(); - e.preventDefault(); - }} - > - -
+ ) : ( -
{ - e.preventDefault(); - e.stopPropagation(); - }} - > - -
+ ); }; @@ -168,6 +154,25 @@ const LectureFooter = ({ ); }; + const renderLikeIcon = () => { + if (!token) { + return ( + + ); + } + + if (token) { + return triggerLoginItem(); + } + }; + const renderApplyButton = () => { if (!token) { return ( @@ -208,14 +213,7 @@ const LectureFooter = ({ return (
- + {renderLikeIcon()}
{lectureInfo && (