diff --git a/package.json b/package.json index 7b2ee70..eab5b2b 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "@arcgis/core": "^4.28.10", "react": "^18.2.0", "react-device-detect": "^2.2.3", "react-dom": "^18.2.0", diff --git a/src/App.tsx b/src/App.tsx index 1494ac8..1d215ae 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,10 +1,17 @@ +import { isMobile } from "react-device-detect"; import "./App.css"; + import Desktop from "./pages/Desktop/Desktop"; import Apartment from "./pages/Mobile/Apartment"; -import { isMobile } from "react-device-detect"; +import MapComponent from "./components/Map"; function App() { - return <>{isMobile ? : }; + // return <>{isMobile ? : }; + return ( + <> + + + ); } export default App; diff --git a/src/components/HelpButton.tsx b/src/components/HelpButton.tsx index d036d73..25e5d7c 100644 --- a/src/components/HelpButton.tsx +++ b/src/components/HelpButton.tsx @@ -7,7 +7,7 @@ type HelpButtonProps = { const HelpButton = ({ handleOnHelpClick }: HelpButtonProps) => { return ( + ); +}; + +export default ImagesButton; diff --git a/src/components/desktop/LayoutButton.tsx b/src/components/desktop/LayoutButton.tsx new file mode 100644 index 0000000..0633425 --- /dev/null +++ b/src/components/desktop/LayoutButton.tsx @@ -0,0 +1,19 @@ +import LayoutIcon from "../../icons/LayoutIcon"; + +type LayoutButtonProps = { + onClick: () => void; +}; + +const LayoutButton = ({ onClick }: LayoutButtonProps) => { + return ( + + ); +}; + +export default LayoutButton; diff --git a/src/components/desktop/LayoutsButtonContainer.tsx b/src/components/desktop/LayoutsButtonContainer.tsx new file mode 100644 index 0000000..e996932 --- /dev/null +++ b/src/components/desktop/LayoutsButtonContainer.tsx @@ -0,0 +1,23 @@ +import ImagesButton from "./ImagesButton"; +import LayoutButton from "./LayoutButton"; + +const LayoutsButtonContainer = () => { + return ( +
+
+ + +
+
+ ); +}; + +export default LayoutsButtonContainer; diff --git a/src/components/desktop/ParameterDescription.tsx b/src/components/desktop/ParameterDescription.tsx new file mode 100644 index 0000000..c426edf --- /dev/null +++ b/src/components/desktop/ParameterDescription.tsx @@ -0,0 +1,37 @@ +import { Parameters } from "../../types/appartment"; + +type ParameterDescriptionProps = { + params: Parameters; +}; + +const ParameterDescription = ({ params }: ParameterDescriptionProps) => { + return ( +
+

{params.type}

+
+
+
+
Villa Theme
+
{params.villaTheme}
+
+
+
Total no. of Bedrooms
+
{params.totalCountBedroms}
+
+
+
+
+
+
Plot area
+
{params.plotArea}
+
+
+
Total Build up Area
+
{params.totalBuildUpArea}
+
+
+
+ ); +}; + +export default ParameterDescription; diff --git a/src/components/mobile/Appartment/BackButton.tsx b/src/components/mobile/Appartment/BackButton.tsx new file mode 100644 index 0000000..08a41d4 --- /dev/null +++ b/src/components/mobile/Appartment/BackButton.tsx @@ -0,0 +1,14 @@ +import BackIcon from "../../../icons/BackIcon"; + +const BackButton = () => { + return ( + + ); +}; + +export default BackButton; diff --git a/src/components/mobile/Appartment/ButtonPanel.tsx b/src/components/mobile/Appartment/ButtonPanel.tsx index baede1e..f64c031 100644 --- a/src/components/mobile/Appartment/ButtonPanel.tsx +++ b/src/components/mobile/Appartment/ButtonPanel.tsx @@ -1,9 +1,8 @@ -import BackIcon from "../../../icons/BackIcon"; -import HelpIcon from "../../../icons/HelpIcon"; import useStore from "../../../store/store"; import PopupModal from "./PopupModal"; import HelpPanel from "./HelpPanel"; import HelpButton from "../../HelpButton"; +import BackButton from "./BackButton"; const ButtonPanel = () => { const { setModal, setPanel } = useStore(); @@ -17,19 +16,8 @@ const ButtonPanel = () => { <> {
- + - {/* */}
} diff --git a/src/components/mobile/Appartment/Slider.tsx b/src/components/mobile/Appartment/LayoutSlider.tsx similarity index 94% rename from src/components/mobile/Appartment/Slider.tsx rename to src/components/mobile/Appartment/LayoutSlider.tsx index 06fbfce..3607a1e 100644 --- a/src/components/mobile/Appartment/Slider.tsx +++ b/src/components/mobile/Appartment/LayoutSlider.tsx @@ -2,11 +2,11 @@ import { useState } from "react"; import { useSwipeable } from "react-swipeable"; import { SliderType } from "../../../types/appartment"; -type SliderProps = { +type LayoutSliderProps = { sliders: SliderType[]; }; -const Slider = ({ sliders }: SliderProps) => { +const LayoutSlider = ({ sliders }: LayoutSliderProps) => { const [offset, setOffset] = useState(0); const handleOnRight = () => { @@ -74,4 +74,4 @@ const Slider = ({ sliders }: SliderProps) => { ); }; -export default Slider; +export default LayoutSlider; diff --git a/src/components/mobile/Appartment/Parameters.tsx b/src/components/mobile/Appartment/Parameters.tsx index 9f59dd5..ba87671 100644 --- a/src/components/mobile/Appartment/Parameters.tsx +++ b/src/components/mobile/Appartment/Parameters.tsx @@ -32,7 +32,7 @@ const Parameters = ({ parameters }: ParametersProps) => { Total no. of Bedrooms
- {parameters.TotalCountBedroms} + {parameters.totalCountBedroms}
diff --git a/src/components/mobile/Appartment/ViewControllerModal.tsx b/src/components/mobile/Appartment/ViewControllerModal.tsx index beb1566..d437cd2 100644 --- a/src/components/mobile/Appartment/ViewControllerModal.tsx +++ b/src/components/mobile/Appartment/ViewControllerModal.tsx @@ -3,9 +3,11 @@ import { SwipeEventData, useSwipeable } from "react-swipeable"; import ButtonSwipperIcon from "../../../icons/ButtonSwipperIcon"; import { Parameters as ParametersType } from "../../../types/appartment"; import Parameters from "./Parameters"; -import Slider from "./Slider"; +// import LayoutSlider from "./LayoutSlider"; +// import LayoutSlider from "./ImageSlider"; +import LayoutSlider from "./LayoutSlider"; import ImageSlider from "./ImageSlider"; -import ViewToggle from "./ViewToggle"; +import ViewToggle from "../../ViewToggle"; type ViewControllerModalProps = { parameters: ParametersType; @@ -67,7 +69,7 @@ const ViewControllerModal = ({ parameters }: ViewControllerModalProps) => { className="h-[calc(100vh-110px)] overflow-y-scroll relative" onScroll={handleOnScroll} > - +
diff --git a/src/consts/viewParams.ts b/src/consts/viewParams.ts index 23723d4..eceaca8 100644 --- a/src/consts/viewParams.ts +++ b/src/consts/viewParams.ts @@ -1,10 +1,10 @@ -import Parameters from "../components/mobile/Appartment/Parameters"; +import { Parameters } from "../types/appartment"; const A1MViewParams: Parameters = { type: "A1M", plotArea: "1080 Sq.m", totalBuildUpArea: "472 Sq.m", - TotalCountBedroms: 5, + totalCountBedroms: 5, villaTheme: "Modern", sliders: [ { diff --git a/src/icons/ImagesIcon.tsx b/src/icons/ImagesIcon.tsx new file mode 100644 index 0000000..6e9f78e --- /dev/null +++ b/src/icons/ImagesIcon.tsx @@ -0,0 +1,27 @@ +const ImagesIcon = () => { + return ( + + + + + ); +}; + +export default ImagesIcon; diff --git a/src/icons/LayoutIcon.tsx b/src/icons/LayoutIcon.tsx new file mode 100644 index 0000000..ad81654 --- /dev/null +++ b/src/icons/LayoutIcon.tsx @@ -0,0 +1,18 @@ +const LayoutIcon = () => { + return ( + + + + ); +}; + +export default LayoutIcon; diff --git a/src/index.css b/src/index.css index 99a27a1..7eb0648 100644 --- a/src/index.css +++ b/src/index.css @@ -1,5 +1,6 @@ @import url("https://fonts.googleapis.com/css2?family=Manrope:wght@400;600&display=swap"); @import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&family=Noto+Sans:wght@500&display=swap"); +@import "https://js.arcgis.com/4.28/@arcgis/core/assets/esri/themes/light/main.css"; @tailwind base; @tailwind components; @@ -8,5 +9,5 @@ body { font-family: "Montserrat", sans-serif; font-family: "Noto Sans", sans-serif; - background-color: #c7bdba; + background-color: #f3f2f0; } diff --git a/src/pages/Desktop/Apartment.tsx b/src/pages/Desktop/Apartment.tsx index 0433933..87cc47a 100644 --- a/src/pages/Desktop/Apartment.tsx +++ b/src/pages/Desktop/Apartment.tsx @@ -1,9 +1,12 @@ import { Unity, useUnityContext } from "react-unity-webgl"; -import useStore from "../../store/store"; import { useEffect } from "react"; -import LoaderModal from "../../components/LoaderModal"; -import ButtonPanel from "./ButtonPanel"; import { ReactUnityEventParameter } from "react-unity-webgl/distribution/types/react-unity-event-parameters"; +import useStore from "../../store/store"; +import LoaderModal from "../../components/LoaderModal"; +import ButtonPanel from "../../components/desktop/ButtonPanel"; +import ParameterDescription from "../../components/desktop/ParameterDescription"; +import { A1MViewParams } from "../../consts/viewParams"; +import LayoutsButtonContainer from "../../components/desktop/LayoutsButtonContainer"; const Apartment = () => { const { loader, setLoader, setSendMessageToUnity } = useStore(); @@ -58,7 +61,9 @@ const Apartment = () => { unityProvider={unityProvider} style={{ width: "100%", height: "100%" }} /> + + ); diff --git a/src/pages/Mobile/Apartment.tsx b/src/pages/Mobile/Apartment.tsx index ac3e880..3555449 100644 --- a/src/pages/Mobile/Apartment.tsx +++ b/src/pages/Mobile/Apartment.tsx @@ -1,22 +1,24 @@ import { useEffect } from "react"; -import useStore from "../../store/store"; +import { ReactUnityEventParameter } from "react-unity-webgl/distribution/types/react-unity-event-parameters"; import { Unity, useUnityContext } from "react-unity-webgl"; +import useStore from "../../store/store"; import LoaderModal from "../../components/LoaderModal"; import ButtonPanel from "../../components/mobile/Appartment/ButtonPanel"; import ViewControllerModal from "../../components/mobile/Appartment/ViewControllerModal"; import { A1MViewParams } from "../../consts/viewParams"; -import { ReactUnityEventParameter } from "react-unity-webgl/distribution/types/react-unity-event-parameters"; const Apartment = () => { const { modal, loader, panel, + setCurrentView, setModal, setPanel, setSendMessageToUnity, setLoader, } = useStore(); + const { unityProvider, isLoaded, @@ -40,11 +42,17 @@ const Apartment = () => { } }; + const handleSetView = (view: ReactUnityEventParameter) => { + setCurrentView(view as number); + }; + useEffect(() => { addEventListener("SetLoaded", handleSetLoaded); + addEventListener("SetView", handleSetView); return () => { removeEventListener("SetLoaded", handleSetLoaded); + removeEventListener("SetView", handleSetView); }; }, []); @@ -58,7 +66,14 @@ const Apartment = () => { setModal(); setPanel(); } - }, [isLoaded]); + }, [ + isLoaded, + sendMessage, + setLoader, + setModal, + setPanel, + setSendMessageToUnity, + ]); return ( <> diff --git a/src/store/store.ts b/src/store/store.ts index 1a59ed1..bdadc4f 100644 --- a/src/store/store.ts +++ b/src/store/store.ts @@ -7,6 +7,9 @@ interface StoreType { panel: React.ReactNode | null; modal: React.ReactNode | null; sendMessageToUnity: ((gameObjectName: string, methodName: string, parameter?: ReactUnityEventParameter) => void) | null; + currentView: number; + + setCurrentView: (view: number) => void; setModal: (modal: React.ReactNode | null) => void; setPanel: (panel: React.ReactNode | null) => void; setLoader: (loader: React.ReactNode | null) => void; @@ -18,6 +21,9 @@ const useStore = create((set) => ({ panel: null, sendMessageToUnity: null, loader: null, + currentView: 1, + + setCurrentView: (view) => set(() => ({currentView: view})), setModal: (modal) => set(() => ({ modal: modal })), setPanel: (panel) => set(() => ({ panel: panel })), setSendMessageToUnity: (sendMessageToUnity) => set(() => ({ sendMessageToUnity: sendMessageToUnity })), diff --git a/src/types/appartment.ts b/src/types/appartment.ts index b5c820e..208040b 100644 --- a/src/types/appartment.ts +++ b/src/types/appartment.ts @@ -7,7 +7,7 @@ type Parameters = { type: string; plotArea: string; totalBuildUpArea: string; - TotalCountBedroms: number; + totalCountBedroms: number; villaTheme: string; sliders: Slider[]; perspectiveWorkings: string[] diff --git a/yarn.lock b/yarn.lock index 8a34fca..69b9582 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,6 +12,20 @@ resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== +"@arcgis/core@^4.28.10": + version "4.28.10" + resolved "https://registry.yarnpkg.com/@arcgis/core/-/core-4.28.10.tgz#777f699f50cb6955702cdbcd32b1015e19b1cb00" + integrity sha512-FKvicMVDwFuKX8JKLqAfukzQU2F3AG7s3tDigTcIC4ApGRbj7Nc/F9dRfPZo+aY1Vl7Sa1FjYlo6tfV93LJ2Eg== + dependencies: + "@esri/arcgis-html-sanitizer" "~3.0.1" + "@esri/calcite-colors" "~6.1.0" + "@esri/calcite-components" "^1.9.2" + "@popperjs/core" "~2.11.8" + "@zip.js/zip.js" "~2.7.29" + focus-trap "~7.5.3" + luxon "~3.4.3" + sortablejs "~1.15.0" + "@esbuild/android-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" @@ -154,6 +168,59 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.56.0.tgz#ef20350fec605a7f7035a01764731b2de0f3782b" integrity sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A== +"@esri/arcgis-html-sanitizer@~3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@esri/arcgis-html-sanitizer/-/arcgis-html-sanitizer-3.0.1.tgz#a4feaf3744bdd532012593fdb929b376a22c39cd" + integrity sha512-cwZJwsYCJZwtBQU2AmaiIVFg5nZcVwInPYja1/OgC9iKYO+ytZRoc5h+0S9/ygbFNoS8Nd0RX9A85stLX/BgiA== + dependencies: + xss "1.0.13" + +"@esri/calcite-colors@~6.1.0": + version "6.1.0" + resolved "https://registry.yarnpkg.com/@esri/calcite-colors/-/calcite-colors-6.1.0.tgz#2d75e859a88772d8de91ccae40cbe29b8a4d27b8" + integrity sha512-wHQYWFtDa6c328EraXEVZvgOiaQyYr0yuaaZ0G3cB4C3lSkWefW34L/e5TLAhtuG3zJ/wR6pl5X1YYNfBc0/4Q== + +"@esri/calcite-components@^1.9.2": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@esri/calcite-components/-/calcite-components-1.11.0.tgz#7e7721f31b6a41761a15d30a8a7b646ed728fd33" + integrity sha512-H0ZqX3fEv4i0JCBEZ5SarPpd1KeXvqlEpLTtforfifIYbFAQOshP5fC2tFSL7j5pECyhBuB7rRhBiFeFejpRDw== + dependencies: + "@floating-ui/dom" "1.5.3" + "@stencil/core" "2.22.3" + "@types/color" "3.0.5" + color "4.2.3" + composed-offset-position "0.0.4" + dayjs "1.11.10" + focus-trap "7.5.4" + lodash-es "4.17.21" + sortablejs "1.15.0" + timezone-groups "0.8.0" + +"@floating-ui/core@^1.4.2": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.0.tgz#fa41b87812a16bf123122bf945946bae3fdf7fc1" + integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== + dependencies: + "@floating-ui/utils" "^0.2.1" + +"@floating-ui/dom@1.5.3": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" + integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== + dependencies: + "@floating-ui/core" "^1.4.2" + "@floating-ui/utils" "^0.1.3" + +"@floating-ui/utils@^0.1.3": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" + integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== + +"@floating-ui/utils@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== + "@humanwhocodes/config-array@^0.11.13": version "0.11.14" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b" @@ -243,11 +310,21 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== +"@popperjs/core@~2.11.8": + version "2.11.8" + resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" + integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== + "@remix-run/router@1.14.2": version "1.14.2" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.14.2.tgz#4d58f59908d9197ba3179310077f25c88e49ed17" integrity sha512-ACXpdMM9hmKZww21yEqWwiLws/UPLhNKvimN8RrYSqPSvB3ov7sLvAcfvaxePeLvccTQKGdkDIhLYApZVDFuKg== +"@stencil/core@2.22.3": + version "2.22.3" + resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.22.3.tgz#83987e20bba855c450f6d6780e3a20192603f13f" + integrity sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng== + "@swc/core-darwin-arm64@1.3.105": version "1.3.105" resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.105.tgz#2960f8a87aed01b3850d5c37f05b51d9d3747141" @@ -327,6 +404,25 @@ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== +"@types/color-convert@*": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.3.tgz#e93f5c991eda87a945058b47044f5f0008b0dce9" + integrity sha512-2Q6wzrNiuEvYxVQqhh7sXM2mhIhvZR/Paq4FdsQkOMgWsCIkKvSGj8Le1/XalulrmgOzPMqNa0ix+ePY4hTrfg== + dependencies: + "@types/color-name" "*" + +"@types/color-name@*": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.3.tgz#c488ac2e519c9795faa0d54e8156d54e66adc4e6" + integrity sha512-87W6MJCKZYDhLAx/J1ikW8niMvmGRyY+rpUxWpL1cO7F8Uu5CHuQoFv+R0/L5pgNdW4jTyda42kv60uwVIPjLw== + +"@types/color@3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/color/-/color-3.0.5.tgz#658fd9286a44c21dabaa56c2e2f63da3ac15f063" + integrity sha512-T9yHCNtd8ap9L/r8KEESu5RDMLkoWXHo7dTureNoI1dbp25NsCN054vOu09iniIjR21MXUL+LU9bkIWrbyg8gg== + dependencies: + "@types/color-convert" "*" + "@types/json-schema@^7.0.12": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -461,6 +557,11 @@ dependencies: "@swc/core" "^1.3.96" +"@zip.js/zip.js@~2.7.29": + version "2.7.33" + resolved "https://registry.yarnpkg.com/@zip.js/zip.js/-/zip.js-2.7.33.tgz#daeb0ab451b360f4584f5f4259ea822d56eaff02" + integrity sha512-3Ct8eoIkvkflNEyL3wD3GwJ2ORMobGTGO4v9giq6a4vCBcVmk1qFXtfDN2P9hJ9Eibd4zPKMiRCca4lVu+56Ig== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -630,16 +731,42 @@ color-convert@^2.0.1: dependencies: color-name "~1.1.4" -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +composed-offset-position@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/composed-offset-position/-/composed-offset-position-0.0.4.tgz#ca8854abf15e3c235ecf4df125a27fe88af76ea4" + integrity sha512-vMlvu1RuNegVE0YsCDSV/X4X10j56mq7PCIyOKK74FxkXzGLwhOUmdkJLSdOBOMwWycobGUMgft2lp+YgTe8hw== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -659,11 +786,21 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw== + csstype@^3.0.2: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +dayjs@1.11.10: + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== + debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -927,6 +1064,13 @@ flatted@^3.2.9: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== +focus-trap@7.5.4, focus-trap@~7.5.3: + version "7.5.4" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2" + integrity sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w== + dependencies: + tabbable "^6.2.0" + foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" @@ -1059,6 +1203,11 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -1183,6 +1332,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -1207,6 +1361,11 @@ lru-cache@^6.0.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484" integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag== +luxon@~3.4.3: + version "3.4.4" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.4.tgz#cf20dc27dc532ba41a169c43fdcc0063601577af" + integrity sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -1581,11 +1740,28 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +sortablejs@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a" + integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w== + +sortablejs@~1.15.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.2.tgz#4e9f7bda4718bd1838add9f1866ec77169149809" + integrity sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA== + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -1654,6 +1830,11 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +tabbable@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + tailwindcss@^3.3.5: version "3.4.1" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" @@ -1701,6 +1882,11 @@ thenify-all@^1.0.0: dependencies: any-promise "^1.0.0" +timezone-groups@0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/timezone-groups/-/timezone-groups-0.8.0.tgz#b7bd35322939bed7cfbf0624cc3eeefd0910800d" + integrity sha512-t7E/9sPfCU0m0ZbS7Cqw52D6CB/UyeaiIBmyJCokI1SyOyOgA/ESiQ/fbreeFaUG9QSenGlZSSk/7rEbkipbOA== + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -1806,6 +1992,14 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +xss@1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.13.tgz#6e48f616128b39f366dfadc57411e1eb5b341c6c" + integrity sha512-clu7dxTm1e8Mo5fz3n/oW3UCXBfV89xZ72jM8yzo1vR/pIS0w3sgB3XV2H8Vm6zfGnHL0FzvLJPJEBhd86/z4Q== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"