diff --git a/package.json b/package.json index 296b94c4..684e21e6 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ }, "browserslist": "defaults, not ie <= 11", "dependencies": { - "@emotion/react": "^11.11.3", + "@emotion/react": "^11.13.3", "@emotion/styled": "^11.11.0", "@fortawesome/fontawesome-svg-core": "^6.3.0", "@fortawesome/free-regular-svg-icons": "^6.2.1", @@ -42,6 +42,7 @@ "framer-motion": "^10.2.4", "heroicons": "^2.0.13", "jwt-decode": "^4.0.0", + "lucide-react": "^0.456.0", "marked": "^4.3.0", "material-ui-popup-state": "^5.0.5", "next": "^14.0.2", @@ -64,7 +65,7 @@ "react-google-charts": "^4.0.1", "react-image-crop": "^11.0.5", "react-intersection-observer": "^9.13.1", - "react-joyride": "^2.7.2", + "react-joyride": "^2.9.2", "react-loading-skeleton": "^3.2.0", "react-markdown": "^9.0.1", "react-markdown-editor-lite": "^1.3.4", @@ -82,10 +83,12 @@ "react-transition-group": "^4.4.5", "react-visibility-sensor": "^5.1.1", "reactjs-popup": "^2.0.5", + "reactour": "^1.19.4", "recharts": "^2.12.7", "simplemde": "^1.11.2", "socket.io-client": "^4.7.4", "stripe": "^13.9.0", + "styled-components": "^6.1.13", "tailwind-merge": "^2.3.0", "tailwindcss": "^3.2.1", "tailwindcss-animate": "^1.0.7", diff --git a/src/components/modals/OnboardingModal.jsx b/src/components/modals/OnboardingModal.jsx new file mode 100644 index 00000000..59419715 --- /dev/null +++ b/src/components/modals/OnboardingModal.jsx @@ -0,0 +1,558 @@ +import { Dialog, Transition } from '@headlessui/react' +import { Fragment, useState, useEffect, useRef } from 'react' +import { GraduationCap, Code, Terminal } from 'lucide-react' +import { keyframes } from '@emotion/react' +import request from '@/utils/request'; + +const moveGrid = keyframes` + 0% { + transform: translateY(0); + } + 100% { + transform: translateY(-24px); + } +` + +export default function OnboardingModal({ isOpen, onClose }) { + const [currentPage, setCurrentPage] = useState(1) + const [selectedSkill, setSelectedSkill] = useState(null) + const [selectedFrequency, setSelectedFrequency] = useState('casual') + const [hoursPerWeek, setHoursPerWeek] = useState(8) + const [selectedTime, setSelectedTime] = useState('Morning') + const [selectedStyle, setSelectedStyle] = useState('flexible') + const [reminders, setReminders] = useState(true) + const [browserNotifications, setBrowserNotifications] = useState(true) + const [isSliderActive, setIsSliderActive] = useState(false) + const [showTooltip, setShowTooltip] = useState(false) + const [contentHeight, setContentHeight] = useState(0) + const page1Ref = useRef(null) + const page2Ref = useRef(null) + + useEffect(() => { + let timeout; + if (!isSliderActive) { + timeout = setTimeout(() => { + setShowTooltip(false) + }, 800) + } else { + setShowTooltip(true) + } + return () => clearTimeout(timeout) + }, [isSliderActive]) + + useEffect(() => { + const updateHeight = () => { + const currentRef = currentPage === 1 ? page1Ref.current : page2Ref.current; + if (currentRef) { + // Store original styles + const originalPosition = currentRef.style.position; + const originalWidth = currentRef.style.width; + + // Temporarily adjust for measurement + currentRef.style.position = 'relative'; + currentRef.style.width = '100%'; + + const height = currentRef.offsetHeight; + + // Restore original styles + currentRef.style.position = originalPosition; + currentRef.style.width = originalWidth; + + setContentHeight(height); + } + }; + + const timeoutId = setTimeout(updateHeight, 50); + window.addEventListener('resize', updateHeight); + + return () => { + clearTimeout(timeoutId); + window.removeEventListener('resize', updateHeight); + }; + }, [currentPage]); + + const handleSkillSelect = (skill) => { + setSelectedSkill(skill) + setCurrentPage(2) + } + + const handleFrequencySelect = (frequency) => { + setSelectedFrequency(frequency) + } + + const handleTimePreference = (time) => { + setSelectedTime(time) + } + + const handleLearningStyle = (style) => { + setSelectedStyle(style) + } + + // save changes + const saveChanges = async () => { + const data = { + skill: selectedSkill, + hoursPerWeek, + timePreference: selectedTime, + learningStyle: selectedStyle + }; + + try { + const response = await request( + `${process.env.NEXT_PUBLIC_API_URL}/account/savePreferences`, + 'POST', + data + ); + + if (response) { + console.log('Preferences saved successfully'); + } else { + console.error('Failed to save preferences'); + } + } catch (error) { + console.error('An error occurred while saving preferences:', error); + } + }; + + + const getTooltipConfig = (hours) => { + if (hours <= 3) { + return { + emoji: '🌱', + color: 'bg-emerald-500', + message: 'Starting small!', + arrowColor: 'bg-emerald-500' + } + } else if (hours <= 7) { + return { + emoji: '⭐', + color: 'bg-blue-500', + message: 'Good balance!', + arrowColor: 'bg-blue-500' + } + } else if (hours <= 12) { + return { + emoji: '🚀', + color: 'bg-purple-500', + message: 'Ambitious!', + arrowColor: 'bg-purple-500' + } + } else if (hours <= 16) { + return { + emoji: '🔥', + color: 'bg-orange-500', + message: 'Dedicated!', + arrowColor: 'bg-orange-500' + } + } else { + return { + emoji: '💪', + color: 'bg-red-500', + message: 'Beast mode!', + arrowColor: 'bg-red-500' + } + } + } + + const timeConfig = { + Morning: { + emoji: '🌅', + gradient: 'from-amber-400 to-orange-500', + hoverGradient: 'from-amber-500 to-orange-600' + }, + Afternoon: { + emoji: '☀️', + gradient: 'from-blue-400 to-blue-500', + hoverGradient: 'from-blue-500 to-blue-600' + }, + Evening: { + emoji: '🌆', + gradient: 'from-orange-400 to-red-500', + hoverGradient: 'from-orange-500 to-red-600' + }, + 'Late Night': { + emoji: '🌙', + gradient: 'from-gray-900 to-black', + hoverGradient: 'from-indigo-500 to-violet-600' + } + } + + const requestNotificationPermission = async () => { + if (!("Notification" in window)) { + console.log("This browser does not support notifications"); + return; + } + + try { + const permission = await Notification.requestPermission(); + setBrowserNotifications(permission === "granted"); + + if (permission === "granted") { + new Notification("CTFGuide Notifications Enabled", { + body: "You'll receive practice reminders here!" + }); + } + } catch (error) { + console.error("Error requesting notification permission:", error); + setBrowserNotifications(false); + } + }; + + const handleBrowserNotifications = async (checked) => { + if (checked) { + await requestNotificationPermission(); + } else { + setBrowserNotifications(false); + } + }; + + return ( + + + +
+ + +
+
+ + +
+
+
+
+ +
+
+ + Welcome to CTFGuide! + +
+

+ Let's try to make the best out of your learning experience. +

+ +
+

What would you say your skill level is?

+
+
handleSkillSelect('beginner')} + className="group relative bg-gradient-to-br from-green-600 to-green-800 p-4 rounded-lg hover:from-green-500 hover:to-green-700 transition-all duration-300 cursor-pointer overflow-hidden" + > +
+
+
+
+
+ +

Beginner

+
+

New to cybersecurity? Start here to learn CTF basics and fundamental concepts.

+
+
+ +
handleSkillSelect('intermediate')} + className="group relative bg-gradient-to-br from-blue-600 to-blue-800 p-4 rounded-lg hover:from-blue-500 hover:to-blue-700 transition-all duration-300 cursor-pointer overflow-hidden" + > +
+
+
+
+
+ +

Intermediate

+
+

Familiar with CTFs? Enhance your skills with more complex challenges and tools.

+
+
+ +
handleSkillSelect('advanced')} + className="group relative bg-gradient-to-br from-purple-600 to-purple-800 p-4 rounded-lg hover:from-purple-500 hover:to-purple-700 transition-all duration-300 cursor-pointer overflow-hidden" + > +
+
+
+
+
+ +

Advanced

+
+

Expert-level challenges covering advanced exploitation, forensics, and reverse engineering.

+
+
+
+
+
+ +
+ +
+
+
+ + + +
+
+ + Set Your Learning Schedule + +
+

+ Based on your {selectedSkill} skill level, let's create a personalized practice schedule. +

+ +
+
+ {/* Time Commitment Slider */} +
+

How many hours can you commit per week?

+
+ setHoursPerWeek(parseInt(e.target.value))} + onMouseDown={() => setIsSliderActive(true)} + onMouseUp={() => setIsSliderActive(false)} + onMouseLeave={() => setIsSliderActive(false)} + onTouchStart={() => setIsSliderActive(true)} + onTouchEnd={() => setIsSliderActive(false)} + style={{ + background: `linear-gradient(to right, #3b82f6 ${((hoursPerWeek - 1)/(20 - 1)) * 100}%, #404040 ${((hoursPerWeek - 1)/(20 - 1)) * 100}%)` + }} + /> +
+
+
+ + {getTooltipConfig(hoursPerWeek).emoji} + +
+ {hoursPerWeek} {hoursPerWeek === 1 ? 'hour' : 'hours'} + {getTooltipConfig(hoursPerWeek).message} +
+
+
+
+
+
+ 1 hour + 10 hours + 20 hours +
+
+
+ + {/* Preferred Practice Times */} +
+

When do you prefer to practice?

+
+ {['Morning', 'Afternoon', 'Evening', 'Late Night'].map((time) => ( + + ))} +
+
+ + {/* Learning Style */} +
+

Choose your learning style

+
+
handleLearningStyle('structured')} + className={`group relative p-4 rounded-lg border-2 transition-all duration-300 cursor-not-allowed opacity-75 ${ + 'border-neutral-700' + }`} + > +
+ Coming Soon +
+
+

Structured Learning

+

Follow a guided curriculum with clear progression

+
+
+ +
handleLearningStyle('flexible')} + className={`group relative p-4 rounded-lg border-2 transition-all duration-300 cursor-pointer overflow-hidden ${ + selectedStyle === 'flexible' + ? 'border-blue-500 bg-blue-500/10' + : 'border-neutral-700 hover:border-neutral-600' + }`} + > +
+
+
+
+

Flexible Learning

+

Choose challenges based on your interests

+
+
+
+
+ + {/* Reminder Preferences */} +
+

Would you like practice reminders?

+
+ + +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ + +
+
+ +
+ + {/* Dynamic height transition wrapper */} +
+
+ + +
+
+
+
+ ) +} \ No newline at end of file diff --git a/src/pages/challenges/[...id].jsx b/src/pages/challenges/[...id].jsx index 8488c1bd..b4f4d04b 100644 --- a/src/pages/challenges/[...id].jsx +++ b/src/pages/challenges/[...id].jsx @@ -22,7 +22,118 @@ import { Context } from '@/context'; import { useRef } from 'react'; import WriteupModal from '@/components/WriteupModal'; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, Legend } from 'recharts'; +import { useSearchParams } from 'next/navigation'; +// Move styles to a separate useEffect +function useHighlightStyles() { + useEffect(() => { + const style = document.createElement('style'); + style.textContent = ` + @keyframes highlight-pulse { + 0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.5) } + 70% { box-shadow: 0 0 0 10px rgba(59, 130, 246, 0) } + 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0) } + } + + .tutorial-highlight { + animation: highlight-pulse 2s infinite; + position: relative; + z-index: 45; + } + `; + document.head.appendChild(style); + + // Cleanup + return () => { + document.head.removeChild(style); + }; + }, []); +} + +function TutorialOverlay({ step, onNext, onClose }) { + useHighlightStyles(); // Use the styles hook + + const steps = { + 1: { + title: "Welcome to CTFGuide!", + content: "Let's walk through how to solve challenges.", + position: "center", + }, + 2: { + title: "Challenge Description", + content: "Here you'll find all the details about your mission and any files you need.", + position: "right", + highlight: ".challenge-description" + }, + 3: { + title: "Terminal Environment", + content: "This is your hacking workspace. You'll use this terminal to solve challenges.", + position: "left", + highlight: ".challenge-terminal" + }, + 4: { + title: "Submit Your Flag", + content: "Once you find the flag, submit it here to complete the challenge!", + position: "top", + highlight: ".flag-submission" + }, + 5: { + title: "Ready to Start!", + content: "You're all set to begin solving challenges. Good luck!", + position: "center", + } + }; + + const currentStep = steps[step]; + + // Add highlight effect to current element + useEffect(() => { + if (currentStep.highlight) { + const element = document.querySelector(currentStep.highlight); + if (element) { + element.classList.add('tutorial-highlight'); + return () => element.classList.remove('tutorial-highlight'); + } + } + }, [step, currentStep.highlight]); + + return ( +
+
+ +
+

{currentStep.title}

+

{currentStep.content}

+ +
+ {Object.keys(steps).map((stepNum) => ( +
+ ))} +
+ +
+ + +
+
+
+ ); +} export default function Challenge() { const router = useRouter(); @@ -315,8 +426,37 @@ export default function Challenge() { const [showMessage, setShowMessage] = useState(false); + const searchParams = useSearchParams(); + const [tutorialStep, setTutorialStep] = useState(0); + + useEffect(() => { + // Only run on client side + if (typeof window !== 'undefined') { + if (searchParams.get('onboarding') === 'true' && + !localStorage.getItem('challengeTutorialComplete')) { + setTutorialStep(1); + } + } + }, [searchParams]); + + const handleNextStep = () => { + if (tutorialStep === 5) { + handleCloseTutorial(); + } else { + setTutorialStep(prev => prev + 1); + } + }; + + const handleCloseTutorial = () => { + setTutorialStep(0); + if (typeof window !== 'undefined') { + localStorage.setItem('challengeTutorialComplete', 'true'); + } + }; + return ( <> + Challenge - CTFGuide { const user = localStorage.getItem('username'); @@ -125,6 +131,22 @@ export default function Dashboard() { }); } + const checkCompletedTasks = async () => { + try { + const accountResponse = await request(`${process.env.NEXT_PUBLIC_API_URL}/account`, 'GET', null); + const hasProfilePicture = accountResponse.profileImage; + const hasCompletedChallenge = accountResponse.points > 0; + + setCompletedTasks({ + profilePicture: hasProfilePicture, + firstChallenge: hasCompletedChallenge, + }); + } catch (error) { + console.error('Failed to check completed tasks:', error); + } + }; + + checkCompletedTasks(); fetchRecommendedChallenges(); fetchPopularChallenges(); @@ -153,8 +175,19 @@ export default function Dashboard() { }, []); useEffect(() => { - - //setShowOnboarding(false); + // Check onboarding status from API + const checkOnboardingStatus = async () => { + try { + const response = await request(`${process.env.NEXT_PUBLIC_API_URL}/account`, 'GET'); + if (!response.hasCompletedOnboarding) { + setIsOnboardingOpen(true); + } + } catch (error) { + console.error('Failed to check onboarding status:', error); + } + }; + + checkOnboardingStatus(); }, []); const handleHideOnboarding = () => { @@ -162,6 +195,11 @@ export default function Dashboard() { // localStorage.setItem('showOnboarding', JSON.stringify(false)); }; + const completeOnboarding = () => { + setIsOnboardingOpen(false); + // The API endpoint will handle updating the database + }; + return ( <> @@ -184,34 +222,46 @@ export default function Dashboard() {
- {showOnboarding && ( -
+ {completedTasks && (!completedTasks.profilePicture || !completedTasks.firstChallenge) && ( +

- Onboarding + Onboarding Tasks Hide

-

Looks like you're new around here. These tutorials will help you get started. You'll even get a sweet badge for completing them!

-
-
-
- -
- Start Tutorial +

Looks like you're new around here. You should try to complete these tasks. Or don't.

+
+
{ + window.location.href = "./settings" + }} className={`${completedTasks.profilePicture ? 'bg-green-900/20 border border-green-800' : 'bg-neutral-700/50 hover:bg-neutral-700/70 border border-neutral-600'} transition-colors p-6 rounded-lg cursor-pointer`}> +
+
+
+

Set a profile picture

+ {completedTasks.profilePicture && ( + + )}
+

Personalize your account by adding a profile picture

-
-
- -
- +
{ + window.location.href = "./challenges/07671f2f-cd67-4f0f-a3d1-9bdea299c59c?onboarding=true" + }} className={`${completedTasks.firstChallenge ? 'bg-green-900/20 border border-green-800' : 'bg-neutral-700/50 hover:bg-neutral-700/70 border border-neutral-600'} transition-colors p-6 rounded-lg cursor-pointer`}> +
+
+
+

Complete your first challenge

+ {completedTasks.firstChallenge && ( + + )}
+

Try solving an entry-level cybersecurity challenge

@@ -463,7 +513,11 @@ export default function Dashboard() {
} - + ); } diff --git a/yarn.lock b/yarn.lock index 9654588d..69a3acfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1105,6 +1105,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1" + integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.6", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.22.6", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" @@ -1616,6 +1623,23 @@ source-map "^0.5.7" stylis "4.2.0" +"@emotion/babel-plugin@^11.12.0": + version "11.12.0" + resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2" + integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/runtime" "^7.18.3" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/serialize" "^1.2.0" + babel-plugin-macros "^3.1.0" + convert-source-map "^1.5.0" + escape-string-regexp "^4.0.0" + find-root "^1.1.0" + source-map "^0.5.7" + stylis "4.2.0" + "@emotion/cache@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.11.0.tgz#809b33ee6b1cb1a625fef7a45bc568ccd9b8f3ff" @@ -1627,11 +1651,34 @@ "@emotion/weak-memoize" "^0.3.1" stylis "4.2.0" +"@emotion/cache@^11.13.0": + version "11.13.1" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7" + integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw== + dependencies: + "@emotion/memoize" "^0.9.0" + "@emotion/sheet" "^1.4.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" + stylis "4.2.0" + "@emotion/hash@^0.9.1": version "0.9.1" resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.1.tgz#4ffb0055f7ef676ebc3a5a91fb621393294e2f43" integrity sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ== +"@emotion/hash@^0.9.2": + version "0.9.2" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b" + integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g== + +"@emotion/is-prop-valid@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" + integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== + dependencies: + "@emotion/memoize" "^0.8.1" + "@emotion/is-prop-valid@^0.8.2": version "0.8.8" resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" @@ -1656,18 +1703,23 @@ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== -"@emotion/react@^11.11.3": - version "11.11.3" - resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.3.tgz#96b855dc40a2a55f52a72f518a41db4f69c31a25" - integrity sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA== +"@emotion/memoize@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102" + integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== + +"@emotion/react@^11.13.3": + version "11.13.3" + resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4" + integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg== dependencies: "@babel/runtime" "^7.18.3" - "@emotion/babel-plugin" "^11.11.0" - "@emotion/cache" "^11.11.0" - "@emotion/serialize" "^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@emotion/utils" "^1.2.1" - "@emotion/weak-memoize" "^0.3.1" + "@emotion/babel-plugin" "^11.12.0" + "@emotion/cache" "^11.13.0" + "@emotion/serialize" "^1.3.1" + "@emotion/use-insertion-effect-with-fallbacks" "^1.1.0" + "@emotion/utils" "^1.4.0" + "@emotion/weak-memoize" "^0.4.0" hoist-non-react-statics "^3.3.1" "@emotion/serialize@^1.1.2": @@ -1681,15 +1733,15 @@ "@emotion/utils" "^1.2.1" csstype "^3.0.2" -"@emotion/serialize@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.3.tgz#84b77bfcfe3b7bb47d326602f640ccfcacd5ffb0" - integrity sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA== +"@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.1": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a" + integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA== dependencies: - "@emotion/hash" "^0.9.1" - "@emotion/memoize" "^0.8.1" - "@emotion/unitless" "^0.8.1" - "@emotion/utils" "^1.2.1" + "@emotion/hash" "^0.9.2" + "@emotion/memoize" "^0.9.0" + "@emotion/unitless" "^0.10.0" + "@emotion/utils" "^1.4.1" csstype "^3.0.2" "@emotion/sheet@^1.2.2": @@ -1697,6 +1749,11 @@ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec" integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA== +"@emotion/sheet@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c" + integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== + "@emotion/styled@^11.11.0": version "11.11.0" resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346" @@ -1709,26 +1766,46 @@ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" "@emotion/utils" "^1.2.1" -"@emotion/unitless@^0.8.1": +"@emotion/unitless@0.8.1", "@emotion/unitless@^0.8.1": version "0.8.1" resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== +"@emotion/unitless@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745" + integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg== + "@emotion/use-insertion-effect-with-fallbacks@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== +"@emotion/use-insertion-effect-with-fallbacks@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf" + integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw== + "@emotion/utils@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.2.1.tgz#bbab58465738d31ae4cb3dbb6fc00a5991f755e4" integrity sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg== +"@emotion/utils@^1.4.0", "@emotion/utils@^1.4.1": + version "1.4.1" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad" + integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA== + "@emotion/weak-memoize@^0.3.1": version "0.3.1" resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz#d0fce5d07b0620caa282b5131c297bb60f9d87e6" integrity sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww== +"@emotion/weak-memoize@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6" + integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== + "@eslint/eslintrc@^1.3.3": version "1.4.1" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" @@ -1814,21 +1891,6 @@ resolved "https://registry.yarnpkg.com/@gilbarbara/deep-equal/-/deep-equal-0.3.1.tgz#9c72ed0b2e6f8edb1580217e28d78b5b03ad4aee" integrity sha512-I7xWjLs2YSVMc5gGx1Z3ZG1lgFpITPndpi8Ku55GeEIKpACCPQNS/OTqQbxgTCfq0Ncvcc+CrFov96itVh6Qvw== -"@gilbarbara/helpers@^0.9.0": - version "0.9.2" - resolved "https://registry.yarnpkg.com/@gilbarbara/helpers/-/helpers-0.9.2.tgz#c67a9ca8f8b33d8142233fa223774476f88bb57f" - integrity sha512-vrydO6+8jOpzPaJ9Om2Ta6BStbpxBlg7j0uV27NnokG+k6bI95ys7rrw7P4hOcRYajkp+K/XpyLufFUUfYrKTQ== - dependencies: - "@gilbarbara/types" "^0.2.2" - is-lite "^1.2.1" - -"@gilbarbara/types@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@gilbarbara/types/-/types-0.2.2.tgz#397d66e5e4b1c44b65093b61e1e2bc0518b7d498" - integrity sha512-QuQDBRRcm1Q8AbSac2W1YElurOhprj3Iko/o+P1fJxUWS4rOGKMVli98OXS7uo4z+cKAif6a+L9bcZFSyauQpQ== - dependencies: - type-fest "^4.1.0" - "@headlessui/react@^1.7.2": version "1.7.15" resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.15.tgz#53ef6ae132af81b8f188414767b6e79ebf8dc73f" @@ -2496,6 +2558,11 @@ estree-walker "^1.0.1" picomatch "^2.2.2" +"@rooks/use-mutation-observer@4.11.2": + version "4.11.2" + resolved "https://registry.yarnpkg.com/@rooks/use-mutation-observer/-/use-mutation-observer-4.11.2.tgz#a0466c4338e0a4487ea19253c86bcd427c29f4af" + integrity sha512-vpsdrZdr6TkB1zZJcHx+fR1YC/pHs2BaqcuYiEGjBVbwY5xcC49+h0hAUtQKHth3oJqXfIX/Ng8S7s5HFHdM/A== + "@rushstack/eslint-patch@^1.1.3": version "1.3.2" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.3.2.tgz#31b9c510d8cada9683549e1dbb4284cca5001faf" @@ -2801,6 +2868,11 @@ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== +"@types/stylis@4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.5.tgz#1daa6456f40959d06157698a653a9ab0a70281df" + integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw== + "@types/tern@*": version "0.23.4" resolved "https://registry.yarnpkg.com/@types/tern/-/tern-0.23.4.tgz#03926eb13dbeaf3ae0d390caf706b2643a0127fb" @@ -3504,6 +3576,11 @@ camelcase-css@^2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== +camelize@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== + caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: version "1.0.30001517" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz#90fabae294215c3495807eb24fc809e11dc2f0a8" @@ -3611,6 +3688,11 @@ chromium-bidi@0.5.8: mitt "3.0.1" urlpattern-polyfill "10.0.0" +classnames@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" + integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== + classnames@^2.2.5, classnames@^2.2.6: version "2.3.2" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" @@ -3810,6 +3892,11 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== + css-mediaquery@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz#6a2c37344928618631c54bd33cedd301da18bea0" @@ -3820,6 +3907,15 @@ css-selector-parser@^3.0.0: resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-3.0.5.tgz#9b636ebccf7c4bcce5c1ac21ae27de9f01180ae9" integrity sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g== +css-to-react-native@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" + integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + css-unit-converter@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" @@ -3830,16 +3926,16 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +csstype@3.1.3, csstype@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + csstype@^3.0.2, csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -csstype@^3.1.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - cxs@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/cxs/-/cxs-6.2.0.tgz#f11ca3bdaef154b93bdadca5df70f2cb3e37ca24" @@ -4059,6 +4155,11 @@ dequal@^2.0.0, dequal@^2.0.3: resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== +detect-node-es@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" + integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== + devlop@^1.0.0, devlop@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/devlop/-/devlop-1.1.0.tgz#4db7c2ca4dc6e0e834c30be70c94bbc976dc7018" @@ -4810,6 +4911,18 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +focus-lock@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-1.3.5.tgz#aa644576e5ec47d227b57eb14e1efb2abf33914c" + integrity sha512-QFaHbhv9WPUeLYBDe/PAuLKJ4Dd9OPvKs9xZBr3yLXnUrDNaVXKu2baDBXe3naPY30hgHYSsf2JW4jzas2mDEQ== + dependencies: + tslib "^2.0.3" + +focus-outline-manager@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/focus-outline-manager/-/focus-outline-manager-1.0.2.tgz#7bf3658865341fb6b08d042a037b9d2868b119b5" + integrity sha512-bHWEmjLsTjGP9gVs7P3Hyl+oY5NlMW8aTSPdTJ+X2GKt6glDctt9fUCLbRV+d/l8NDC40+FxMjp9WlTQXaQALw== + focus-visible@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.2.0.tgz#3a9e41fccf587bd25dcc2ef045508284f0a4d6b3" @@ -6083,7 +6196,7 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" -lodash.debounce@^4.0.8: +lodash.debounce@4.0.8, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== @@ -6134,6 +6247,11 @@ lru-cache@^7.14.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +lucide-react@^0.456.0: + version "0.456.0" + resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.456.0.tgz#14906c3355cc65d3380b7b2294b331aeda1bb392" + integrity sha512-DIIGJqTT5X05sbAsQ+OhA8OtJYyD4NsEMCA/HQW/Y6ToPQ7gwbtujIoeAaup4HpHzV35SQOarKAWH8LYglB6eA== + magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" @@ -7104,6 +7222,11 @@ nanoid@^3.3.6: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -7609,7 +7732,7 @@ postcss-value-parser@^3.3.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== @@ -7623,6 +7746,15 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@8.4.38: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + postcss@^8.4.23: version "8.4.27" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.27.tgz#234d7e4b72e34ba5a92c29636734349e0d9c3057" @@ -7670,6 +7802,15 @@ progress@2.0.3: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +prop-types@15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.8, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -7795,6 +7936,13 @@ react-circular-progressbar@^2.1.0: resolved "https://registry.yarnpkg.com/react-circular-progressbar/-/react-circular-progressbar-2.1.0.tgz#99e5ae499c21de82223b498289e96f66adb8fa3a" integrity sha512-xp4THTrod4aLpGy68FX/k1Q3nzrfHUjUe5v6FsdwXBl3YVMwgeXYQKDrku7n/D6qsJA9CuunarAboC2xCiKs1g== +react-clientside-effect@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.6.tgz#29f9b14e944a376b03fb650eed2a754dd128ea3a" + integrity sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg== + dependencies: + "@babel/runtime" "^7.12.13" + react-collapsible@^2.10.0: version "2.10.0" resolved "https://registry.yarnpkg.com/react-collapsible/-/react-collapsible-2.10.0.tgz#57330f9f4f968a41ece49c651b56cf30f9a06d19" @@ -7870,6 +8018,18 @@ react-floater@^0.7.9: prop-types "^15.8.1" tree-changes "^0.9.1" +react-focus-lock@^2.12.1: + version "2.13.2" + resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.13.2.tgz#e1addac2f8b9550bc0581f3c416755ba0f81f5ef" + integrity sha512-T/7bsofxYqnod2xadvuwjGKHOoL5GH7/EIPI5UyEvaU/c2CcphvGI371opFtuY/SYdbMsNiuF4HsHQ50nA/TKQ== + dependencies: + "@babel/runtime" "^7.0.0" + focus-lock "^1.3.5" + prop-types "^15.6.2" + react-clientside-effect "^1.2.6" + use-callback-ref "^1.3.2" + use-sidecar "^1.1.2" + react-google-charts@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/react-google-charts/-/react-google-charts-4.0.1.tgz#b7713856a48009b77318f8951ddf2c3ba39f991b" @@ -7890,7 +8050,7 @@ react-intersection-observer@^9.13.1: resolved "https://registry.yarnpkg.com/react-intersection-observer/-/react-intersection-observer-9.13.1.tgz#6c61a75801162491c6348bad09967f2caf445584" integrity sha512-tSzDaTy0qwNPLJHg8XZhlyHTgGW6drFKTtvjdL+p6um12rcnp8Z5XstE+QNBJ7c64n5o0Lj4ilUleA41bmDoMw== -react-is@^16.10.2, react-is@^16.13.1, react-is@^16.7.0: +react-is@^16.10.2, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -7905,23 +8065,22 @@ react-is@^18.2.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-joyride@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/react-joyride/-/react-joyride-2.7.2.tgz#9f742250595dc170330beb0bb39696cf3bdb3eab" - integrity sha512-AVzEweJxjQMc6hXUbJlH6St987GCmw0pkCSoz+X3XBMQmrk57FCMOrh1LvyMvW5GaT95C4D5oZpoaVjaOsgptg== +react-joyride@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/react-joyride/-/react-joyride-2.9.2.tgz#45b211c0061d0c0346cb47699cf87dca16bb6e2b" + integrity sha512-DQ3m3W/GeoASv4UE9ZaadFp3ACJusV0kjjBe7zTpPwWuHpvEoofc+2TCJkru0lbA+G9l39+vPVttcJA/p1XeSA== dependencies: "@gilbarbara/deep-equal" "^0.3.1" - "@gilbarbara/helpers" "^0.9.0" deep-diff "^1.0.2" deepmerge "^4.3.1" - is-lite "^1.2.0" + is-lite "^1.2.1" react-floater "^0.7.9" react-innertext "^1.1.5" react-is "^16.13.1" scroll "^3.0.1" scrollparent "^2.1.0" tree-changes "^0.11.2" - type-fest "^4.8.3" + type-fest "^4.26.1" react-lifecycles-compat@^3.0.4: version "3.0.4" @@ -8136,6 +8295,20 @@ reactjs-popup@^2.0.5: resolved "https://registry.yarnpkg.com/reactjs-popup/-/reactjs-popup-2.0.5.tgz#588a74966bb126699429d739948e3448d7771eac" integrity sha512-b5hv9a6aGsHEHXFAgPO5s1Jw1eSkopueyUVxQewGdLgqk2eW0IVXZrPRpHR629YcgIpC2oxtX8OOZ8a7bQJbxA== +reactour@^1.19.4: + version "1.19.4" + resolved "https://registry.yarnpkg.com/reactour/-/reactour-1.19.4.tgz#3d60b2affd1d37d726e6397e7038aa49f4b72833" + integrity sha512-cMIaUQazGkdXt03m7AXAYXrCdyQl+uvH4nQBGP/oEjIaeSTZqj92C3W3y6doPakIIu21WeoGh1b0hBRKOxIViA== + dependencies: + "@rooks/use-mutation-observer" "4.11.2" + classnames "2.3.1" + focus-outline-manager "^1.0.2" + lodash.debounce "4.0.8" + prop-types "15.7.2" + react-focus-lock "^2.12.1" + scroll-smooth "1.1.1" + scrollparent "2.0.1" + read-cache@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" @@ -8691,11 +8864,21 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +scroll-smooth@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/scroll-smooth/-/scroll-smooth-1.1.1.tgz#d00dbcfaf2652251e1cbfbaca0a98fbd5fe60d4a" + integrity sha512-i9e/hJf0ODPEsy+AubE0zES6xdOuIvtebe5MvdSI1lB4t91k+O+8kV15CYfPN0yPH4j4hZUoKM3rVaPVcmiOoQ== + scroll@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scroll/-/scroll-3.0.1.tgz#d5afb59fb3592ee3df31c89743e78b39e4cd8a26" integrity sha512-pz7y517OVls1maEzlirKO5nPYle9AXsFzTMNJrRGmT951mzpIBy7sNHOg5o/0MQd/NqliCiWnAi0kZneMPFLcg== +scrollparent@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/scrollparent/-/scrollparent-2.0.1.tgz#715d5b9cc57760fb22bdccc3befb5bfe06b1a317" + integrity sha512-HSdN78VMvFCSGCkh0oYX/tY4R3P1DW61f8+TeZZ4j2VLgfwvw0bpRSOv4PCVKisktIwbzHCfZsx+rLbbDBqIBA== + scrollparent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/scrollparent/-/scrollparent-2.1.0.tgz#6cae915c953835886a6ba0d77fdc2bb1ed09076d" @@ -8764,6 +8947,11 @@ shallow-equal@^3.1.0: resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-3.1.0.tgz#e7a54bac629c7f248eff6c2f5b63122ba4320bec" integrity sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg== +shallowequal@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -8867,6 +9055,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -9089,6 +9282,21 @@ style-to-object@^1.0.0: dependencies: inline-style-parser "0.2.3" +styled-components@^6.1.13: + version "6.1.13" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.13.tgz#2d777750b773b31469bd79df754a32479e9f475e" + integrity sha512-M0+N2xSnAtwcVAQeFEsGWFFxXDftHUD7XrKla06QbpUMmbmtFBMMTcKWvFXtWxuD5qQkB8iU5gk6QASlx2ZRMw== + dependencies: + "@emotion/is-prop-valid" "1.2.2" + "@emotion/unitless" "0.8.1" + "@types/stylis" "4.2.5" + css-to-react-native "3.2.0" + csstype "3.1.3" + postcss "8.4.38" + shallowequal "1.1.0" + stylis "4.3.2" + tslib "2.6.2" + styled-jsx@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" @@ -9101,6 +9309,11 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +stylis@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" + integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== + sucrase@^3.32.0: version "3.34.0" resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.34.0.tgz#1e0e2d8fcf07f8b9c3569067d92fbd8690fb576f" @@ -9348,15 +9561,20 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" +tslib@2.6.2, tslib@^2.0.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tslib@^1.8.1: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.0.0, tslib@^2.0.3: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tslib@^2.4.0: version "2.6.0" @@ -9392,10 +9610,10 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -type-fest@^4.1.0, type-fest@^4.8.3: - version "4.10.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.10.0.tgz#30e6d2648fecb67c296d0de31b32d156e501c38d" - integrity sha512-NPaKJsb4wyJ16qc8zBQrWswLKv/YirgBFykvUQ1Iajt2wd+twC8E4hFXdlIXqiMl6kWA0zY8tUJ9ELVAdu5h7w== +type-fest@^4.26.1: + version "4.26.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e" + integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg== typed-array-buffer@^1.0.0: version "1.0.0" @@ -9761,6 +9979,21 @@ urlpattern-polyfill@10.0.0: resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz#f0a03a97bfb03cdf33553e5e79a2aadd22cac8ec" integrity sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg== +use-callback-ref@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.2.tgz#6134c7f6ff76e2be0b56c809b17a650c942b1693" + integrity sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA== + dependencies: + tslib "^2.0.0" + +use-sidecar@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" + integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"