From d15f235073df2ec5e86799285e1c0be7aaefb48b Mon Sep 17 00:00:00 2001 From: JinJeongMin Date: Tue, 2 Jan 2024 19:20:07 +0900 Subject: [PATCH 01/13] feat: create detail page components --- src/components/BottomFixedBtn/BottomFixedBtn.tsx | 0 src/components/Review/Review.tsx | 0 src/pages/Detail/Contents/Contents.tsx | 0 src/pages/Detail/Contents/Information/Information.tsx | 0 src/pages/Detail/Contents/Information/Map/Map.tsx | 0 src/pages/Detail/Contents/Information/Others/Others.tsx | 0 .../Detail/Contents/Information/Reservation/Reservation.tsx | 0 src/pages/Detail/Contents/Reviews/Reviews.tsx | 0 src/pages/Detail/Detail.module.scss | 0 src/pages/Detail/Main/Main.tsx | 0 src/pages/Detail/Main/Swiper/Swiper.tsx | 0 src/pages/Detail/Main/Title/Title.tsx | 0 src/pages/Detail/Navigation/Navigation.tsx | 0 src/pages/Detail/index.tsx | 5 +++++ 14 files changed, 5 insertions(+) create mode 100644 src/components/BottomFixedBtn/BottomFixedBtn.tsx create mode 100644 src/components/Review/Review.tsx create mode 100644 src/pages/Detail/Contents/Contents.tsx create mode 100644 src/pages/Detail/Contents/Information/Information.tsx create mode 100644 src/pages/Detail/Contents/Information/Map/Map.tsx create mode 100644 src/pages/Detail/Contents/Information/Others/Others.tsx create mode 100644 src/pages/Detail/Contents/Information/Reservation/Reservation.tsx create mode 100644 src/pages/Detail/Contents/Reviews/Reviews.tsx create mode 100644 src/pages/Detail/Detail.module.scss create mode 100644 src/pages/Detail/Main/Main.tsx create mode 100644 src/pages/Detail/Main/Swiper/Swiper.tsx create mode 100644 src/pages/Detail/Main/Title/Title.tsx create mode 100644 src/pages/Detail/Navigation/Navigation.tsx create mode 100644 src/pages/Detail/index.tsx diff --git a/src/components/BottomFixedBtn/BottomFixedBtn.tsx b/src/components/BottomFixedBtn/BottomFixedBtn.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/components/Review/Review.tsx b/src/components/Review/Review.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Contents/Contents.tsx b/src/pages/Detail/Contents/Contents.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Contents/Information/Information.tsx b/src/pages/Detail/Contents/Information/Information.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Contents/Information/Map/Map.tsx b/src/pages/Detail/Contents/Information/Map/Map.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Contents/Information/Others/Others.tsx b/src/pages/Detail/Contents/Information/Others/Others.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Contents/Information/Reservation/Reservation.tsx b/src/pages/Detail/Contents/Information/Reservation/Reservation.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Contents/Reviews/Reviews.tsx b/src/pages/Detail/Contents/Reviews/Reviews.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Detail.module.scss b/src/pages/Detail/Detail.module.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Main/Main.tsx b/src/pages/Detail/Main/Main.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Main/Swiper/Swiper.tsx b/src/pages/Detail/Main/Swiper/Swiper.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Main/Title/Title.tsx b/src/pages/Detail/Main/Title/Title.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/Navigation/Navigation.tsx b/src/pages/Detail/Navigation/Navigation.tsx new file mode 100644 index 00000000..e69de29b diff --git a/src/pages/Detail/index.tsx b/src/pages/Detail/index.tsx new file mode 100644 index 00000000..110deb98 --- /dev/null +++ b/src/pages/Detail/index.tsx @@ -0,0 +1,5 @@ +function Detail() { + return
Detail
; +} + +export default Detail; From b53be3d16bc8cb46a757632018e421f64a5f7255 Mon Sep 17 00:00:00 2001 From: JinJeongMin Date: Tue, 2 Jan 2024 19:22:17 +0900 Subject: [PATCH 02/13] feat: set detail page route --- .../GlobalNavigationBar/GlobalNavigationBar.module.scss | 1 - src/routes/MainRouter/MainRouter.tsx | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss b/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss index f80aa439..4be8be5d 100644 --- a/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss +++ b/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss @@ -8,7 +8,6 @@ height: 56px; display: flex; - justify-content: space-around; box-shadow: 0px -2px 8px 0px rgba(20, 20, 20, 0.04), 0px -1px 1px 0px rgba(20, 20, 20, 0.02); diff --git a/src/routes/MainRouter/MainRouter.tsx b/src/routes/MainRouter/MainRouter.tsx index f003ad09..b81168ab 100644 --- a/src/routes/MainRouter/MainRouter.tsx +++ b/src/routes/MainRouter/MainRouter.tsx @@ -1,7 +1,8 @@ import { Route, Routes } from "react-router-dom"; -import Dashboard from "../Dashboard/Dashboard"; -import Home from "../../pages/Home/Home"; +import Detail from "@/pages/Detail"; +import Home from "@/pages/Home/Home"; +import Dashboard from "@/routes/Dashboard/Dashboard"; function MainRouter() { return ( @@ -12,6 +13,7 @@ function MainRouter() { } /> } /> + } /> ); } From 36d37c193007d3019150da71943b1d5fb13e8300 Mon Sep 17 00:00:00 2001 From: JinJeongMin Date: Fri, 5 Jan 2024 14:16:35 +0900 Subject: [PATCH 03/13] feat: create detail markup --- .../GlobalNavigationBar.module.scss | 3 +- src/components/Review/Review.module.scss | 55 +++++++ src/components/Review/Review.tsx | 59 +++++++ .../ReviewImageSlider.module.scss | 56 +++++++ .../ReviewImageSlider/ReviewImageSlider.tsx | 50 ++++++ src/hooks/useComponetSize.ts | 32 ++++ .../BottomFixedBtn/BottomFixedBtn.module.scss | 29 ++++ .../Detail/BottomFixedBtn/BottomFixedBtn.tsx | 16 ++ .../Detail/Contents/Contents.module.scss | 16 ++ src/pages/Detail/Contents/Contents.tsx | 40 +++++ .../BasicInformation.module.scss | 42 +++++ .../BasicInformation/BasicInformation.tsx | 38 +++++ .../BasicInformation/Map/Map.module.scss | 10 ++ .../Information/BasicInformation/Map/Map.tsx | 7 + .../Information/Information.module.scss} | 0 .../Contents/Information/Information.tsx | 15 ++ .../Detail/Contents/Information/Map/Map.tsx | 0 .../Others/OtherCard/OtherCard.module.scss | 56 +++++++ .../Others/OtherCard/OtherCard.tsx | 36 +++++ .../Information/Others/Others.module.scss | 70 ++++++++ .../Contents/Information/Others/Others.tsx | 107 +++++++++++++ .../Information/Reservation/Reservation.tsx | 5 + .../ShortReveiws/ShortReviews.module.scss | 90 +++++++++++ .../Information/ShortReveiws/ShortReviews.tsx | 73 +++++++++ src/pages/Detail/Contents/Reviews/Reviews.tsx | 149 ++++++++++++++++++ .../Contents/Reviews/Rviews.module.scss | 90 +++++++++++ src/pages/Detail/Detail.module.scss | 6 + src/pages/Detail/Main/Main.module.scss | 3 + src/pages/Detail/Main/Main.tsx | 15 ++ .../Detail/Main/Swiper/Swiper.module.scss | 10 ++ src/pages/Detail/Main/Swiper/Swiper.tsx | 7 + src/pages/Detail/Main/Title/Title.module.scss | 59 +++++++ src/pages/Detail/Main/Title/Title.tsx | 31 ++++ .../Detail/Navigation/Navigation.module.scss | 16 ++ src/pages/Detail/Navigation/Navigation.tsx | 18 +++ src/pages/Detail/index.tsx | 17 +- 36 files changed, 1324 insertions(+), 2 deletions(-) create mode 100644 src/components/Review/Review.module.scss create mode 100644 src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss create mode 100644 src/components/Review/ReviewImageSlider/ReviewImageSlider.tsx create mode 100644 src/hooks/useComponetSize.ts create mode 100644 src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss create mode 100644 src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx create mode 100644 src/pages/Detail/Contents/Contents.module.scss create mode 100644 src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss create mode 100644 src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx create mode 100644 src/pages/Detail/Contents/Information/BasicInformation/Map/Map.module.scss create mode 100644 src/pages/Detail/Contents/Information/BasicInformation/Map/Map.tsx rename src/{components/BottomFixedBtn/BottomFixedBtn.tsx => pages/Detail/Contents/Information/Information.module.scss} (100%) delete mode 100644 src/pages/Detail/Contents/Information/Map/Map.tsx create mode 100644 src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss create mode 100644 src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx create mode 100644 src/pages/Detail/Contents/Information/Others/Others.module.scss create mode 100644 src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss create mode 100644 src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx create mode 100644 src/pages/Detail/Contents/Reviews/Rviews.module.scss create mode 100644 src/pages/Detail/Main/Main.module.scss create mode 100644 src/pages/Detail/Main/Swiper/Swiper.module.scss create mode 100644 src/pages/Detail/Main/Title/Title.module.scss create mode 100644 src/pages/Detail/Navigation/Navigation.module.scss diff --git a/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss b/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss index 4be8be5d..acfa8208 100644 --- a/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss +++ b/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss @@ -1,9 +1,10 @@ @use "@/sass"; .container { - position: absolute; + position: fixed; bottom: 0; + max-width: 500px; width: 100%; height: 56px; diff --git a/src/components/Review/Review.module.scss b/src/components/Review/Review.module.scss new file mode 100644 index 00000000..1efb0184 --- /dev/null +++ b/src/components/Review/Review.module.scss @@ -0,0 +1,55 @@ +@use "@/sass"; + +.container { + display: flex; + gap: 8px; + padding: 24px 20px; + border-bottom: 1px solid sass.$neutral100; + + &__contentsBox { + width: 100%; + + &__name { + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 22px; + } + + &__secondItems { + display: flex; + align-items: center; + + &__star { + display: inline; + font-size: 16px; + color: #fed600; + } + + &__point { + margin-left: 2px; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + } + + &__visitedAt { + margin-left: 9px; + color: sass.$primary300; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + } + } + + &__content { + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 22px; + text-overflow: ellipsis; + } + } +} diff --git a/src/components/Review/Review.tsx b/src/components/Review/Review.tsx index e69de29b..fbce1747 100644 --- a/src/components/Review/Review.tsx +++ b/src/components/Review/Review.tsx @@ -0,0 +1,59 @@ +import { Avatar } from "@chakra-ui/react"; +import { GoStarFill } from "react-icons/go"; + +import styles from "./Review.module.scss"; + +import ReviewImageSlider from "./ReviewImageSlider/ReviewImageSlider"; + +interface ReviewProps { + name: string; + isGoogle: boolean; + point: string; + visitedAt: string; + content: string; + images: string[] | undefined; +} + +function Review({ + name, + isGoogle = false, + point, + visitedAt, + content, + images, +}: ReviewProps) { + return ( +
+
+ +
+
+
+ {name} + {isGoogle && 구글} +
+
+ + + {point} + + + {visitedAt} + +
+
{content}
+ {images && } +
+
+ ); +} + +export default Review; diff --git a/src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss b/src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss new file mode 100644 index 00000000..7c4544f1 --- /dev/null +++ b/src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss @@ -0,0 +1,56 @@ +.container { + overflow: hidden; + position: relative; + + &__imgWrapper { + position: relative; + display: flex; + gap: 8px; + + transition: all 1s; + img { + width: 76px; + height: 76px; + } + } + + &__leftBtn { + position: absolute; + top: 50%; + left: 10px; + transform: translate(-10px, -50%); + + width: 24px; + height: 24px; + border-radius: 12px; + + background-color: #ffffff; + z-index: 2; + &__icon { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + + &__rightBtn { + position: absolute; + top: 50%; + right: 10px; + transform: translate(-10px, -50%); + + width: 24px; + height: 24px; + border-radius: 12px; + + background-color: #ffffff; + z-index: 2; + &__icon { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } +} diff --git a/src/components/Review/ReviewImageSlider/ReviewImageSlider.tsx b/src/components/Review/ReviewImageSlider/ReviewImageSlider.tsx new file mode 100644 index 00000000..07db63a9 --- /dev/null +++ b/src/components/Review/ReviewImageSlider/ReviewImageSlider.tsx @@ -0,0 +1,50 @@ +import { useState } from "react"; +import { AiOutlineLeft, AiOutlineRight } from "react-icons/ai"; + +import styles from "./ReviewImageSlider.module.scss"; + +import useComponentSize from "@/hooks/useComponetSize"; + +function ReviewImageSlider({ images }: { images: string[] }) { + const [slideLocation, setSlideLocation] = useState(0); + const [componentRef, size] = useComponentSize(); + + return ( +
+
{ + setSlideLocation(slideLocation + 84); + }} + > + +
+
= 84 * images.length - 1 - size.width + ? "none" + : "block", + }} + onClick={() => { + setSlideLocation(slideLocation - 84); + }} + > + +
+
+ {images.map((data) => ( + + ))} +
+
+ ); +} + +export default ReviewImageSlider; diff --git a/src/hooks/useComponetSize.ts b/src/hooks/useComponetSize.ts new file mode 100644 index 00000000..4f758af2 --- /dev/null +++ b/src/hooks/useComponetSize.ts @@ -0,0 +1,32 @@ +import { useEffect, useRef, useState } from "react"; + +interface ComponentSize { + width: number; + height: number; +} + +function useComponentSize(): [React.RefObject, ComponentSize] { + const [size, setSize] = useState({ width: 0, height: 0 }); + const componentRef = useRef(null); + + useEffect(() => { + const handleResize = () => { + const { width, height } = + componentRef.current?.getBoundingClientRect() ?? { + width: 0, + height: 0, + }; + setSize({ width, height }); + }; + + handleResize(); + + window.addEventListener("resize", handleResize); + + return () => window.removeEventListener("resize", handleResize); + }, []); + + return [componentRef, size]; +} + +export default useComponentSize; diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss new file mode 100644 index 00000000..57fab696 --- /dev/null +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss @@ -0,0 +1,29 @@ +@use "@/sass"; + +.container { + position: fixed; + bottom: 24px; + + display: flex; + justify-content: center; + align-items: center; + + width: 100%; + max-width: 452px; + height: 48px; + margin: 0 24px; + + border-radius: 16px; + + z-index: 5; + + cursor: pointer; + + span { + color: sass.$neutral0; + font-size: 14px; + font-style: normal; + font-weight: 700; + line-height: 22px; + } +} diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx new file mode 100644 index 00000000..991507c7 --- /dev/null +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx @@ -0,0 +1,16 @@ +import styles from "./BottomFixedBtn.module.scss"; + +function BottomFixedBtn() { + return ( +
+ 이 장소 후보로 등록하기 +
+ ); +} + +export default BottomFixedBtn; diff --git a/src/pages/Detail/Contents/Contents.module.scss b/src/pages/Detail/Contents/Contents.module.scss new file mode 100644 index 00000000..fdc0e9c0 --- /dev/null +++ b/src/pages/Detail/Contents/Contents.module.scss @@ -0,0 +1,16 @@ +@use "@/sass"; + +.container { + margin-top: 12px; + padding-bottom: 40px; +} + +.tab { + color: sass.$neutral300; + border-color: #fff; + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 22px; + border: none; +} diff --git a/src/pages/Detail/Contents/Contents.tsx b/src/pages/Detail/Contents/Contents.tsx index e69de29b..7da2f16e 100644 --- a/src/pages/Detail/Contents/Contents.tsx +++ b/src/pages/Detail/Contents/Contents.tsx @@ -0,0 +1,40 @@ +import { Tab, TabList, TabPanel, TabPanels, Tabs } from "@chakra-ui/react"; + +import styles from "./Contents.module.scss"; + +import Information from "./Information/Information"; +import Reviews from "./Reviews/Reviews"; + +function Contents() { + return ( + + + + 상품정보 + + + 리뷰 + + + + + + + + + + + + + ); +} + +export default Contents; diff --git a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss new file mode 100644 index 00000000..d585e0f6 --- /dev/null +++ b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss @@ -0,0 +1,42 @@ +@use "@/sass"; + +.container { + margin: 20px 0; + padding-bottom: 40px; + + border-bottom: 12px solid sass.$neutral100; + + &__title { + padding: 8px 20px; + margin-bottom: 16px; + + font-size: 18px; + font-style: normal; + font-weight: 700; + line-height: 26px; + } + + &__contents { + margin-top: 16px; + padding: 0 20px; + + display: flex; + flex-direction: column; + gap: 12px; + + &__item { + display: flex; + align-items: center; + gap: 12px; + + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 22px; + + a { + text-decoration-line: underline; + } + } + } +} diff --git a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx new file mode 100644 index 00000000..b8bfac92 --- /dev/null +++ b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx @@ -0,0 +1,38 @@ +import { AiOutlineLink } from "react-icons/ai"; +import { FaRegClock } from "react-icons/fa"; +import { IoMdCall } from "react-icons/io"; +import { MdPlace } from "react-icons/md"; + +import styles from "./BasicInformation.module.scss"; + +import Map from "./Map/Map"; + +function BasicInformation() { + return ( +
+
기본정보
+ +
+
+ + 경기도 양평군 양평읍 백안리 9 +
+
+ + 031-771-1234 +
+ +
+ {/* 시계 아이콘 다름 */} + + 매일 09:00~18:00 +
+
+
+ ); +} + +export default BasicInformation; diff --git a/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.module.scss b/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.module.scss new file mode 100644 index 00000000..2e03b4b8 --- /dev/null +++ b/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.module.scss @@ -0,0 +1,10 @@ +.container { + width: 100%; + height: 149px; + + display: flex; + justify-content: center; + align-items: center; + + background-color: #efefef; +} diff --git a/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.tsx b/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.tsx new file mode 100644 index 00000000..9f5beb95 --- /dev/null +++ b/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.tsx @@ -0,0 +1,7 @@ +import styles from "./Map.module.scss"; + +function Map() { + return
지도
; +} + +export default Map; diff --git a/src/components/BottomFixedBtn/BottomFixedBtn.tsx b/src/pages/Detail/Contents/Information/Information.module.scss similarity index 100% rename from src/components/BottomFixedBtn/BottomFixedBtn.tsx rename to src/pages/Detail/Contents/Information/Information.module.scss diff --git a/src/pages/Detail/Contents/Information/Information.tsx b/src/pages/Detail/Contents/Information/Information.tsx index e69de29b..57cbc558 100644 --- a/src/pages/Detail/Contents/Information/Information.tsx +++ b/src/pages/Detail/Contents/Information/Information.tsx @@ -0,0 +1,15 @@ +import BasicInformation from "./BasicInformation/BasicInformation"; +import Others from "./Others/Others"; +import ShortReviews from "./ShortReveiws/ShortReviews"; + +function Information() { + return ( +
+ + + +
+ ); +} + +export default Information; diff --git a/src/pages/Detail/Contents/Information/Map/Map.tsx b/src/pages/Detail/Contents/Information/Map/Map.tsx deleted file mode 100644 index e69de29b..00000000 diff --git a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss new file mode 100644 index 00000000..4e56eacd --- /dev/null +++ b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss @@ -0,0 +1,56 @@ +@use "@/sass"; + +.container { + display: flex; + flex-direction: column; + gap: 8px; + + cursor: pointer; + + &__image { + width: 144px; + height: 144px; + border-radius: 16px; + } + + &__contents { + h4 { + font-size: 16px; + font-style: normal; + font-weight: 700; + line-height: 24px; + } + + p { + color: sass.$neutral400; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + } + + &__reviews { + &__star { + display: inline; + font-size: 16px; + color: #fed600; + } + + &__point { + color: #1d2433; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + } + + &__reviewsCount { + color: sass.$neutral400; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + } + } + } +} diff --git a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx new file mode 100644 index 00000000..bb8488c7 --- /dev/null +++ b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx @@ -0,0 +1,36 @@ +import { GoStarFill } from "react-icons/go"; + +import styles from "./OtherCard.module.scss"; + +interface OtherCardProps { + image: string; + name: string; + location: string; + point: string; + count: number; +} + +function OtherCard({ image, name, location, point, count }: OtherCardProps) { + return ( +
+
+ # +
+
+

{name}

+

{location}

+
+ + + {point} + + + ({count}) + +
+
+
+ ); +} + +export default OtherCard; diff --git a/src/pages/Detail/Contents/Information/Others/Others.module.scss b/src/pages/Detail/Contents/Information/Others/Others.module.scss new file mode 100644 index 00000000..bb0515f3 --- /dev/null +++ b/src/pages/Detail/Contents/Information/Others/Others.module.scss @@ -0,0 +1,70 @@ +.container { + padding: 40px 0; + + &__title { + padding: 8px 20px; + + h3 { + font-size: 18px; + font-style: normal; + font-weight: 700; + line-height: 26px; + } + } + + &__slideContainer { + padding: 0 20px; + position: relative; + + overflow: hidden; + + &__leftBtn { + position: absolute; + top: 50%; + left: 10px; + transform: translate(-10px, -50%); + + width: 24px; + height: 24px; + border-radius: 12px; + + background-color: #ffffff; + z-index: 2; + &__icon { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + + &__rightBtn { + position: absolute; + top: 50%; + right: 10px; + transform: translate(-10px, -50%); + + width: 24px; + height: 24px; + border-radius: 12px; + + background-color: #ffffff; + z-index: 2; + + &__icon { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + + &__slide { + position: relative; + display: flex; + gap: 16px; + + transition: all 1s; + } + } +} diff --git a/src/pages/Detail/Contents/Information/Others/Others.tsx b/src/pages/Detail/Contents/Information/Others/Others.tsx index e69de29b..55a519c6 100644 --- a/src/pages/Detail/Contents/Information/Others/Others.tsx +++ b/src/pages/Detail/Contents/Information/Others/Others.tsx @@ -0,0 +1,107 @@ +import { useState } from "react"; +import { AiOutlineLeft, AiOutlineRight } from "react-icons/ai"; + +import styles from "./Others.module.scss"; + +import useComponentSize from "@/hooks/useComponetSize"; + +import OtherCard from "./OtherCard/OtherCard"; + +function Others() { + const [slideLocation, setSlideLocation] = useState(0); + const [componentRef, size] = useComponentSize(); + + const othersData = [ + { + image: + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + name: "호텔 loft", + location: "제주", + point: "5.0", + count: 803, + }, + { + image: + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + name: "호텔 loft", + location: "제주", + point: "5.0", + count: 803, + }, + { + image: + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + name: "호텔 loft", + location: "제주", + point: "5.0", + count: 803, + }, + { + image: + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + name: "호텔 loft", + location: "제주", + point: "5.0", + count: 803, + }, + { + image: + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + name: "호텔 loft", + location: "제주", + point: "5.0", + count: 803, + }, + ]; + + return ( +
+
+

주변 다른 숙소

+
+
+
{ + setSlideLocation(slideLocation + 160); + }} + > + +
+
= 160 * 4 - size.width ? "none" : "block", + }} + onClick={() => { + setSlideLocation(slideLocation - 160); + }} + > + +
+
+ {othersData.map((data) => ( + + ))} +
+
+
+ ); +} + +export default Others; diff --git a/src/pages/Detail/Contents/Information/Reservation/Reservation.tsx b/src/pages/Detail/Contents/Information/Reservation/Reservation.tsx index e69de29b..baf8500d 100644 --- a/src/pages/Detail/Contents/Information/Reservation/Reservation.tsx +++ b/src/pages/Detail/Contents/Information/Reservation/Reservation.tsx @@ -0,0 +1,5 @@ +function Reservation() { + return
Reservation
; +} + +export default Reservation; diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss new file mode 100644 index 00000000..e2a8fd71 --- /dev/null +++ b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss @@ -0,0 +1,90 @@ +@use "@/sass"; + +.container { + padding: 40px 0; + border-bottom: 12px solid sass.$neutral100; + + &__title { + padding: 8px 20px; + margin-bottom: 16px; + + display: flex; + justify-content: space-between; + + h3 { + font-size: 18px; + font-style: normal; + font-weight: 700; + line-height: 26px; + } + + &__rightBox { + display: flex; + cursor: pointer; + + span { + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 22px; + } + } + } + + &__pointBox { + display: flex; + align-items: center; + gap: 4px; + + padding: 0 20px; + margin-bottom: 16px; + + &__star { + display: inline; + font-size: 32px; + color: #fed600; + } + + &__point { + color: #1d2433; + font-size: 24px; + font-style: normal; + font-weight: 700; + line-height: 32px; + } + + &__reviewsCount { + color: sass.$neutral400; + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 22px; + } + } + + &__reviewsBox { + margin-bottom: 16px; + } + + &__allBtn { + padding: 8px; + + margin: 0 20px; + + border: 1px solid sass.$neutral300; + border-radius: 8px; + + display: flex; + justify-content: center; + align-items: center; + + cursor: pointer; + + span { + font-size: 14px; + font-style: normal; + font-weight: 700; + line-height: 22px; + } + } +} diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx new file mode 100644 index 00000000..d1afb483 --- /dev/null +++ b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx @@ -0,0 +1,73 @@ +import { CiEdit } from "react-icons/ci"; +import { GoStarFill } from "react-icons/go"; + +import styles from "./ShortReviews.module.scss"; + +import Review from "@/components/Review/Review"; + +function ShortReviews() { + const reviewData = [ + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요", + images: [ + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + ], + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요 아주 좋아요", + }, + ]; + + return ( +
+
+

리뷰

+
{}}> + + 리뷰쓰기 +
+
+
+ + 5.0 + + (13,052) + +
+
+ {reviewData.map((data) => ( + + ))} +
+
+ 리뷰 전체보기 +
+
+ ); +} + +export default ShortReviews; diff --git a/src/pages/Detail/Contents/Reviews/Reviews.tsx b/src/pages/Detail/Contents/Reviews/Reviews.tsx index e69de29b..912799c3 100644 --- a/src/pages/Detail/Contents/Reviews/Reviews.tsx +++ b/src/pages/Detail/Contents/Reviews/Reviews.tsx @@ -0,0 +1,149 @@ +import { CiEdit } from "react-icons/ci"; +import { GoStarFill } from "react-icons/go"; + +import styles from "./Rviews.module.scss"; + +import Review from "@/components/Review/Review"; + +// 무한 스크롤 구현 필요 +function Reviews() { + const reviewData = [ + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요", + images: [ + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + ], + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요 아주 좋아요", + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요", + images: [ + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + ], + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요 아주 좋아요", + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요", + images: [ + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + ], + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요 아주 좋아요", + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요", + images: [ + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", + "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", + ], + }, + { + name: "강자밭", + isGoogle: false, + point: "5.0", + visitedAt: "2024년 1월 방문", + content: + "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요 아주 좋아요", + }, + ]; + + return ( +
+
+

리뷰

+
{}}> + + 리뷰쓰기 +
+
+
+ + 5.0 + + (13,052) + +
+
+ {reviewData.map((data) => ( + + ))} +
+
+ ); +} + +export default Reviews; diff --git a/src/pages/Detail/Contents/Reviews/Rviews.module.scss b/src/pages/Detail/Contents/Reviews/Rviews.module.scss new file mode 100644 index 00000000..e2a8fd71 --- /dev/null +++ b/src/pages/Detail/Contents/Reviews/Rviews.module.scss @@ -0,0 +1,90 @@ +@use "@/sass"; + +.container { + padding: 40px 0; + border-bottom: 12px solid sass.$neutral100; + + &__title { + padding: 8px 20px; + margin-bottom: 16px; + + display: flex; + justify-content: space-between; + + h3 { + font-size: 18px; + font-style: normal; + font-weight: 700; + line-height: 26px; + } + + &__rightBox { + display: flex; + cursor: pointer; + + span { + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 22px; + } + } + } + + &__pointBox { + display: flex; + align-items: center; + gap: 4px; + + padding: 0 20px; + margin-bottom: 16px; + + &__star { + display: inline; + font-size: 32px; + color: #fed600; + } + + &__point { + color: #1d2433; + font-size: 24px; + font-style: normal; + font-weight: 700; + line-height: 32px; + } + + &__reviewsCount { + color: sass.$neutral400; + font-size: 14px; + font-style: normal; + font-weight: 500; + line-height: 22px; + } + } + + &__reviewsBox { + margin-bottom: 16px; + } + + &__allBtn { + padding: 8px; + + margin: 0 20px; + + border: 1px solid sass.$neutral300; + border-radius: 8px; + + display: flex; + justify-content: center; + align-items: center; + + cursor: pointer; + + span { + font-size: 14px; + font-style: normal; + font-weight: 700; + line-height: 22px; + } + } +} diff --git a/src/pages/Detail/Detail.module.scss b/src/pages/Detail/Detail.module.scss index e69de29b..cc919740 100644 --- a/src/pages/Detail/Detail.module.scss +++ b/src/pages/Detail/Detail.module.scss @@ -0,0 +1,6 @@ +.container { + width: 100%; + min-height: 100vh; + + position: relative; +} diff --git a/src/pages/Detail/Main/Main.module.scss b/src/pages/Detail/Main/Main.module.scss new file mode 100644 index 00000000..10702a24 --- /dev/null +++ b/src/pages/Detail/Main/Main.module.scss @@ -0,0 +1,3 @@ +.container { + padding-top: 32px; +} diff --git a/src/pages/Detail/Main/Main.tsx b/src/pages/Detail/Main/Main.tsx index e69de29b..c3f07423 100644 --- a/src/pages/Detail/Main/Main.tsx +++ b/src/pages/Detail/Main/Main.tsx @@ -0,0 +1,15 @@ +import styles from "./Main.module.scss"; + +import Swiper from "./Swiper/Swiper"; +import Title from "./Title/Title"; + +function Main() { + return ( +
+ + + </div> + ); +} + +export default Main; diff --git a/src/pages/Detail/Main/Swiper/Swiper.module.scss b/src/pages/Detail/Main/Swiper/Swiper.module.scss new file mode 100644 index 00000000..4bf0e4ab --- /dev/null +++ b/src/pages/Detail/Main/Swiper/Swiper.module.scss @@ -0,0 +1,10 @@ +.container { + width: 100%; + height: 248px; + + display: flex; + justify-content: center; + align-items: center; + + background-color: #efefef; +} diff --git a/src/pages/Detail/Main/Swiper/Swiper.tsx b/src/pages/Detail/Main/Swiper/Swiper.tsx index e69de29b..36964a60 100644 --- a/src/pages/Detail/Main/Swiper/Swiper.tsx +++ b/src/pages/Detail/Main/Swiper/Swiper.tsx @@ -0,0 +1,7 @@ +import styles from "./Swiper.module.scss"; + +function Swiper() { + return <div className={styles.container}>Swiper</div>; +} + +export default Swiper; diff --git a/src/pages/Detail/Main/Title/Title.module.scss b/src/pages/Detail/Main/Title/Title.module.scss new file mode 100644 index 00000000..a3dbf7ea --- /dev/null +++ b/src/pages/Detail/Main/Title/Title.module.scss @@ -0,0 +1,59 @@ +@use "@/sass"; + +.container { + width: 100%; + padding: 24px 20px; + position: relative; + + &__header { + font-size: 20px; + font-style: normal; + font-weight: 700; + line-height: 28px; + } + &__category { + color: sass.$neutral400; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + margin: 4px 0; + } + + &__alignCenter { + display: flex; + align-items: center; + gap: 2px; + + &__star { + display: inline; + font-size: 16px; + color: #fed600; + } + + &__point { + color: #1d2433; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + } + + &__reviewsCount { + color: sass.$neutral400; + font-size: 12px; + font-style: normal; + font-weight: 500; + line-height: 20px; + } + } + + &__positionAbsoluteIcons { + position: absolute; + right: 20px; + bottom: 32px; + + display: flex; + gap: 12px; + } +} diff --git a/src/pages/Detail/Main/Title/Title.tsx b/src/pages/Detail/Main/Title/Title.tsx index e69de29b..c84fae78 100644 --- a/src/pages/Detail/Main/Title/Title.tsx +++ b/src/pages/Detail/Main/Title/Title.tsx @@ -0,0 +1,31 @@ +import { FaRegHeart } from "react-icons/fa"; +import { GoStarFill } from "react-icons/go"; +import { IoShareSocialOutline } from "react-icons/io5"; + +import styles from "./Title.module.scss"; + +function Title() { + return ( + <div className={styles.container}> + <h2 className={styles.container__header}>롯데시티 호텔</h2> + <p className={styles.container__category}>숙소</p> + <div className={styles.container__alignCenter}> + <GoStarFill className={styles.container__alignCenter__star} /> + <span className={styles.container__alignCenter__point}>5.0</span> + <span className={styles.container__alignCenter__reviewsCount}> + (13,052) + </span> + </div> + <div className={styles.container__positionAbsoluteIcons}> + <FaRegHeart fontSize="24px" cursor="pointer" onclick={() => {}} /> + <IoShareSocialOutline + fontSize="24px" + cursor="pointer" + onclick={() => {}} + /> + </div> + </div> + ); +} + +export default Title; diff --git a/src/pages/Detail/Navigation/Navigation.module.scss b/src/pages/Detail/Navigation/Navigation.module.scss new file mode 100644 index 00000000..8b18a9e3 --- /dev/null +++ b/src/pages/Detail/Navigation/Navigation.module.scss @@ -0,0 +1,16 @@ +.container { + display: flex; + justify-content: space-between; + align-items: center; + + position: fixed; + top: 0; + z-index: 2; + background-color: #fff; + + width: 100%; + max-width: 500px; + height: 32px; + + padding: 16px; +} diff --git a/src/pages/Detail/Navigation/Navigation.tsx b/src/pages/Detail/Navigation/Navigation.tsx index e69de29b..c7061707 100644 --- a/src/pages/Detail/Navigation/Navigation.tsx +++ b/src/pages/Detail/Navigation/Navigation.tsx @@ -0,0 +1,18 @@ +import { AiOutlineLeft } from "react-icons/ai"; +import { GoKebabHorizontal } from "react-icons/go"; +import { useNavigate } from "react-router-dom"; + +import styles from "./Navigation.module.scss"; + +function Navigation() { + const navigate = useNavigate(); + + return ( + <div className={styles.container}> + <AiOutlineLeft fontSize="24px" onClick={() => navigate(-1)} /> + <GoKebabHorizontal fontSize="24px" /> + </div> + ); +} + +export default Navigation; diff --git a/src/pages/Detail/index.tsx b/src/pages/Detail/index.tsx index 110deb98..36461cc0 100644 --- a/src/pages/Detail/index.tsx +++ b/src/pages/Detail/index.tsx @@ -1,5 +1,20 @@ +import styles from "./Detail.module.scss"; + +import BottomFixedBtn from "@/pages/Detail/BottomFixedBtn/BottomFixedBtn"; + +import Contents from "./Contents/Contents"; +import Main from "./Main/Main"; +import Navigation from "./Navigation/Navigation"; + function Detail() { - return <div>Detail</div>; + return ( + <div className={styles.container}> + <Navigation /> + <Main /> + <Contents /> + <BottomFixedBtn /> + </div> + ); } export default Detail; From 63415362c5a47bc268600d2d4f87e1b8fcdb8176 Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 15:31:51 +0900 Subject: [PATCH 04/13] feat: apply variables in detail page typo --- package-lock.json | 672 +----------------- public/mockServiceWorker.js | 221 +++--- src/components/Review/Review.module.scss | 26 +- src/components/Review/Review.tsx | 2 +- .../BottomFixedBtn/BottomFixedBtn.module.scss | 2 +- .../Detail/Contents/Contents.module.scss | 13 +- src/pages/Detail/Contents/Contents.tsx | 6 + .../BasicInformation.module.scss | 10 +- .../Others/OtherCard/OtherCard.module.scss | 26 +- .../Information/Others/Others.module.scss | 7 +- .../ShortReveiws/ShortReviews.module.scss | 27 +- .../Contents/Reviews/Rviews.module.scss | 28 +- src/pages/Detail/Main/Title/Title.module.scss | 22 +- .../Detail/Navigation/Navigation.module.scss | 5 +- src/pages/Detail/Navigation/Navigation.tsx | 8 +- src/sass/abstracts/_variables.scss | 4 +- 16 files changed, 203 insertions(+), 876 deletions(-) diff --git a/package-lock.json b/package-lock.json index 81a8d042..e50b3ef5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2084,70 +2084,6 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", - "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", - "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", - "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", - "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.19.10", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", @@ -2164,294 +2100,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", - "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", - "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", - "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", - "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", - "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", - "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", - "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", - "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", - "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", - "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", - "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", - "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", - "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", - "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", - "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", - "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", - "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", - "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -3147,32 +2795,6 @@ } } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", - "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", - "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", @@ -3186,136 +2808,6 @@ "darwin" ] }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", - "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", - "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", - "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", - "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", - "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", - "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", - "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", - "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", - "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", - "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -3645,150 +3137,6 @@ "node": ">=10" } }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.101.tgz", - "integrity": "sha512-B085j8XOx73Fg15KsHvzYWG262bRweGr3JooO1aW5ec5pYbz5Ew9VS5JKYS03w2UBSxf2maWdbPz2UFAxg0whw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.101.tgz", - "integrity": "sha512-9xLKRb6zSzRGPqdz52Hy5GuB1lSjmLqa0lST6MTFads3apmx4Vgs8Y5NuGhx/h2I8QM4jXdLbpqQlifpzTlSSw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.101.tgz", - "integrity": "sha512-oE+r1lo7g/vs96Weh2R5l971dt+ZLuhaUX+n3BfDdPxNHfObXgKMjO7E+QS5RbGjv/AwiPCxQmbdCp/xN5ICJA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.101.tgz", - "integrity": "sha512-OGjYG3H4BMOTnJWJyBIovCez6KiHF30zMIu4+lGJTCrxRI2fAjGLml3PEXj8tC3FMcud7U2WUn6TdG0/te2k6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.101.tgz", - "integrity": "sha512-/kBMcoF12PRO/lwa8Z7w4YyiKDcXQEiLvM+S3G9EvkoKYGgkkz4Q6PSNhF5rwg/E3+Hq5/9D2R+6nrkF287ihg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.101.tgz", - "integrity": "sha512-kDN8lm4Eew0u1p+h1l3JzoeGgZPQ05qDE0czngnjmfpsH2sOZxVj1hdiCwS5lArpy7ktaLu5JdRnx70MkUzhXw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.101.tgz", - "integrity": "sha512-9Wn8TTLWwJKw63K/S+jjrZb9yoJfJwCE2RV5vPCCWmlMf3U1AXj5XuWOLUX+Rp2sGKau7wZKsvywhheWm+qndQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.101.tgz", - "integrity": "sha512-onO5KvICRVlu2xmr4//V2je9O2XgS1SGKpbX206KmmjcJhXN5EYLSxW9qgg+kgV5mip+sKTHTAu7IkzkAtElYA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.101.tgz", - "integrity": "sha512-T3GeJtNQV00YmiVw/88/nxJ/H43CJvFnpvBHCVn17xbahiVUOPOduh3rc9LgAkKiNt/aV8vU3OJR+6PhfMR7UQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/counter": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", @@ -4179,6 +3527,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", @@ -5725,6 +5075,16 @@ "node": ">=12" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -5734,14 +5094,6 @@ }, "funding": { "url": "https://github.com/motdotla/dotenv?sponsor=1" - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" } }, "node_modules/electron-to-chromium": { diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js index 279a39a5..e369128e 100644 --- a/public/mockServiceWorker.js +++ b/public/mockServiceWorker.js @@ -8,113 +8,124 @@ * - Please do NOT serve this file on production. */ -const INTEGRITY_CHECKSUM = "c5f7f8e188b673ea4e677df7ea3c5a39"; -const IS_MOCKED_RESPONSE = Symbol("isMockedResponse"); -const activeClientIds = new Set(); +const INTEGRITY_CHECKSUM = 'c5f7f8e188b673ea4e677df7ea3c5a39' +const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') +const activeClientIds = new Set() -self.addEventListener("install", function () { - self.skipWaiting(); -}); +self.addEventListener('install', function () { + self.skipWaiting() +}) -self.addEventListener("activate", function (event) { - event.waitUntil(self.clients.claim()); -}); +self.addEventListener('activate', function (event) { + event.waitUntil(self.clients.claim()) +}) -self.addEventListener("message", async function (event) { - const clientId = event.source.id; +self.addEventListener('message', async function (event) { + const clientId = event.source.id if (!clientId || !self.clients) { - return; + return } - const client = await self.clients.get(clientId); + const client = await self.clients.get(clientId) if (!client) { - return; + return } const allClients = await self.clients.matchAll({ - type: "window", - }); + type: 'window', + }) switch (event.data) { - case "KEEPALIVE_REQUEST": { + case 'KEEPALIVE_REQUEST': { sendToClient(client, { - type: "KEEPALIVE_RESPONSE", - }); - break; + type: 'KEEPALIVE_RESPONSE', + }) + break } - case "INTEGRITY_CHECK_REQUEST": { + case 'INTEGRITY_CHECK_REQUEST': { sendToClient(client, { - type: "INTEGRITY_CHECK_RESPONSE", + type: 'INTEGRITY_CHECK_RESPONSE', payload: INTEGRITY_CHECKSUM, - }); - break; + }) + break } - case "MOCK_ACTIVATE": { - activeClientIds.add(clientId); + case 'MOCK_ACTIVATE': { + activeClientIds.add(clientId) sendToClient(client, { - type: "MOCKING_ENABLED", + type: 'MOCKING_ENABLED', payload: true, - }); - break; + }) + break } - case "MOCK_DEACTIVATE": { - activeClientIds.delete(clientId); - break; + case 'MOCK_DEACTIVATE': { + activeClientIds.delete(clientId) + break } - case "CLIENT_CLOSED": { - activeClientIds.delete(clientId); + case 'CLIENT_CLOSED': { + activeClientIds.delete(clientId) const remainingClients = allClients.filter((client) => { - return client.id !== clientId; - }); + return client.id !== clientId + }) + // Unregister itself when there are no more clients if (remainingClients.length === 0) { - self.registration.unregister(); + self.registration.unregister() } - break; + break } } -}); +}) -self.addEventListener("fetch", function (event) { - const { request } = event; +self.addEventListener('fetch', function (event) { + const { request } = event - if (request.mode === "navigate") { - return; + // Bypass navigation requests. + if (request.mode === 'navigate') { + return } - if (request.cache === "only-if-cached" && request.mode !== "same-origin") { - return; + // Opening the DevTools triggers the "only-if-cached" request + // that cannot be handled by the worker. Bypass such requests. + if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { + return } + // Bypass all requests when there are no active clients. + // Prevents the self-unregistered worked from handling requests + // after it's been deleted (still remains active until the next reload). if (activeClientIds.size === 0) { - return; + return } - const requestId = crypto.randomUUID(); - event.respondWith(handleRequest(event, requestId)); -}); + // Generate unique request ID. + const requestId = crypto.randomUUID() + event.respondWith(handleRequest(event, requestId)) +}) async function handleRequest(event, requestId) { - const client = await resolveMainClient(event); - const response = await getResponse(event, client, requestId); + const client = await resolveMainClient(event) + const response = await getResponse(event, client, requestId) + // Send back the response clone for the "response:*" life-cycle events. + // Ensure MSW is active and ready to handle the message, otherwise + // this message will pend indefinitely. if (client && activeClientIds.has(client.id)) { - (async function () { - const responseClone = response.clone(); + ;(async function () { + const responseClone = response.clone() sendToClient( client, { - type: "RESPONSE", + type: 'RESPONSE', payload: { requestId, isMockedResponse: IS_MOCKED_RESPONSE in response, @@ -126,64 +137,84 @@ async function handleRequest(event, requestId) { }, }, [responseClone.body], - ); - })(); + ) + })() } - return response; + return response } +// Resolve the main client for the given event. +// Client that issues a request doesn't necessarily equal the client +// that registered the worker. It's with the latter the worker should +// communicate with during the response resolving phase. async function resolveMainClient(event) { - const client = await self.clients.get(event.clientId); + const client = await self.clients.get(event.clientId) - if (client?.frameType === "top-level") { - return client; + if (client?.frameType === 'top-level') { + return client } const allClients = await self.clients.matchAll({ - type: "window", - }); + type: 'window', + }) return allClients .filter((client) => { - return client.visibilityState === "visible"; + // Get only those clients that are currently visible. + return client.visibilityState === 'visible' }) .find((client) => { - return activeClientIds.has(client.id); - }); + // Find the client ID that's recorded in the + // set of clients that have registered the worker. + return activeClientIds.has(client.id) + }) } async function getResponse(event, client, requestId) { - const { request } = event; + const { request } = event - const requestClone = request.clone(); + // Clone the request because it might've been already used + // (i.e. its body has been read and sent to the client). + const requestClone = request.clone() function passthrough() { - const headers = Object.fromEntries(requestClone.headers.entries()); + const headers = Object.fromEntries(requestClone.headers.entries()) - delete headers["x-msw-intention"]; + // Remove internal MSW request header so the passthrough request + // complies with any potential CORS preflight checks on the server. + // Some servers forbid unknown request headers. + delete headers['x-msw-intention'] - return fetch(requestClone, { headers }); + return fetch(requestClone, { headers }) } + // Bypass mocking when the client is not active. if (!client) { - return passthrough(); + return passthrough() } + // Bypass initial page load requests (i.e. static assets). + // The absence of the immediate/parent client in the map of the active clients + // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet + // and is not ready to handle requests. if (!activeClientIds.has(client.id)) { - return passthrough(); + return passthrough() } - const mswIntention = request.headers.get("x-msw-intention"); - if (["bypass", "passthrough"].includes(mswIntention)) { - return passthrough(); + // Bypass requests with the explicit bypass header. + // Such requests can be issued by "ctx.fetch()". + const mswIntention = request.headers.get('x-msw-intention') + if (['bypass', 'passthrough'].includes(mswIntention)) { + return passthrough() } - const requestBuffer = await request.arrayBuffer(); + // Notify the client that a request has been intercepted. + const requestBuffer = await request.arrayBuffer() const clientMessage = await sendToClient( client, { - type: "REQUEST", + type: 'REQUEST', payload: { id: requestId, url: request.url, @@ -202,51 +233,55 @@ async function getResponse(event, client, requestId) { }, }, [requestBuffer], - ); + ) switch (clientMessage.type) { - case "MOCK_RESPONSE": { - return respondWithMock(clientMessage.data); + case 'MOCK_RESPONSE': { + return respondWithMock(clientMessage.data) } - case "MOCK_NOT_FOUND": { - return passthrough(); + case 'MOCK_NOT_FOUND': { + return passthrough() } } - return passthrough(); + return passthrough() } function sendToClient(client, message, transferrables = []) { return new Promise((resolve, reject) => { - const channel = new MessageChannel(); + const channel = new MessageChannel() channel.port1.onmessage = (event) => { if (event.data && event.data.error) { - return reject(event.data.error); + return reject(event.data.error) } - resolve(event.data); - }; + resolve(event.data) + } client.postMessage( message, [channel.port2].concat(transferrables.filter(Boolean)), - ); - }); + ) + }) } async function respondWithMock(response) { + // Setting response status code to 0 is a no-op. + // However, when responding with a "Response.error()", the produced Response + // instance will have status code set to 0. Since it's not possible to create + // a Response instance with status code 0, handle that use-case separately. if (response.status === 0) { - return Response.error(); + return Response.error() } - const mockedResponse = new Response(response.body, response); + const mockedResponse = new Response(response.body, response) Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { value: true, enumerable: true, - }); + }) - return mockedResponse; + return mockedResponse } diff --git a/src/components/Review/Review.module.scss b/src/components/Review/Review.module.scss index 1efb0184..0843f933 100644 --- a/src/components/Review/Review.module.scss +++ b/src/components/Review/Review.module.scss @@ -9,11 +9,12 @@ &__contentsBox { width: 100%; + display: flex; + flex-direction: column; + gap: 4px; + &__name { - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 22px; + @include sass.typography(button); } &__secondItems { @@ -23,32 +24,23 @@ &__star { display: inline; font-size: 16px; - color: #fed600; + color: sass.$etc0; } &__point { margin-left: 2px; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionSmall); } &__visitedAt { margin-left: 9px; color: sass.$primary300; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionSmall); } } &__content { - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 22px; + @include sass.typography(bodySmall); text-overflow: ellipsis; } } diff --git a/src/components/Review/Review.tsx b/src/components/Review/Review.tsx index fbce1747..50c9ebbb 100644 --- a/src/components/Review/Review.tsx +++ b/src/components/Review/Review.tsx @@ -49,7 +49,7 @@ function Review({ {visitedAt} </span> </div> - <div className={styles.container__content}>{content}</div> + <div className={styles.container__contentsBox__content}>{content}</div> {images && <ReviewImageSlider images={images} />} </div> </div> diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss index 57fab696..d4016e24 100644 --- a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss @@ -9,7 +9,7 @@ align-items: center; width: 100%; - max-width: 452px; + max-width: 402px; height: 48px; margin: 0 24px; diff --git a/src/pages/Detail/Contents/Contents.module.scss b/src/pages/Detail/Contents/Contents.module.scss index fdc0e9c0..40431870 100644 --- a/src/pages/Detail/Contents/Contents.module.scss +++ b/src/pages/Detail/Contents/Contents.module.scss @@ -3,14 +3,7 @@ .container { margin-top: 12px; padding-bottom: 40px; -} - -.tab { - color: sass.$neutral300; - border-color: #fff; - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 22px; - border: none; + &__tab { + @include sass.typography(button); + } } diff --git a/src/pages/Detail/Contents/Contents.tsx b/src/pages/Detail/Contents/Contents.tsx index 7da2f16e..211170da 100644 --- a/src/pages/Detail/Contents/Contents.tsx +++ b/src/pages/Detail/Contents/Contents.tsx @@ -10,6 +10,9 @@ function Contents() { <Tabs isFitted className={styles.container}> <TabList> <Tab + fontSize="14px" + fontWeight="700" + lineHeight="22px" color="#CDCFD0" borderColor="#fff" _selected={{ color: "#1D2433", borderColor: "#2388FF" }} @@ -17,6 +20,9 @@ function Contents() { 상품정보 </Tab> <Tab + fontSize="14px" + fontWeight="700" + lineHeight="22px" color="#CDCFD0" borderColor="#fff" _selected={{ color: "#1D2433", borderColor: "#2388FF" }} diff --git a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss index d585e0f6..127a43ab 100644 --- a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss +++ b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss @@ -10,10 +10,7 @@ padding: 8px 20px; margin-bottom: 16px; - font-size: 18px; - font-style: normal; - font-weight: 700; - line-height: 26px; + @include sass.typography(titleMedium); } &__contents { @@ -29,10 +26,7 @@ align-items: center; gap: 12px; - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 22px; + @include sass.typography(tabLabel); a { text-decoration-line: underline; diff --git a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss index 4e56eacd..ea12249d 100644 --- a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss +++ b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss @@ -15,41 +15,33 @@ &__contents { h4 { - font-size: 16px; - font-style: normal; - font-weight: 700; - line-height: 24px; + @include sass.typography(titleSmall); } p { color: sass.$neutral400; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionSmall); } &__reviews { + display: flex; + align-items: center; + &__star { display: inline; font-size: 16px; - color: #fed600; + color: sass.$etc0; } &__point { color: #1d2433; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionSmall); + margin-right: 4px; } &__reviewsCount { color: sass.$neutral400; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionSmall); } } } diff --git a/src/pages/Detail/Contents/Information/Others/Others.module.scss b/src/pages/Detail/Contents/Information/Others/Others.module.scss index bb0515f3..c43c989f 100644 --- a/src/pages/Detail/Contents/Information/Others/Others.module.scss +++ b/src/pages/Detail/Contents/Information/Others/Others.module.scss @@ -1,3 +1,5 @@ +@use "@/sass"; + .container { padding: 40px 0; @@ -5,10 +7,7 @@ padding: 8px 20px; h3 { - font-size: 18px; - font-style: normal; - font-weight: 700; - line-height: 26px; + @include sass.typography(titleMedium); } } diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss index e2a8fd71..551a1ded 100644 --- a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss +++ b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss @@ -12,10 +12,7 @@ justify-content: space-between; h3 { - font-size: 18px; - font-style: normal; - font-weight: 700; - line-height: 26px; + @include sass.typography(titleMedium); } &__rightBox { @@ -23,10 +20,7 @@ cursor: pointer; span { - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 22px; + @include sass.typography(tabLabel); } } } @@ -42,23 +36,17 @@ &__star { display: inline; font-size: 32px; - color: #fed600; + color: sass.$etc0; } &__point { color: #1d2433; - font-size: 24px; - font-style: normal; - font-weight: 700; - line-height: 32px; + @include sass.typography(headline); } &__reviewsCount { color: sass.$neutral400; - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 22px; + @include sass.typography(tabLabel); } } @@ -81,10 +69,7 @@ cursor: pointer; span { - font-size: 14px; - font-style: normal; - font-weight: 700; - line-height: 22px; + @include sass.typography(button); } } } diff --git a/src/pages/Detail/Contents/Reviews/Rviews.module.scss b/src/pages/Detail/Contents/Reviews/Rviews.module.scss index e2a8fd71..f0d7e4c3 100644 --- a/src/pages/Detail/Contents/Reviews/Rviews.module.scss +++ b/src/pages/Detail/Contents/Reviews/Rviews.module.scss @@ -2,7 +2,6 @@ .container { padding: 40px 0; - border-bottom: 12px solid sass.$neutral100; &__title { padding: 8px 20px; @@ -12,10 +11,7 @@ justify-content: space-between; h3 { - font-size: 18px; - font-style: normal; - font-weight: 700; - line-height: 26px; + @include sass.typography(titleMedium); } &__rightBox { @@ -23,10 +19,7 @@ cursor: pointer; span { - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 22px; + @include sass.typography(tabLabel); } } } @@ -42,23 +35,17 @@ &__star { display: inline; font-size: 32px; - color: #fed600; + color: sass.$etc0; } &__point { color: #1d2433; - font-size: 24px; - font-style: normal; - font-weight: 700; - line-height: 32px; + @include sass.typography(headline); } &__reviewsCount { color: sass.$neutral400; - font-size: 14px; - font-style: normal; - font-weight: 500; - line-height: 22px; + @include sass.typography(tabLabel); } } @@ -81,10 +68,7 @@ cursor: pointer; span { - font-size: 14px; - font-style: normal; - font-weight: 700; - line-height: 22px; + @include sass.typography(tabLabel); } } } diff --git a/src/pages/Detail/Main/Title/Title.module.scss b/src/pages/Detail/Main/Title/Title.module.scss index a3dbf7ea..0dd5879d 100644 --- a/src/pages/Detail/Main/Title/Title.module.scss +++ b/src/pages/Detail/Main/Title/Title.module.scss @@ -6,17 +6,11 @@ position: relative; &__header { - font-size: 20px; - font-style: normal; - font-weight: 700; - line-height: 28px; + @include sass.typography(titleLarge); } &__category { color: sass.$neutral400; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionSmall); margin: 4px 0; } @@ -28,23 +22,17 @@ &__star { display: inline; font-size: 16px; - color: #fed600; + color: sass.$etc0; } &__point { color: #1d2433; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionMedium); } &__reviewsCount { color: sass.$neutral400; - font-size: 12px; - font-style: normal; - font-weight: 500; - line-height: 20px; + @include sass.typography(captionSmall); } } diff --git a/src/pages/Detail/Navigation/Navigation.module.scss b/src/pages/Detail/Navigation/Navigation.module.scss index 8b18a9e3..b275bb9b 100644 --- a/src/pages/Detail/Navigation/Navigation.module.scss +++ b/src/pages/Detail/Navigation/Navigation.module.scss @@ -9,8 +9,11 @@ background-color: #fff; width: 100%; - max-width: 500px; + max-width: 450px; height: 32px; padding: 16px; + &__pointer { + cursor: pointer; + } } diff --git a/src/pages/Detail/Navigation/Navigation.tsx b/src/pages/Detail/Navigation/Navigation.tsx index c7061707..ee42ecd8 100644 --- a/src/pages/Detail/Navigation/Navigation.tsx +++ b/src/pages/Detail/Navigation/Navigation.tsx @@ -9,8 +9,12 @@ function Navigation() { return ( <div className={styles.container}> - <AiOutlineLeft fontSize="24px" onClick={() => navigate(-1)} /> - <GoKebabHorizontal fontSize="24px" /> + <AiOutlineLeft + fontSize="24px" + onClick={() => navigate(-1)} + cursor="pointer" + /> + <GoKebabHorizontal fontSize="24px" onClick={() => {}} cursor="pointer" /> </div> ); } diff --git a/src/sass/abstracts/_variables.scss b/src/sass/abstracts/_variables.scss index 5ff3cea8..c474b2c7 100644 --- a/src/sass/abstracts/_variables.scss +++ b/src/sass/abstracts/_variables.scss @@ -62,7 +62,7 @@ $typography-font-size-map: ( // 14px "captionLarge": 1.3rem, // 13px - "captionMidium": 1.2rem, + "captionMedium": 1.2rem, // 12px "captionSmall": 1.2rem, // 12px @@ -79,7 +79,7 @@ $typography-font-weight-map: ( "button": 700, "tabLabel": 500, "captionLarge": 500, - "captionMidium": 700, + "captionMedium": 700, "captionSmall": 500, ); From cab35532aa324f36df1dfd8f3d04d3f8131a885d Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 16:35:56 +0900 Subject: [PATCH 05/13] fix: edit bottomBtn fixed & wrapper --- .../BottomFixedBtn/BottomFixedBtn.module.scss | 37 ++++++++++--------- .../Detail/BottomFixedBtn/BottomFixedBtn.tsx | 16 ++++---- src/pages/Detail/Contents/Reviews/Reviews.tsx | 1 - 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss index d4016e24..585a8975 100644 --- a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss @@ -1,29 +1,32 @@ @use "@/sass"; - .container { position: fixed; bottom: 24px; - - display: flex; - justify-content: center; - align-items: center; + padding: 0 24px; width: 100%; - max-width: 402px; - height: 48px; - margin: 0 24px; + max-width: 450px; + + &__wrapper { + display: flex; + justify-content: center; + align-items: center; + + width: 100%; + height: 48px; - border-radius: 16px; + border-radius: 16px; - z-index: 5; + z-index: 5; - cursor: pointer; + cursor: pointer; - span { - color: sass.$neutral0; - font-size: 14px; - font-style: normal; - font-weight: 700; - line-height: 22px; + span { + color: sass.$neutral0; + font-size: 14px; + font-style: normal; + font-weight: 700; + line-height: 22px; + } } } diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx index 991507c7..60f7da85 100644 --- a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx @@ -2,13 +2,15 @@ import styles from "./BottomFixedBtn.module.scss"; function BottomFixedBtn() { return ( - <div - className={styles.container} - style={{ - backgroundColor: "#2388FF", - }} - > - <span>이 장소 후보로 등록하기</span> + <div className={styles.container}> + <div + className={styles.container__wrapper} + style={{ + backgroundColor: "#2388FF", + }} + > + <span>이 장소 후보로 등록하기</span> + </div> </div> ); } diff --git a/src/pages/Detail/Contents/Reviews/Reviews.tsx b/src/pages/Detail/Contents/Reviews/Reviews.tsx index 912799c3..0e5984c3 100644 --- a/src/pages/Detail/Contents/Reviews/Reviews.tsx +++ b/src/pages/Detail/Contents/Reviews/Reviews.tsx @@ -95,7 +95,6 @@ function Reviews() { "아주 좋아요. 자주 다니고 있어요. 친구들이랑 저녁에 운동하기 좋아요 다음에 또 가고 싶네요", images: [ "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", - "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", "https://img-cf.kurly.com/shop/data/goodsview/20210218/gv30000159355_1.jpg", "https://m.eejmall.com/web/product/big/201708/211_shop1_627935.jpg", From 6a1686d4ef0f325cdd6c4a32f52fb6569631779e Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 16:43:54 +0900 Subject: [PATCH 06/13] fix: vercel error --- package-lock.json | 2305 ++++++++++++++--- src/components/Review/Review.module.scss | 2 +- .../ReviewImageSlider.module.scss | 16 +- 3 files changed, 1886 insertions(+), 437 deletions(-) diff --git a/package-lock.json b/package-lock.json index e50b3ef5..2593127c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -167,9 +167,9 @@ } }, "node_modules/@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -177,10 +177,10 @@ "@babel/generator": "^7.23.6", "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", + "@babel/helpers": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", + "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -242,15 +242,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -260,12 +251,6 @@ "semver": "bin/semver.js" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", @@ -389,13 +374,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", - "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.7.tgz", + "integrity": "sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", + "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" }, "engines": { @@ -669,9 +654,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", - "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz", + "integrity": "sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -694,9 +679,9 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", @@ -2084,10 +2069,74 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", - "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", "cpu": [ "arm64" ], @@ -2100,6 +2149,294 @@ "node": ">=12" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -2358,19 +2695,35 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", @@ -2405,6 +2758,54 @@ } } }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/@jest/environment": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", @@ -2520,6 +2921,22 @@ } } }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -2602,6 +3019,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jest/transform/node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -2625,6 +3058,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -2795,10 +3244,36 @@ } } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.3.tgz", + "integrity": "sha512-nvh9bB41vXEoKKvlWCGptpGt8EhrEwPQFDCY0VAto+R+qpSbaErPS3OjMZuXR8i/2UVw952Dtlnl2JFxH31Qvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.3.tgz", + "integrity": "sha512-kffYCJ2RhDL1DlshLzYPyJtVeusHlA8Q1j6k6s4AEVKLq/3HfGa2ADDycLsmPo3OW83r4XtOPqRMbcFzFsEIzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", - "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.3.tgz", + "integrity": "sha512-Fo7DR6Q9/+ztTyMBZ79+WJtb8RWZonyCgkBCjV51rW5K/dizBzImTW6HLC0pzmHaAevwM0jW1GtB5LCFE81mSw==", "cpu": [ "arm64" ], @@ -2808,6 +3283,136 @@ "darwin" ] }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.3.tgz", + "integrity": "sha512-5HcxDF9fqHucIlTiw/gmMb3Qv23L8bLCg904I74Q2lpl4j/20z9ogaD3tWkeguRuz+/17cuS321PT3PAuyjQdg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.3.tgz", + "integrity": "sha512-cO6hKV+99D1V7uNJQn1chWaF9EGp7qV2N8sGH99q9Y62bsbN6Il55EwJppEWT+JiqDRg396vWCgwdHwje8itBQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.3.tgz", + "integrity": "sha512-xANyq6lVg6KMO8UUs0LjA4q7di3tPpDbzLPgVEU2/F1ngIZ54eli8Zdt3uUUTMXVbgTCafIO+JPeGMhu097i3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.3.tgz", + "integrity": "sha512-TZJUfRTugVFATQToCMD8DNV6jv/KpSwhE1lLq5kXiQbBX3Pqw6dRKtzNkh5wcp0n09reBBq/7CGDERRw9KmE+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.3.tgz", + "integrity": "sha512-4/QVaRyaB5tkEAGfjVvWrmWdPF6F2NoaoO5uEP7N0AyeBw7l8SeCWWKAGrbx/00PUdHrJVURJiYikazslSKttQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.3.tgz", + "integrity": "sha512-koLC6D3pj1YLZSkTy/jsk3HOadp7q2h6VQl/lPX854twOmmLNekHB6yuS+MkWcKdGGdW1JPuPBv/ZYhr5Yhtdg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.3.tgz", + "integrity": "sha512-0OAkQ4HBp+JO2ip2Lgt/ShlrveOMzyhwt2D0KvqH28jFPqfZco28KSq76zymZwmU+F6GRojdxtQMJiNSXKNzeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.3.tgz", + "integrity": "sha512-z5uvoMvdRWggigOnsb9OOCLERHV0ykRZoRB5O+URPZC9zM3pkoMg5fN4NKu2oHqgkzZtfx9u4njqqlYEzM1v9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.3.tgz", + "integrity": "sha512-wxomCHjBVKws+O4N1WLnniKCXu7vkLtdq9Fl9CN/EbwEldojvUrkoHE/fBLZzC7IT/x12Ut6d6cRs4dFvqJkMg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.3.tgz", + "integrity": "sha512-1Qf/qk/iEtx0aOi+AQQt5PBoW0mFngsm7bPuxHClC/hWh2hHBktR6ktSfUg5b5rC9v8hTwNmHE7lBWXkgqluUQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -3084,9 +3689,9 @@ } }, "node_modules/@swc/core": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.101.tgz", - "integrity": "sha512-w5aQ9qYsd/IYmXADAnkXPGDMTqkQalIi+kfFf/MHRKTpaOL7DHjMXwPp/n8hJ0qNjRvchzmPtOqtPBiER50d8A==", + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.102.tgz", + "integrity": "sha512-OAjNLY/f6QWKSDzaM3bk31A+OYHu6cPa9P/rFIx8X5d24tHXUpRiiq6/PYI6SQRjUPlB72GjsjoEU8F+ALadHg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -3101,16 +3706,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.101", - "@swc/core-darwin-x64": "1.3.101", - "@swc/core-linux-arm-gnueabihf": "1.3.101", - "@swc/core-linux-arm64-gnu": "1.3.101", - "@swc/core-linux-arm64-musl": "1.3.101", - "@swc/core-linux-x64-gnu": "1.3.101", - "@swc/core-linux-x64-musl": "1.3.101", - "@swc/core-win32-arm64-msvc": "1.3.101", - "@swc/core-win32-ia32-msvc": "1.3.101", - "@swc/core-win32-x64-msvc": "1.3.101" + "@swc/core-darwin-arm64": "1.3.102", + "@swc/core-darwin-x64": "1.3.102", + "@swc/core-linux-arm-gnueabihf": "1.3.102", + "@swc/core-linux-arm64-gnu": "1.3.102", + "@swc/core-linux-arm64-musl": "1.3.102", + "@swc/core-linux-x64-gnu": "1.3.102", + "@swc/core-linux-x64-musl": "1.3.102", + "@swc/core-win32-arm64-msvc": "1.3.102", + "@swc/core-win32-ia32-msvc": "1.3.102", + "@swc/core-win32-x64-msvc": "1.3.102" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -3122,9 +3727,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.101", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.101.tgz", - "integrity": "sha512-mNFK+uHNPRXSnfTOG34zJOeMl2waM4hF4a2NY7dkMXrPqw9CoJn4MwTXJcyMiSz1/BnNjjTCHF3Yhj0jPxmkzQ==", + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.102.tgz", + "integrity": "sha512-CJDxA5Wd2cUMULj3bjx4GEoiYyyiyL8oIOu4Nhrs9X+tlg8DnkCm4nI57RJGP8Mf6BaXPIJkHX8yjcefK2RlDA==", "cpu": [ "arm64" ], @@ -3137,171 +3742,193 @@ "node": ">=10" } }, - "node_modules/@swc/counter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", - "dev": true - }, - "node_modules/@swc/types": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", - "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", - "dev": true - }, - "node_modules/@tanstack/eslint-plugin-query": { - "version": "5.14.6", - "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.14.6.tgz", - "integrity": "sha512-vpowwoGoB9JgZy8fljf53ZTW2yYLRQ3Tjx4WQFKxiKugQOctxaTjQk7wlYzuqA/gjzfPL9qHfKW5DTT9CmIpkA==", + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.102.tgz", + "integrity": "sha512-X5akDkHwk6oAer49oER0qZMjNMkLH3IOZaV1m98uXIasAGyjo5WH1MKPeMLY1sY6V6TrufzwiSwD4ds571ytcg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^5.62.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "eslint": "^8.0.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.102.tgz", + "integrity": "sha512-kJH3XtZP9YQdjq/wYVBeFuiVQl4HaC4WwRrIxAHwe2OyvrwUI43dpW3LpxSggBnxXcVCXYWf36sTnv8S75o2Gw==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.102.tgz", + "integrity": "sha512-flQP2WDyCgO24WmKA1wjjTx+xfCmavUete2Kp6yrM+631IHLGnr17eu7rYJ/d4EnDBId/ytMyrnWbTVkaVrpbQ==", + "cpu": [ + "arm64" + ], "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" } }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.102.tgz", + "integrity": "sha512-bQEQSnC44DyoIGLw1+fNXKVGoCHi7eJOHr8BdH0y1ooy9ArskMjwobBFae3GX4T1AfnrTaejyr0FvLYIb0Zkog==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=10" } }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.102.tgz", + "integrity": "sha512-dFvnhpI478svQSxqISMt00MKTDS0e4YtIr+ioZDG/uJ/q+RpcNy3QI2KMm05Fsc8Y0d4krVtvCKWgfUMsJZXAg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=10" } }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.102.tgz", + "integrity": "sha512-+a0M3CvjeIRNA/jTCzWEDh2V+mhKGvLreHOL7J97oULZy5yg4gf7h8lQX9J8t9QLbf6fsk+0F8bVH1Ie/PbXjA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=10" } }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.102.tgz", + "integrity": "sha512-w76JWLjkZNOfkB25nqdWUNCbt0zJ41CnWrJPZ+LxEai3zAnb2YtgB/cCIrwxDebRuMgE9EJXRj7gDDaTEAMOOQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=8.0.0" + "node": ">=10" } }, - "node_modules/@tanstack/eslint-plugin-query/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.102.tgz", + "integrity": "sha512-vlDb09HiGqKwz+2cxDS9T5/461ipUQBplvuhW+cCbzzGuPq8lll2xeyZU0N1E4Sz3MVdSPx1tJREuRvlQjrwNg==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=4.0" + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.102", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.102.tgz", + "integrity": "sha512-E/jfSD7sShllxBwwgDPeXp1UxvIqehj/ShSUqq1pjR/IDRXngcRSXKJK92mJkNFY7suH6BcCWwzrxZgkO7sWmw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "node_modules/@tanstack/eslint-plugin-query": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.17.1.tgz", + "integrity": "sha512-KWag75cTqs+/t3DSuoyM1Vh9Ns4FOnXZOkCn8nkxvOWnHRBL073c9Kg3YiYP3uo8ftcb1iiw3+a/5w1bf+8A7A==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.62.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "eslint": "^8.0.0" } }, "node_modules/@tanstack/query-core": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.14.2.tgz", - "integrity": "sha512-QmoJvC72sSWs3hgGis8JdmlDvqLfYGWUK4UG6OR9Q6t28JMN9m2FDwKPqoSJ9YVocELCSjMt/FGjEiLfk8000Q==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.17.1.tgz", + "integrity": "sha512-kUXozQmU7NBtzX5dM6qfFNZN+YK/9Ct37hnG/ogdgI4mExIx7VH/qRepsPhKfNrJz2w81/JykmM3Uug6sVpUSw==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/react-query": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.15.0.tgz", - "integrity": "sha512-hWLuZ2Hg9HzmHJ3VtWzhvK+sTxPz+rIIujYUxzapPoU9PPXe7NCm8k8EaKpm+Sc65FM7Dljfk/Ov9yYMhwg9vw==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.17.1.tgz", + "integrity": "sha512-4JYgX0kU+pvwVQi5eRiHGvBK7WnahEl6lmaxd32ZVSKmByAxLgaewoxBR03cdDNse8lUD2zGOe0sx3M/EGRlmA==", "dependencies": { - "@tanstack/query-core": "5.14.2" + "@tanstack/query-core": "5.17.1" }, "funding": { "type": "github", @@ -3330,18 +3957,6 @@ "node": ">=14" } }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@testing-library/dom/node_modules/aria-query": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", @@ -3351,38 +3966,40 @@ "deep-equal": "^2.0.5" } }, - "node_modules/@testing-library/dom/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/@testing-library/dom/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@testing-library/dom/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "node_modules/@testing-library/dom/node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", "dev": true }, "node_modules/@testing-library/jest-dom": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz", - "integrity": "sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.2.0.tgz", + "integrity": "sha512-+BVQlJ9cmEn5RDMUS8c2+TU6giLvzaHZ8sU/x0Jj7fk+6/46wPdwlgOPcpxS17CjcanBi/3VmGMqVr2rmbUmNw==", "dev": true, "dependencies": { - "@adobe/css-tools": "^4.3.1", + "@adobe/css-tools": "^4.3.2", "@babel/runtime": "^7.9.2", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", + "dom-accessibility-api": "^0.6.3", "lodash": "^4.17.15", "redent": "^3.0.0" }, @@ -3412,19 +4029,6 @@ } } }, - "node_modules/@testing-library/jest-dom/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/react": { "version": "14.1.2", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", @@ -3515,9 +4119,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", - "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" @@ -3578,6 +4182,38 @@ "pretty-format": "^29.0.0" } }, + "node_modules/@types/jest/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@types/jest/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@types/jest/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/@types/js-levenshtein": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz", @@ -3615,9 +4251,9 @@ } }, "node_modules/@types/node": { - "version": "20.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", - "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "version": "20.10.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz", + "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -3635,9 +4271,9 @@ "devOptional": true }, "node_modules/@types/react": { - "version": "18.2.45", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", - "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "version": "18.2.46", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.46.tgz", + "integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==", "devOptional": true, "dependencies": { "@types/prop-types": "*", @@ -3700,16 +4336,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.16.0.tgz", - "integrity": "sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.17.0.tgz", + "integrity": "sha512-Vih/4xLXmY7V490dGwBQJTpIZxH4ZFH6eCVmQ4RFkB+wmaCTDAx4dtgoWwMNGKLkqRY1L6rPqzEbjorRnDo4rQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/type-utils": "6.16.0", - "@typescript-eslint/utils": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/type-utils": "6.17.0", + "@typescript-eslint/utils": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -3734,16 +4370,41 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.17.0.tgz", + "integrity": "sha512-LofsSPjN/ITNkzV47hxas2JCsNCEnGhVvocfyOcLzT9c/tSZE7SfhS/iWtzP1lKNOEfLhRTZz6xqI8N2RzweSQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.16.0.tgz", - "integrity": "sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.17.0.tgz", + "integrity": "sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/typescript-estree": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4" }, "engines": { @@ -3763,13 +4424,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.16.0.tgz", - "integrity": "sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.17.0.tgz", + "integrity": "sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0" + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3780,13 +4441,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.16.0.tgz", - "integrity": "sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.17.0.tgz", + "integrity": "sha512-hDXcWmnbtn4P2B37ka3nil3yi3VCQO2QEB9gBiHJmQp5wmyQWqnjA85+ZcE8c4FqnaB6lBwMrPkgd4aBYz3iNg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.16.0", - "@typescript-eslint/utils": "6.16.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "@typescript-eslint/utils": "6.17.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -3806,10 +4467,35 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.17.0.tgz", + "integrity": "sha512-LofsSPjN/ITNkzV47hxas2JCsNCEnGhVvocfyOcLzT9c/tSZE7SfhS/iWtzP1lKNOEfLhRTZz6xqI8N2RzweSQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.17.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/typescript-estree": "6.17.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, "node_modules/@typescript-eslint/types": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.16.0.tgz", - "integrity": "sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.17.0.tgz", + "integrity": "sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -3820,13 +4506,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.16.0.tgz", - "integrity": "sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.17.0.tgz", + "integrity": "sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/visitor-keys": "6.16.0", + "@typescript-eslint/types": "6.17.0", + "@typescript-eslint/visitor-keys": "6.17.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -3848,37 +4534,112 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.16.0.tgz", - "integrity": "sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.16.0", - "@typescript-eslint/types": "6.16.0", - "@typescript-eslint/typescript-estree": "6.16.0", - "semver": "^7.5.4" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.16.0.tgz", - "integrity": "sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==", + "version": "6.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.17.0.tgz", + "integrity": "sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.16.0", + "@typescript-eslint/types": "6.17.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -3933,9 +4694,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -4173,11 +4934,11 @@ } }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.4.tgz", + "integrity": "sha512-heJnIs6N4aa1eSthhN9M5ioILu8Wi8vmQW9iHQ9NUvfkJb0lEEDUiIdQNAuBtfUt3FxReaKdpQA5DbmMOqzF/A==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.4", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -4203,6 +4964,22 @@ "@babel/core": "^7.8.0" } }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -4494,9 +5271,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001571", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", - "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "version": "1.0.30001574", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz", + "integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==", "dev": true, "funding": [ { @@ -4514,19 +5291,16 @@ ] }, "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, "node_modules/char-regex": { @@ -4651,6 +5425,23 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -4779,6 +5570,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -5057,9 +5864,9 @@ } }, "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", "dev": true }, "node_modules/domexception": { @@ -5097,9 +5904,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.616", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", - "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "version": "1.4.622", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.622.tgz", + "integrity": "sha512-GZ47DEy0Gm2Z8RVG092CkFvX7SdotG57c4YZOe8W8qD4rOmk3plgeNmiLVRHP/Liqj1wRiY3uUUod9vb9hnxZA==", "dev": true }, "node_modules/emittery": { @@ -5161,9 +5968,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.10", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", - "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", "dev": true, "hasInstallScript": true, "bin": { @@ -5173,29 +5980,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.10", - "@esbuild/android-arm": "0.19.10", - "@esbuild/android-arm64": "0.19.10", - "@esbuild/android-x64": "0.19.10", - "@esbuild/darwin-arm64": "0.19.10", - "@esbuild/darwin-x64": "0.19.10", - "@esbuild/freebsd-arm64": "0.19.10", - "@esbuild/freebsd-x64": "0.19.10", - "@esbuild/linux-arm": "0.19.10", - "@esbuild/linux-arm64": "0.19.10", - "@esbuild/linux-ia32": "0.19.10", - "@esbuild/linux-loong64": "0.19.10", - "@esbuild/linux-mips64el": "0.19.10", - "@esbuild/linux-ppc64": "0.19.10", - "@esbuild/linux-riscv64": "0.19.10", - "@esbuild/linux-s390x": "0.19.10", - "@esbuild/linux-x64": "0.19.10", - "@esbuild/netbsd-x64": "0.19.10", - "@esbuild/openbsd-x64": "0.19.10", - "@esbuild/sunos-x64": "0.19.10", - "@esbuild/win32-arm64": "0.19.10", - "@esbuild/win32-ia32": "0.19.10", - "@esbuild/win32-x64": "0.19.10" + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" } }, "node_modules/escalade": { @@ -5239,6 +6046,15 @@ "source-map": "~0.6.1" } }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5377,19 +6193,16 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.0.0" } }, "node_modules/eslint-visitor-keys": { @@ -5414,6 +6227,47 @@ "concat-map": "0.0.1" } }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5468,6 +6322,15 @@ "node": ">=0.10" } }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -5480,7 +6343,7 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { + "node_modules/esrecurse/node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -5489,6 +6352,15 @@ "node": ">=4.0" } }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -5566,18 +6438,6 @@ "node": ">=4" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5743,9 +6603,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz", + "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==", "funding": [ { "type": "individual", @@ -5797,9 +6657,9 @@ } }, "node_modules/framer-motion": { - "version": "10.16.16", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.16.16.tgz", - "integrity": "sha512-je6j91rd7NmUX7L1XHouwJ4v3R+SO4umso2LUcgOct3rHZ0PajZ80ETYZTajzEXEl9DlKyzjyt4AvGQ+lrebOw==", + "version": "10.17.6", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-10.17.6.tgz", + "integrity": "sha512-WPPm0vLGTbhLOsD7v1fEv3yjX1RrmzsVI3CZ6dpBJvVb7wKMA6mpZsQzTYiSUDz/YIlvTUHHY0Jum7iEHnLHDA==", "dependencies": { "tslib": "^2.4.0" }, @@ -6228,12 +7088,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" @@ -6380,18 +7240,20 @@ "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/internal-slot": { @@ -6917,6 +7779,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -6950,6 +7860,22 @@ } } }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-config": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", @@ -6995,6 +7921,54 @@ } } }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -7010,6 +7984,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-docblock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", @@ -7038,6 +8060,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-environment-jsdom": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", @@ -7129,6 +8199,38 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-matcher-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", @@ -7144,6 +8246,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", @@ -7164,6 +8314,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -7237,6 +8435,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-runner": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", @@ -7269,6 +8483,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-runtime": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", @@ -7302,6 +8532,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -7333,6 +8579,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-svg-transformer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/jest-svg-transformer/-/jest-svg-transformer-1.0.0.tgz", @@ -7360,6 +8654,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-validate": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", @@ -7389,6 +8699,54 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", @@ -7408,6 +8766,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", @@ -7655,6 +9029,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -7676,15 +9066,12 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "yallist": "^3.0.2" } }, "node_modules/lz-string": { @@ -7860,6 +9247,22 @@ } } }, + "node_modules/msw/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/msw/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -8084,6 +9487,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -8316,9 +9735,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "dev": true, "funding": [ { @@ -8374,17 +9793,17 @@ } }, "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", + "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "react-is": "^17.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { @@ -8400,9 +9819,9 @@ } }, "node_modules/pretty-format/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "dev": true }, "node_modules/prompts": { @@ -8849,10 +10268,13 @@ } }, "node_modules/rollup": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", - "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.3.tgz", + "integrity": "sha512-JnchF0ZGFiqGpAPjg3e89j656Ne4tTtCY1VZc1AxtoQcRIxjTu9jyYHBAtkDXE+X681n4un/nX9SU52AroSRzg==", "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, @@ -8861,19 +10283,19 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.1", - "@rollup/rollup-android-arm64": "4.9.1", - "@rollup/rollup-darwin-arm64": "4.9.1", - "@rollup/rollup-darwin-x64": "4.9.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", - "@rollup/rollup-linux-arm64-gnu": "4.9.1", - "@rollup/rollup-linux-arm64-musl": "4.9.1", - "@rollup/rollup-linux-riscv64-gnu": "4.9.1", - "@rollup/rollup-linux-x64-gnu": "4.9.1", - "@rollup/rollup-linux-x64-musl": "4.9.1", - "@rollup/rollup-win32-arm64-msvc": "4.9.1", - "@rollup/rollup-win32-ia32-msvc": "4.9.1", - "@rollup/rollup-win32-x64-msvc": "4.9.1", + "@rollup/rollup-android-arm-eabi": "4.9.3", + "@rollup/rollup-android-arm64": "4.9.3", + "@rollup/rollup-darwin-arm64": "4.9.3", + "@rollup/rollup-darwin-x64": "4.9.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.3", + "@rollup/rollup-linux-arm64-gnu": "4.9.3", + "@rollup/rollup-linux-arm64-musl": "4.9.3", + "@rollup/rollup-linux-riscv64-gnu": "4.9.3", + "@rollup/rollup-linux-x64-gnu": "4.9.3", + "@rollup/rollup-linux-x64-musl": "4.9.3", + "@rollup/rollup-win32-arm64-msvc": "4.9.3", + "@rollup/rollup-win32-ia32-msvc": "4.9.3", + "@rollup/rollup-win32-x64-msvc": "4.9.3", "fsevents": "~2.3.2" } }, @@ -8945,9 +10367,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", - "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "version": "1.69.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", + "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -8996,6 +10418,24 @@ "node": ">=10" } }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", @@ -9861,6 +11301,18 @@ "node": ">=12" } }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/whatwg-mimetype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", @@ -9949,9 +11401,9 @@ } }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -9959,10 +11411,7 @@ "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrappy": { @@ -9985,9 +11434,9 @@ } }, "node_modules/ws": { - "version": "8.15.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", - "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -10030,9 +11479,9 @@ } }, "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, "node_modules/yaml": { diff --git a/src/components/Review/Review.module.scss b/src/components/Review/Review.module.scss index 0843f933..f958465f 100644 --- a/src/components/Review/Review.module.scss +++ b/src/components/Review/Review.module.scss @@ -23,7 +23,7 @@ &__star { display: inline; - font-size: 16px; + font-size: 1.6rem; color: sass.$etc0; } diff --git a/src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss b/src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss index 7c4544f1..0f7c7303 100644 --- a/src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss +++ b/src/components/Review/ReviewImageSlider/ReviewImageSlider.module.scss @@ -9,8 +9,8 @@ transition: all 1s; img { - width: 76px; - height: 76px; + width: 7.6rem; + height: 7.6rem; } } @@ -20,9 +20,9 @@ left: 10px; transform: translate(-10px, -50%); - width: 24px; - height: 24px; - border-radius: 12px; + width: 2.4rem; + height: 2.2rem; + border-radius: 1.2rem; background-color: #ffffff; z-index: 2; @@ -40,9 +40,9 @@ right: 10px; transform: translate(-10px, -50%); - width: 24px; - height: 24px; - border-radius: 12px; + width: 2.4rem; + height: 2.4rem; + border-radius: 1.2rem; background-color: #ffffff; z-index: 2; From c2b0c2ff7d61b92b5984e09bc2c7e10ba4667afd Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 16:57:09 +0900 Subject: [PATCH 07/13] fix: css unit px to rem --- public/mockServiceWorker.js | 186 +++++++++--------- .../BottomFixedBtn/BottomFixedBtn.module.scss | 9 +- src/pages/Detail/Contents/Contents.tsx | 8 +- .../BasicInformation/BasicInformation.tsx | 8 +- .../Others/OtherCard/OtherCard.module.scss | 8 +- .../Information/Others/Others.module.scss | 12 +- .../ShortReveiws/ShortReviews.module.scss | 2 +- .../Information/ShortReveiws/ShortReviews.tsx | 2 +- .../Detail/Main/Swiper/Swiper.module.scss | 2 +- src/pages/Detail/Main/Title/Title.module.scss | 2 +- src/pages/Detail/Main/Title/Title.tsx | 2 +- .../Detail/Navigation/Navigation.module.scss | 4 +- src/pages/Detail/Navigation/Navigation.tsx | 8 +- 13 files changed, 127 insertions(+), 126 deletions(-) diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js index e369128e..9b2a45b7 100644 --- a/public/mockServiceWorker.js +++ b/public/mockServiceWorker.js @@ -8,124 +8,124 @@ * - Please do NOT serve this file on production. */ -const INTEGRITY_CHECKSUM = 'c5f7f8e188b673ea4e677df7ea3c5a39' -const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') -const activeClientIds = new Set() +const INTEGRITY_CHECKSUM = "c5f7f8e188b673ea4e677df7ea3c5a39"; +const IS_MOCKED_RESPONSE = Symbol("isMockedResponse"); +const activeClientIds = new Set(); -self.addEventListener('install', function () { - self.skipWaiting() -}) +self.addEventListener("install", function () { + self.skipWaiting(); +}); -self.addEventListener('activate', function (event) { - event.waitUntil(self.clients.claim()) -}) +self.addEventListener("activate", function (event) { + event.waitUntil(self.clients.claim()); +}); -self.addEventListener('message', async function (event) { - const clientId = event.source.id +self.addEventListener("message", async function (event) { + const clientId = event.source.id; if (!clientId || !self.clients) { - return + return; } - const client = await self.clients.get(clientId) + const client = await self.clients.get(clientId); if (!client) { - return + return; } const allClients = await self.clients.matchAll({ - type: 'window', - }) + type: "window", + }); switch (event.data) { - case 'KEEPALIVE_REQUEST': { + case "KEEPALIVE_REQUEST": { sendToClient(client, { - type: 'KEEPALIVE_RESPONSE', - }) - break + type: "KEEPALIVE_RESPONSE", + }); + break; } - case 'INTEGRITY_CHECK_REQUEST': { + case "INTEGRITY_CHECK_REQUEST": { sendToClient(client, { - type: 'INTEGRITY_CHECK_RESPONSE', + type: "INTEGRITY_CHECK_RESPONSE", payload: INTEGRITY_CHECKSUM, - }) - break + }); + break; } - case 'MOCK_ACTIVATE': { - activeClientIds.add(clientId) + case "MOCK_ACTIVATE": { + activeClientIds.add(clientId); sendToClient(client, { - type: 'MOCKING_ENABLED', + type: "MOCKING_ENABLED", payload: true, - }) - break + }); + break; } - case 'MOCK_DEACTIVATE': { - activeClientIds.delete(clientId) - break + case "MOCK_DEACTIVATE": { + activeClientIds.delete(clientId); + break; } - case 'CLIENT_CLOSED': { - activeClientIds.delete(clientId) + case "CLIENT_CLOSED": { + activeClientIds.delete(clientId); const remainingClients = allClients.filter((client) => { - return client.id !== clientId - }) + return client.id !== clientId; + }); // Unregister itself when there are no more clients if (remainingClients.length === 0) { - self.registration.unregister() + self.registration.unregister(); } - break + break; } } -}) +}); -self.addEventListener('fetch', function (event) { - const { request } = event +self.addEventListener("fetch", function (event) { + const { request } = event; // Bypass navigation requests. - if (request.mode === 'navigate') { - return + if (request.mode === "navigate") { + return; } // Opening the DevTools triggers the "only-if-cached" request // that cannot be handled by the worker. Bypass such requests. - if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') { - return + if (request.cache === "only-if-cached" && request.mode !== "same-origin") { + return; } // Bypass all requests when there are no active clients. // Prevents the self-unregistered worked from handling requests // after it's been deleted (still remains active until the next reload). if (activeClientIds.size === 0) { - return + return; } // Generate unique request ID. - const requestId = crypto.randomUUID() - event.respondWith(handleRequest(event, requestId)) -}) + const requestId = crypto.randomUUID(); + event.respondWith(handleRequest(event, requestId)); +}); async function handleRequest(event, requestId) { - const client = await resolveMainClient(event) - const response = await getResponse(event, client, requestId) + const client = await resolveMainClient(event); + const response = await getResponse(event, client, requestId); // Send back the response clone for the "response:*" life-cycle events. // Ensure MSW is active and ready to handle the message, otherwise // this message will pend indefinitely. if (client && activeClientIds.has(client.id)) { - ;(async function () { - const responseClone = response.clone() + (async function () { + const responseClone = response.clone(); sendToClient( client, { - type: 'RESPONSE', + type: "RESPONSE", payload: { requestId, isMockedResponse: IS_MOCKED_RESPONSE in response, @@ -137,11 +137,11 @@ async function handleRequest(event, requestId) { }, }, [responseClone.body], - ) - })() + ); + })(); } - return response + return response; } // Resolve the main client for the given event. @@ -149,49 +149,49 @@ async function handleRequest(event, requestId) { // that registered the worker. It's with the latter the worker should // communicate with during the response resolving phase. async function resolveMainClient(event) { - const client = await self.clients.get(event.clientId) + const client = await self.clients.get(event.clientId); - if (client?.frameType === 'top-level') { - return client + if (client?.frameType === "top-level") { + return client; } const allClients = await self.clients.matchAll({ - type: 'window', - }) + type: "window", + }); return allClients .filter((client) => { // Get only those clients that are currently visible. - return client.visibilityState === 'visible' + return client.visibilityState === "visible"; }) .find((client) => { // Find the client ID that's recorded in the // set of clients that have registered the worker. - return activeClientIds.has(client.id) - }) + return activeClientIds.has(client.id); + }); } async function getResponse(event, client, requestId) { - const { request } = event + const { request } = event; // Clone the request because it might've been already used // (i.e. its body has been read and sent to the client). - const requestClone = request.clone() + const requestClone = request.clone(); function passthrough() { - const headers = Object.fromEntries(requestClone.headers.entries()) + const headers = Object.fromEntries(requestClone.headers.entries()); // Remove internal MSW request header so the passthrough request // complies with any potential CORS preflight checks on the server. // Some servers forbid unknown request headers. - delete headers['x-msw-intention'] + delete headers["x-msw-intention"]; - return fetch(requestClone, { headers }) + return fetch(requestClone, { headers }); } // Bypass mocking when the client is not active. if (!client) { - return passthrough() + return passthrough(); } // Bypass initial page load requests (i.e. static assets). @@ -199,22 +199,22 @@ async function getResponse(event, client, requestId) { // means that MSW hasn't dispatched the "MOCK_ACTIVATE" event yet // and is not ready to handle requests. if (!activeClientIds.has(client.id)) { - return passthrough() + return passthrough(); } // Bypass requests with the explicit bypass header. // Such requests can be issued by "ctx.fetch()". - const mswIntention = request.headers.get('x-msw-intention') - if (['bypass', 'passthrough'].includes(mswIntention)) { - return passthrough() + const mswIntention = request.headers.get("x-msw-intention"); + if (["bypass", "passthrough"].includes(mswIntention)) { + return passthrough(); } // Notify the client that a request has been intercepted. - const requestBuffer = await request.arrayBuffer() + const requestBuffer = await request.arrayBuffer(); const clientMessage = await sendToClient( client, { - type: 'REQUEST', + type: "REQUEST", payload: { id: requestId, url: request.url, @@ -233,38 +233,38 @@ async function getResponse(event, client, requestId) { }, }, [requestBuffer], - ) + ); switch (clientMessage.type) { - case 'MOCK_RESPONSE': { - return respondWithMock(clientMessage.data) + case "MOCK_RESPONSE": { + return respondWithMock(clientMessage.data); } - case 'MOCK_NOT_FOUND': { - return passthrough() + case "MOCK_NOT_FOUND": { + return passthrough(); } } - return passthrough() + return passthrough(); } function sendToClient(client, message, transferrables = []) { return new Promise((resolve, reject) => { - const channel = new MessageChannel() + const channel = new MessageChannel(); channel.port1.onmessage = (event) => { if (event.data && event.data.error) { - return reject(event.data.error) + return reject(event.data.error); } - resolve(event.data) - } + resolve(event.data); + }; client.postMessage( message, [channel.port2].concat(transferrables.filter(Boolean)), - ) - }) + ); + }); } async function respondWithMock(response) { @@ -273,15 +273,15 @@ async function respondWithMock(response) { // instance will have status code set to 0. Since it's not possible to create // a Response instance with status code 0, handle that use-case separately. if (response.status === 0) { - return Response.error() + return Response.error(); } - const mockedResponse = new Response(response.body, response) + const mockedResponse = new Response(response.body, response); Reflect.defineProperty(mockedResponse, IS_MOCKED_RESPONSE, { value: true, enumerable: true, - }) + }); - return mockedResponse + return mockedResponse; } diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss index 585a8975..905e6602 100644 --- a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss @@ -5,7 +5,7 @@ padding: 0 24px; width: 100%; - max-width: 450px; + max-width: 4.5rem; &__wrapper { display: flex; @@ -15,7 +15,7 @@ width: 100%; height: 48px; - border-radius: 16px; + border-radius: 1.6rem; z-index: 5; @@ -23,10 +23,7 @@ span { color: sass.$neutral0; - font-size: 14px; - font-style: normal; - font-weight: 700; - line-height: 22px; + @include sass.typography(button); } } } diff --git a/src/pages/Detail/Contents/Contents.tsx b/src/pages/Detail/Contents/Contents.tsx index 211170da..0a843423 100644 --- a/src/pages/Detail/Contents/Contents.tsx +++ b/src/pages/Detail/Contents/Contents.tsx @@ -10,9 +10,9 @@ function Contents() { <Tabs isFitted className={styles.container}> <TabList> <Tab - fontSize="14px" + fontSize="1.4rem" fontWeight="700" - lineHeight="22px" + lineHeight="2.2rem" color="#CDCFD0" borderColor="#fff" _selected={{ color: "#1D2433", borderColor: "#2388FF" }} @@ -20,9 +20,9 @@ function Contents() { 상품정보 </Tab> <Tab - fontSize="14px" + fontSize="1.4rem" fontWeight="700" - lineHeight="22px" + lineHeight="2.2rem" color="#CDCFD0" borderColor="#fff" _selected={{ color: "#1D2433", borderColor: "#2388FF" }} diff --git a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx index b8bfac92..d67f9e33 100644 --- a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx +++ b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx @@ -14,20 +14,20 @@ function BasicInformation() { <Map /> <div className={styles.container__contents}> <div className={styles.container__contents__item}> - <MdPlace color="#979C9E" fontSize="24px" /> + <MdPlace color="#979C9E" fontSize="2.4rem" /> <span>경기도 양평군 양평읍 백안리 9 </span> </div> <div className={styles.container__contents__item}> - <IoMdCall color="#979C9E" fontSize="24px" /> + <IoMdCall color="#979C9E" fontSize="2.4rem" /> <a href="#">031-771-1234</a> </div> <div className={styles.container__contents__item}> - <AiOutlineLink color="#979C9E" fontSize="24px" /> + <AiOutlineLink color="#979C9E" fontSize="2.4rem" /> <a href="#">공식 홈페이지 바로가기 </a> </div> <div className={styles.container__contents__item}> {/* 시계 아이콘 다름 */} - <FaRegClock color="#979C9E" fontSize="24px" /> + <FaRegClock color="#979C9E" fontSize="2.4rem" /> <span>매일 09:00~18:00</span> </div> </div> diff --git a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss index ea12249d..41a893c5 100644 --- a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss +++ b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss @@ -8,9 +8,9 @@ cursor: pointer; &__image { - width: 144px; - height: 144px; - border-radius: 16px; + width: 14.4rem; + height: 14.4rem; + border-radius: 1.6rem; } &__contents { @@ -29,7 +29,7 @@ &__star { display: inline; - font-size: 16px; + font-size: 1.6rem; color: sass.$etc0; } diff --git a/src/pages/Detail/Contents/Information/Others/Others.module.scss b/src/pages/Detail/Contents/Information/Others/Others.module.scss index c43c989f..8b314948 100644 --- a/src/pages/Detail/Contents/Information/Others/Others.module.scss +++ b/src/pages/Detail/Contents/Information/Others/Others.module.scss @@ -23,9 +23,9 @@ left: 10px; transform: translate(-10px, -50%); - width: 24px; - height: 24px; - border-radius: 12px; + width: 2.4rem; + height: 2.4rem; + border-radius: 1.2rem; background-color: #ffffff; z-index: 2; @@ -43,9 +43,9 @@ right: 10px; transform: translate(-10px, -50%); - width: 24px; - height: 24px; - border-radius: 12px; + width: 2.4rem; + height: 2.4rem; + border-radius: 1.2rem; background-color: #ffffff; z-index: 2; diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss index 551a1ded..b12bd180 100644 --- a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss +++ b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss @@ -35,7 +35,7 @@ &__star { display: inline; - font-size: 32px; + font-size: 3.2rem; color: sass.$etc0; } diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx index d1afb483..af419942 100644 --- a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx +++ b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx @@ -40,7 +40,7 @@ function ShortReviews() { <div className={styles.container__title}> <h3>리뷰</h3> <div className={styles.container__title__rightBox} onClick={() => {}}> - <CiEdit fontSize="24px" /> + <CiEdit fontSize="2.4rem" /> <span>리뷰쓰기</span> </div> </div> diff --git a/src/pages/Detail/Main/Swiper/Swiper.module.scss b/src/pages/Detail/Main/Swiper/Swiper.module.scss index 4bf0e4ab..1ef3a55e 100644 --- a/src/pages/Detail/Main/Swiper/Swiper.module.scss +++ b/src/pages/Detail/Main/Swiper/Swiper.module.scss @@ -1,6 +1,6 @@ .container { width: 100%; - height: 248px; + height: 24.8rem; display: flex; justify-content: center; diff --git a/src/pages/Detail/Main/Title/Title.module.scss b/src/pages/Detail/Main/Title/Title.module.scss index 0dd5879d..32fdb895 100644 --- a/src/pages/Detail/Main/Title/Title.module.scss +++ b/src/pages/Detail/Main/Title/Title.module.scss @@ -21,7 +21,7 @@ &__star { display: inline; - font-size: 16px; + font-size: 1.6rem; color: sass.$etc0; } diff --git a/src/pages/Detail/Main/Title/Title.tsx b/src/pages/Detail/Main/Title/Title.tsx index c84fae78..f9eb83a1 100644 --- a/src/pages/Detail/Main/Title/Title.tsx +++ b/src/pages/Detail/Main/Title/Title.tsx @@ -19,7 +19,7 @@ function Title() { <div className={styles.container__positionAbsoluteIcons}> <FaRegHeart fontSize="24px" cursor="pointer" onclick={() => {}} /> <IoShareSocialOutline - fontSize="24px" + fontSize="2.4rem" cursor="pointer" onclick={() => {}} /> diff --git a/src/pages/Detail/Navigation/Navigation.module.scss b/src/pages/Detail/Navigation/Navigation.module.scss index b275bb9b..873bbee5 100644 --- a/src/pages/Detail/Navigation/Navigation.module.scss +++ b/src/pages/Detail/Navigation/Navigation.module.scss @@ -9,8 +9,8 @@ background-color: #fff; width: 100%; - max-width: 450px; - height: 32px; + max-width: 45rem; + height: 3.2rem; padding: 16px; &__pointer { diff --git a/src/pages/Detail/Navigation/Navigation.tsx b/src/pages/Detail/Navigation/Navigation.tsx index ee42ecd8..afe4c5c8 100644 --- a/src/pages/Detail/Navigation/Navigation.tsx +++ b/src/pages/Detail/Navigation/Navigation.tsx @@ -10,11 +10,15 @@ function Navigation() { return ( <div className={styles.container}> <AiOutlineLeft - fontSize="24px" + fontSize="2.4rem" onClick={() => navigate(-1)} cursor="pointer" /> - <GoKebabHorizontal fontSize="24px" onClick={() => {}} cursor="pointer" /> + <GoKebabHorizontal + fontSize="2.4rem" + onClick={() => {}} + cursor="pointer" + /> </div> ); } From fcc0eb3c37efbb7463ffeeef8e6841f87c134356 Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 17:32:49 +0900 Subject: [PATCH 08/13] fix: scss @use as * --- .../GlobalNavigationBar.module.scss | 2 +- src/components/Review/Review.module.scss | 16 +++++++-------- .../BottomFixedBtn/BottomFixedBtn.module.scss | 9 +++++---- .../BasicInformation.module.scss | 8 ++++---- .../Others/OtherCard/OtherCard.module.scss | 16 +++++++-------- .../Information/Others/Others.module.scss | 6 +++--- .../ShortReveiws/ShortReviews.module.scss | 20 +++++++++---------- src/pages/Detail/Main/Title/Title.module.scss | 16 +++++++-------- 8 files changed, 47 insertions(+), 46 deletions(-) diff --git a/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss b/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss index acfa8208..7599d84b 100644 --- a/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss +++ b/src/components/GlobalNavigationBar/GlobalNavigationBar.module.scss @@ -1,4 +1,4 @@ -@use "@/sass"; +@use "@/sass" as *; .container { position: fixed; diff --git a/src/components/Review/Review.module.scss b/src/components/Review/Review.module.scss index f958465f..7b74f1d8 100644 --- a/src/components/Review/Review.module.scss +++ b/src/components/Review/Review.module.scss @@ -1,10 +1,10 @@ -@use "@/sass"; +@use "@/sass" as *; .container { display: flex; gap: 8px; padding: 24px 20px; - border-bottom: 1px solid sass.$neutral100; + border-bottom: 1px solid $neutral100; &__contentsBox { width: 100%; @@ -14,7 +14,7 @@ gap: 4px; &__name { - @include sass.typography(button); + @include typography(button); } &__secondItems { @@ -24,23 +24,23 @@ &__star { display: inline; font-size: 1.6rem; - color: sass.$etc0; + color: $etc0; } &__point { margin-left: 2px; - @include sass.typography(captionSmall); + @include typography(captionSmall); } &__visitedAt { margin-left: 9px; - color: sass.$primary300; - @include sass.typography(captionSmall); + color: $primary300; + @include typography(captionSmall); } } &__content { - @include sass.typography(bodySmall); + @include typography(bodySmall); text-overflow: ellipsis; } } diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss index 905e6602..a4281556 100644 --- a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss @@ -1,4 +1,5 @@ -@use "@/sass"; +@use "@/sass" as *; + .container { position: fixed; bottom: 24px; @@ -13,7 +14,7 @@ align-items: center; width: 100%; - height: 48px; + height: 4.8rem; border-radius: 1.6rem; @@ -22,8 +23,8 @@ cursor: pointer; span { - color: sass.$neutral0; - @include sass.typography(button); + color: $neutral0; + @include typography(button); } } } diff --git a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss index 127a43ab..a14eac08 100644 --- a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss +++ b/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss @@ -1,16 +1,16 @@ -@use "@/sass"; +@use "@/sass" as *; .container { margin: 20px 0; padding-bottom: 40px; - border-bottom: 12px solid sass.$neutral100; + border-bottom: 12px solid $neutral100; &__title { padding: 8px 20px; margin-bottom: 16px; - @include sass.typography(titleMedium); + @include typography(titleMedium); } &__contents { @@ -26,7 +26,7 @@ align-items: center; gap: 12px; - @include sass.typography(tabLabel); + @include typography(tabLabel); a { text-decoration-line: underline; diff --git a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss index 41a893c5..b1084abf 100644 --- a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss +++ b/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss @@ -1,4 +1,4 @@ -@use "@/sass"; +@use "@/sass" as *; .container { display: flex; @@ -15,12 +15,12 @@ &__contents { h4 { - @include sass.typography(titleSmall); + @include typography(titleSmall); } p { - color: sass.$neutral400; - @include sass.typography(captionSmall); + color: $neutral400; + @include typography(captionSmall); } &__reviews { @@ -30,18 +30,18 @@ &__star { display: inline; font-size: 1.6rem; - color: sass.$etc0; + color: $etc0; } &__point { color: #1d2433; - @include sass.typography(captionSmall); + @include typography(captionSmall); margin-right: 4px; } &__reviewsCount { - color: sass.$neutral400; - @include sass.typography(captionSmall); + color: $neutral400; + @include typography(captionSmall); } } } diff --git a/src/pages/Detail/Contents/Information/Others/Others.module.scss b/src/pages/Detail/Contents/Information/Others/Others.module.scss index 8b314948..c425064f 100644 --- a/src/pages/Detail/Contents/Information/Others/Others.module.scss +++ b/src/pages/Detail/Contents/Information/Others/Others.module.scss @@ -1,4 +1,4 @@ -@use "@/sass"; +@use "@/sass" as *; .container { padding: 40px 0; @@ -7,7 +7,7 @@ padding: 8px 20px; h3 { - @include sass.typography(titleMedium); + @include typography(titleMedium); } } @@ -21,7 +21,7 @@ position: absolute; top: 50%; left: 10px; - transform: translate(-10px, -50%); + transform: translate(10px, -50%); width: 2.4rem; height: 2.4rem; diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss index b12bd180..14302691 100644 --- a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss +++ b/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss @@ -1,8 +1,8 @@ -@use "@/sass"; +@use "@/sass" as *; .container { padding: 40px 0; - border-bottom: 12px solid sass.$neutral100; + border-bottom: 12px solid $neutral100; &__title { padding: 8px 20px; @@ -12,7 +12,7 @@ justify-content: space-between; h3 { - @include sass.typography(titleMedium); + @include typography(titleMedium); } &__rightBox { @@ -20,7 +20,7 @@ cursor: pointer; span { - @include sass.typography(tabLabel); + @include typography(tabLabel); } } } @@ -36,17 +36,17 @@ &__star { display: inline; font-size: 3.2rem; - color: sass.$etc0; + color: $etc0; } &__point { color: #1d2433; - @include sass.typography(headline); + @include typography(headline); } &__reviewsCount { - color: sass.$neutral400; - @include sass.typography(tabLabel); + color: $neutral400; + @include typography(tabLabel); } } @@ -59,7 +59,7 @@ margin: 0 20px; - border: 1px solid sass.$neutral300; + border: 1px solid $neutral300; border-radius: 8px; display: flex; @@ -69,7 +69,7 @@ cursor: pointer; span { - @include sass.typography(button); + @include typography(button); } } } diff --git a/src/pages/Detail/Main/Title/Title.module.scss b/src/pages/Detail/Main/Title/Title.module.scss index 32fdb895..12fd17a6 100644 --- a/src/pages/Detail/Main/Title/Title.module.scss +++ b/src/pages/Detail/Main/Title/Title.module.scss @@ -1,4 +1,4 @@ -@use "@/sass"; +@use "@/sass" as *; .container { width: 100%; @@ -6,11 +6,11 @@ position: relative; &__header { - @include sass.typography(titleLarge); + @include typography(titleLarge); } &__category { - color: sass.$neutral400; - @include sass.typography(captionSmall); + color: $neutral400; + @include typography(captionSmall); margin: 4px 0; } @@ -22,17 +22,17 @@ &__star { display: inline; font-size: 1.6rem; - color: sass.$etc0; + color: $etc0; } &__point { color: #1d2433; - @include sass.typography(captionMedium); + @include typography(captionMedium); } &__reviewsCount { - color: sass.$neutral400; - @include sass.typography(captionSmall); + color: $neutral400; + @include typography(captionSmall); } } From 29bea7a774469a147e34b74f4d0bdf94248135f5 Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 17:56:11 +0900 Subject: [PATCH 09/13] fix: bottomFixedBtn error --- src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss index a4281556..8c3371d4 100644 --- a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss +++ b/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss @@ -6,7 +6,7 @@ padding: 0 24px; width: 100%; - max-width: 4.5rem; + max-width: 45rem; &__wrapper { display: flex; From 41994655254d14f1c027661925d671d77f408c47 Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 19:05:01 +0900 Subject: [PATCH 10/13] style: change components root --- .../BottomFixedBtn/BottomFixedBtn.module.scss | 3 +-- .../Detail/BottomFixedBtn/BottomFixedBtn.tsx | 0 .../Detail/Contents/Contents.module.scss | 4 ++-- .../Detail/Contents/Contents.tsx | 0 .../BasicInformation.module.scss | 0 .../BasicInformation/BasicInformation.tsx | 0 .../BasicInformation/Map/Map.module.scss | 0 .../Information/BasicInformation/Map/Map.tsx | 0 .../Information/Information.module.scss | 0 .../Contents/Information/Information.tsx | 0 .../Others/OtherCard/OtherCard.module.scss | 0 .../Others/OtherCard/OtherCard.tsx | 0 .../Information/Others/Others.module.scss | 0 .../Contents/Information/Others/Others.tsx | 0 .../Information/Reservation/Reservation.tsx | 0 .../ShortReveiws/ShortReviews.module.scss | 0 .../Information/ShortReveiws/ShortReviews.tsx | 0 .../Detail/Contents/Reviews/Reviews.tsx | 0 .../Contents/Reviews/Rviews.module.scss | 0 .../Detail/Main/Main.module.scss | 0 .../Detail/Main/Main.tsx | 0 .../Detail/Main/Swiper/Swiper.module.scss | 0 .../Detail/Main/Swiper/Swiper.tsx | 0 .../Detail/Main/Title/Title.module.scss | 0 .../Detail/Main/Title/Title.tsx | 0 .../Detail/Navigation/Navigation.module.scss | 0 .../Detail/Navigation/Navigation.tsx | 0 src/pages/Detail/Detail.tsx | 20 +++++++++++++++++++ src/pages/Detail/index.tsx | 20 ------------------- src/routes/MainRouter/MainRouter.tsx | 2 +- 30 files changed, 24 insertions(+), 25 deletions(-) rename src/{pages => components}/Detail/BottomFixedBtn/BottomFixedBtn.module.scss (95%) rename src/{pages => components}/Detail/BottomFixedBtn/BottomFixedBtn.tsx (100%) rename src/{pages => components}/Detail/Contents/Contents.module.scss (58%) rename src/{pages => components}/Detail/Contents/Contents.tsx (100%) rename src/{pages => components}/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss (100%) rename src/{pages => components}/Detail/Contents/Information/BasicInformation/BasicInformation.tsx (100%) rename src/{pages => components}/Detail/Contents/Information/BasicInformation/Map/Map.module.scss (100%) rename src/{pages => components}/Detail/Contents/Information/BasicInformation/Map/Map.tsx (100%) rename src/{pages => components}/Detail/Contents/Information/Information.module.scss (100%) rename src/{pages => components}/Detail/Contents/Information/Information.tsx (100%) rename src/{pages => components}/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss (100%) rename src/{pages => components}/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx (100%) rename src/{pages => components}/Detail/Contents/Information/Others/Others.module.scss (100%) rename src/{pages => components}/Detail/Contents/Information/Others/Others.tsx (100%) rename src/{pages => components}/Detail/Contents/Information/Reservation/Reservation.tsx (100%) rename src/{pages => components}/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss (100%) rename src/{pages => components}/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx (100%) rename src/{pages => components}/Detail/Contents/Reviews/Reviews.tsx (100%) rename src/{pages => components}/Detail/Contents/Reviews/Rviews.module.scss (100%) rename src/{pages => components}/Detail/Main/Main.module.scss (100%) rename src/{pages => components}/Detail/Main/Main.tsx (100%) rename src/{pages => components}/Detail/Main/Swiper/Swiper.module.scss (100%) rename src/{pages => components}/Detail/Main/Swiper/Swiper.tsx (100%) rename src/{pages => components}/Detail/Main/Title/Title.module.scss (100%) rename src/{pages => components}/Detail/Main/Title/Title.tsx (100%) rename src/{pages => components}/Detail/Navigation/Navigation.module.scss (100%) rename src/{pages => components}/Detail/Navigation/Navigation.tsx (100%) create mode 100644 src/pages/Detail/Detail.tsx delete mode 100644 src/pages/Detail/index.tsx diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss b/src/components/Detail/BottomFixedBtn/BottomFixedBtn.module.scss similarity index 95% rename from src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss rename to src/components/Detail/BottomFixedBtn/BottomFixedBtn.module.scss index 8c3371d4..e1950233 100644 --- a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.module.scss +++ b/src/components/Detail/BottomFixedBtn/BottomFixedBtn.module.scss @@ -7,6 +7,7 @@ width: 100%; max-width: 45rem; + z-index: 5; &__wrapper { display: flex; @@ -18,8 +19,6 @@ border-radius: 1.6rem; - z-index: 5; - cursor: pointer; span { diff --git a/src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx b/src/components/Detail/BottomFixedBtn/BottomFixedBtn.tsx similarity index 100% rename from src/pages/Detail/BottomFixedBtn/BottomFixedBtn.tsx rename to src/components/Detail/BottomFixedBtn/BottomFixedBtn.tsx diff --git a/src/pages/Detail/Contents/Contents.module.scss b/src/components/Detail/Contents/Contents.module.scss similarity index 58% rename from src/pages/Detail/Contents/Contents.module.scss rename to src/components/Detail/Contents/Contents.module.scss index 40431870..2a7fabc8 100644 --- a/src/pages/Detail/Contents/Contents.module.scss +++ b/src/components/Detail/Contents/Contents.module.scss @@ -1,9 +1,9 @@ -@use "@/sass"; +@use "@/sass" as *; .container { margin-top: 12px; padding-bottom: 40px; &__tab { - @include sass.typography(button); + @include typography(button); } } diff --git a/src/pages/Detail/Contents/Contents.tsx b/src/components/Detail/Contents/Contents.tsx similarity index 100% rename from src/pages/Detail/Contents/Contents.tsx rename to src/components/Detail/Contents/Contents.tsx diff --git a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss b/src/components/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss similarity index 100% rename from src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss rename to src/components/Detail/Contents/Information/BasicInformation/BasicInformation.module.scss diff --git a/src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx b/src/components/Detail/Contents/Information/BasicInformation/BasicInformation.tsx similarity index 100% rename from src/pages/Detail/Contents/Information/BasicInformation/BasicInformation.tsx rename to src/components/Detail/Contents/Information/BasicInformation/BasicInformation.tsx diff --git a/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.module.scss b/src/components/Detail/Contents/Information/BasicInformation/Map/Map.module.scss similarity index 100% rename from src/pages/Detail/Contents/Information/BasicInformation/Map/Map.module.scss rename to src/components/Detail/Contents/Information/BasicInformation/Map/Map.module.scss diff --git a/src/pages/Detail/Contents/Information/BasicInformation/Map/Map.tsx b/src/components/Detail/Contents/Information/BasicInformation/Map/Map.tsx similarity index 100% rename from src/pages/Detail/Contents/Information/BasicInformation/Map/Map.tsx rename to src/components/Detail/Contents/Information/BasicInformation/Map/Map.tsx diff --git a/src/pages/Detail/Contents/Information/Information.module.scss b/src/components/Detail/Contents/Information/Information.module.scss similarity index 100% rename from src/pages/Detail/Contents/Information/Information.module.scss rename to src/components/Detail/Contents/Information/Information.module.scss diff --git a/src/pages/Detail/Contents/Information/Information.tsx b/src/components/Detail/Contents/Information/Information.tsx similarity index 100% rename from src/pages/Detail/Contents/Information/Information.tsx rename to src/components/Detail/Contents/Information/Information.tsx diff --git a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss b/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss similarity index 100% rename from src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss rename to src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.module.scss diff --git a/src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx b/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx similarity index 100% rename from src/pages/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx rename to src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx diff --git a/src/pages/Detail/Contents/Information/Others/Others.module.scss b/src/components/Detail/Contents/Information/Others/Others.module.scss similarity index 100% rename from src/pages/Detail/Contents/Information/Others/Others.module.scss rename to src/components/Detail/Contents/Information/Others/Others.module.scss diff --git a/src/pages/Detail/Contents/Information/Others/Others.tsx b/src/components/Detail/Contents/Information/Others/Others.tsx similarity index 100% rename from src/pages/Detail/Contents/Information/Others/Others.tsx rename to src/components/Detail/Contents/Information/Others/Others.tsx diff --git a/src/pages/Detail/Contents/Information/Reservation/Reservation.tsx b/src/components/Detail/Contents/Information/Reservation/Reservation.tsx similarity index 100% rename from src/pages/Detail/Contents/Information/Reservation/Reservation.tsx rename to src/components/Detail/Contents/Information/Reservation/Reservation.tsx diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss b/src/components/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss similarity index 100% rename from src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss rename to src/components/Detail/Contents/Information/ShortReveiws/ShortReviews.module.scss diff --git a/src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx b/src/components/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx similarity index 100% rename from src/pages/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx rename to src/components/Detail/Contents/Information/ShortReveiws/ShortReviews.tsx diff --git a/src/pages/Detail/Contents/Reviews/Reviews.tsx b/src/components/Detail/Contents/Reviews/Reviews.tsx similarity index 100% rename from src/pages/Detail/Contents/Reviews/Reviews.tsx rename to src/components/Detail/Contents/Reviews/Reviews.tsx diff --git a/src/pages/Detail/Contents/Reviews/Rviews.module.scss b/src/components/Detail/Contents/Reviews/Rviews.module.scss similarity index 100% rename from src/pages/Detail/Contents/Reviews/Rviews.module.scss rename to src/components/Detail/Contents/Reviews/Rviews.module.scss diff --git a/src/pages/Detail/Main/Main.module.scss b/src/components/Detail/Main/Main.module.scss similarity index 100% rename from src/pages/Detail/Main/Main.module.scss rename to src/components/Detail/Main/Main.module.scss diff --git a/src/pages/Detail/Main/Main.tsx b/src/components/Detail/Main/Main.tsx similarity index 100% rename from src/pages/Detail/Main/Main.tsx rename to src/components/Detail/Main/Main.tsx diff --git a/src/pages/Detail/Main/Swiper/Swiper.module.scss b/src/components/Detail/Main/Swiper/Swiper.module.scss similarity index 100% rename from src/pages/Detail/Main/Swiper/Swiper.module.scss rename to src/components/Detail/Main/Swiper/Swiper.module.scss diff --git a/src/pages/Detail/Main/Swiper/Swiper.tsx b/src/components/Detail/Main/Swiper/Swiper.tsx similarity index 100% rename from src/pages/Detail/Main/Swiper/Swiper.tsx rename to src/components/Detail/Main/Swiper/Swiper.tsx diff --git a/src/pages/Detail/Main/Title/Title.module.scss b/src/components/Detail/Main/Title/Title.module.scss similarity index 100% rename from src/pages/Detail/Main/Title/Title.module.scss rename to src/components/Detail/Main/Title/Title.module.scss diff --git a/src/pages/Detail/Main/Title/Title.tsx b/src/components/Detail/Main/Title/Title.tsx similarity index 100% rename from src/pages/Detail/Main/Title/Title.tsx rename to src/components/Detail/Main/Title/Title.tsx diff --git a/src/pages/Detail/Navigation/Navigation.module.scss b/src/components/Detail/Navigation/Navigation.module.scss similarity index 100% rename from src/pages/Detail/Navigation/Navigation.module.scss rename to src/components/Detail/Navigation/Navigation.module.scss diff --git a/src/pages/Detail/Navigation/Navigation.tsx b/src/components/Detail/Navigation/Navigation.tsx similarity index 100% rename from src/pages/Detail/Navigation/Navigation.tsx rename to src/components/Detail/Navigation/Navigation.tsx diff --git a/src/pages/Detail/Detail.tsx b/src/pages/Detail/Detail.tsx new file mode 100644 index 00000000..1d9a0807 --- /dev/null +++ b/src/pages/Detail/Detail.tsx @@ -0,0 +1,20 @@ +import styles from "./Detail.module.scss"; + +import BottomFixedBtn from "@/components/Detail/BottomFixedBtn/BottomFixedBtn"; + +import Contents from "../../components/Detail/Contents/Contents"; +import Main from "../../components/Detail/Main/Main"; +import Navigation from "../../components/Detail/Navigation/Navigation"; + +function Detail() { + return ( + <div className={styles.container}> + <Navigation /> + <Main /> + <Contents /> + <BottomFixedBtn /> + </div> + ); +} + +export default Detail; diff --git a/src/pages/Detail/index.tsx b/src/pages/Detail/index.tsx deleted file mode 100644 index 36461cc0..00000000 --- a/src/pages/Detail/index.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import styles from "./Detail.module.scss"; - -import BottomFixedBtn from "@/pages/Detail/BottomFixedBtn/BottomFixedBtn"; - -import Contents from "./Contents/Contents"; -import Main from "./Main/Main"; -import Navigation from "./Navigation/Navigation"; - -function Detail() { - return ( - <div className={styles.container}> - <Navigation /> - <Main /> - <Contents /> - <BottomFixedBtn /> - </div> - ); -} - -export default Detail; diff --git a/src/routes/MainRouter/MainRouter.tsx b/src/routes/MainRouter/MainRouter.tsx index b81168ab..39b39781 100644 --- a/src/routes/MainRouter/MainRouter.tsx +++ b/src/routes/MainRouter/MainRouter.tsx @@ -1,6 +1,6 @@ import { Route, Routes } from "react-router-dom"; -import Detail from "@/pages/Detail"; +import Detail from "@/pages/Detail/Detail"; import Home from "@/pages/Home/Home"; import Dashboard from "@/routes/Dashboard/Dashboard"; From 557601acc78f04aaad697c7cd7defc1a779bfc6c Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 20:36:45 +0900 Subject: [PATCH 11/13] style: create detail types --- .../Information/Others/OtherCard/OtherCard.tsx | 16 ++++++++-------- src/types/detail.ts | 7 +++++++ 2 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 src/types/detail.ts diff --git a/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx b/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx index bb8488c7..26f0cb8f 100644 --- a/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx +++ b/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx @@ -2,15 +2,15 @@ import { GoStarFill } from "react-icons/go"; import styles from "./OtherCard.module.scss"; -interface OtherCardProps { - image: string; - name: string; - location: string; - point: string; - count: number; -} +import { OtherCardPropsType } from "@/types/Detail"; -function OtherCard({ image, name, location, point, count }: OtherCardProps) { +function OtherCard({ + image, + name, + location, + point, + count, +}: OtherCardPropsType) { return ( <div className={styles.container}> <div className={styles.container__image}> diff --git a/src/types/detail.ts b/src/types/detail.ts new file mode 100644 index 00000000..676fbb3d --- /dev/null +++ b/src/types/detail.ts @@ -0,0 +1,7 @@ +export interface OtherCardPropsType { + image: string; + name: string; + location: string; + point: string; + count: number; +} From 0494448eaff37335ab29bd002b5b8d41e5c7bb97 Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 21:00:09 +0900 Subject: [PATCH 12/13] fix: vercel error --- .../Detail/Contents/Information/Others/OtherCard/OtherCard.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx b/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx index 26f0cb8f..1ec0e776 100644 --- a/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx +++ b/src/components/Detail/Contents/Information/Others/OtherCard/OtherCard.tsx @@ -2,7 +2,7 @@ import { GoStarFill } from "react-icons/go"; import styles from "./OtherCard.module.scss"; -import { OtherCardPropsType } from "@/types/Detail"; +import { OtherCardPropsType } from "@/types/detail"; function OtherCard({ image, From 6401706962b20ba2cec853dc9b8d556698b039c9 Mon Sep 17 00:00:00 2001 From: JinJeongMin <jdsjm2@naver.com> Date: Fri, 5 Jan 2024 21:10:15 +0900 Subject: [PATCH 13/13] style: move interface on types --- src/components/Review/Review.tsx | 11 ++--------- src/types/detail.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/components/Review/Review.tsx b/src/components/Review/Review.tsx index 50c9ebbb..dae9dccc 100644 --- a/src/components/Review/Review.tsx +++ b/src/components/Review/Review.tsx @@ -5,14 +5,7 @@ import styles from "./Review.module.scss"; import ReviewImageSlider from "./ReviewImageSlider/ReviewImageSlider"; -interface ReviewProps { - name: string; - isGoogle: boolean; - point: string; - visitedAt: string; - content: string; - images: string[] | undefined; -} +import { ReviewPropsTypes } from "@/types/detail"; function Review({ name, @@ -21,7 +14,7 @@ function Review({ visitedAt, content, images, -}: ReviewProps) { +}: ReviewPropsTypes) { return ( <div className={styles.container}> <div> diff --git a/src/types/detail.ts b/src/types/detail.ts index 676fbb3d..30368651 100644 --- a/src/types/detail.ts +++ b/src/types/detail.ts @@ -5,3 +5,12 @@ export interface OtherCardPropsType { point: string; count: number; } + +export interface ReviewPropsTypes { + name: string; + isGoogle: boolean; + point: string; + visitedAt: string; + content: string; + images: string[] | undefined; +}