diff --git a/.env b/.env
new file mode 100644
index 0000000..333327d
--- /dev/null
+++ b/.env
@@ -0,0 +1,3 @@
+REACT_APP_BASE_URL="https://rubix.betadelivery.com/api"
+REACT_APP_IMAGE_URL="https://rubix.betadelivery.com/"
+REACT_APP_ENVIRONMENT="development"
\ No newline at end of file
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
new file mode 100644
index 0000000..3e212e1
--- /dev/null
+++ b/.eslintrc.cjs
@@ -0,0 +1,21 @@
+module.exports = {
+ root: true,
+ env: { browser: true, es2020: true },
+ extends: [
+ 'eslint:recommended',
+ 'plugin:react/recommended',
+ 'plugin:react/jsx-runtime',
+ 'plugin:react-hooks/recommended',
+ ],
+ ignorePatterns: ['dist', '.eslintrc.cjs'],
+ parserOptions: { ecmaVersion: 'latest', sourceType: 'module' },
+ settings: { react: { version: '18.2' } },
+ plugins: ['react-refresh'],
+ rules: {
+ 'react/jsx-no-target-blank': 'off',
+ 'react-refresh/only-export-components': [
+ 'warn',
+ { allowConstantExport: true },
+ ],
+ },
+}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..d1163d1
--- /dev/null
+++ b/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ Rubix
+
+
+
+
+
+
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..6618cd0
--- /dev/null
+++ b/package.json
@@ -0,0 +1,45 @@
+{
+ "name": "rubix-admin-dashboard",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@chakra-ui/icons": "^2.1.1",
+ "@chakra-ui/react": "^2.8.2",
+ "@emotion/react": "^11.11.4",
+ "@emotion/styled": "^11.11.5",
+ "@hookform/resolvers": "^3.3.4",
+ "@reduxjs/toolkit": "^2.2.3",
+ "bootstrap": "5.3.3",
+ "dotenv": "^16.4.5",
+ "framer-motion": "^11.1.5",
+ "js-cookie": "^3.0.5",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-hook-form": "^7.51.3",
+ "react-icons": "^5.1.0",
+ "react-quill": "^2.0.0",
+ "react-redux": "^9.1.1",
+ "react-router-dom": "^6.22.3",
+ "redux-persist": "^6.0.0",
+ "redux-persist-transform-encrypt": "^5.1.1",
+ "uuid": "^9.0.1",
+ "yup": "^1.4.0"
+ },
+ "devDependencies": {
+ "@types/react": "^18.2.66",
+ "@types/react-dom": "^18.2.22",
+ "@vitejs/plugin-react-swc": "^3.5.0",
+ "eslint": "^8.57.0",
+ "eslint-plugin-react": "^7.34.1",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-react-refresh": "^0.4.6",
+ "vite": "^5.2.0"
+ }
+}
diff --git a/public/vite.svg b/public/vite.svg
new file mode 100644
index 0000000..e7b8dfb
--- /dev/null
+++ b/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/App.css b/src/App.css
new file mode 100644
index 0000000..428484b
--- /dev/null
+++ b/src/App.css
@@ -0,0 +1,274 @@
+@import url("https://fonts.googleapis.com/css2?family=League+Spartan:wght@100..900&display=swap");
+@import url('https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap');
+
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ /* font-family: "League Spartan", sans-serif !important; */
+ font-family: "Noto Sans", sans-serif !important;
+}
+
+.pointer {
+ cursor: pointer !important;
+}
+
+.activee{
+ text-decoration: none; /* Remove underline */
+ font-weight: bold; /* Optionally change font weight for active link */
+ background: linear-gradient(to right, #7A45FB, #DE41B5); /* Gradient background */
+ -webkit-background-clip: text; /* Clip text to the background area */
+ -webkit-text-fill-color: transparent; /* Fill text with the background color */
+ transition: all 0.3s ease-in-out;
+}
+
+.active{
+ background-color: #e2e8f086;
+}
+
+.link {
+ text-decoration: none ;
+ transition: all 0.2s ease-in-out;
+ font-weight: 400;
+}
+
+.link:hover {
+ background-color: #e2e8f065 !important;
+}
+
+.active:hover {
+ background-color: #e2e8f065;
+}
+
+.web-text-small{
+ font-size: 12px !important;
+}
+.web-text-xxsmall{
+ font-size: 9px !important;
+}
+.web-text-xsmall{
+ font-size: 11px !important;
+}
+
+.web-text-medium{
+ font-size: 13px !important;
+}
+
+.web-text-large{
+ font-size: 15px !important;
+}
+
+.rubix-text-dark{
+ color:#3b3e3f
+}
+
+
+
+.arrow-button{
+ transition: all 0.5s;
+}
+
+
+.arrow-button:active{
+ background: #fff;
+}
+
+.arrow-button:focus{
+ background: #fff;
+}
+
+.arrow-button:hover{
+ background: linear-gradient(90deg, #DE41B5 0%, #7A45FB 100%);
+}
+
+.greeting{
+ text-decoration: none; /* Remove underline */
+ font-weight: bold; /* Optionally change font weight for active link */
+ background: linear-gradient(to right, #7A45FB, #DE41B5); /* Gradient background */
+ -webkit-background-clip: text; /* Clip text to the background area */
+ -webkit-text-fill-color: transparent; /* Fill text with the background color */
+ transition: all 0.3s ease-in-out;
+}
+
+.primary-btn{
+ background-color: #38187C !important;
+}
+
+.team-slider .swiper-button-next:after {
+ position: absolute;
+ top: 185px;
+ width: 38px;
+ height: 38px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 50px;
+ font-size: 18px;
+ color: #000;
+ font-weight: 700;
+ right: 110px;
+ background-image: radial-gradient(
+ circle,
+ #ffffff,
+ #eee2f2,
+ #e7c3dc,
+ #e5a3ba,
+ #de858e
+ );
+}
+.team-slider .swiper-button-prev:after {
+ position: absolute;
+ top: 185px;
+ width: 38px;
+ height: 38px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ border-radius: 50px;
+ font-size: 18px;
+ color: #000;
+ font-weight: 700;
+ left: 110px;
+ background-image: radial-gradient(
+ circle,
+ #ffffff,
+ #eee2f2,
+ #e7c3dc,
+ #e5a3ba,
+ #de858e
+ );
+}
+
+
+
+.rotate{
+
+ animation: animName 10s linear infinite;
+}
+
+@keyframes animName {
+ 0%{
+ transform: rotate(0deg);
+ }
+ 100%{
+ transform: rotate(360deg);
+ }
+ }
+
+
+
+.lds-ellipsis {
+ display: inline-block;
+ position: relative;
+ width: 64px;
+ height: 10px;
+}
+.lds-ellipsis div {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ border-radius: 50%;
+ background: #fff;
+ animation-timing-function: cubic-bezier(0, 1, 1, 0);
+}
+.lds-ellipsis div:nth-child(1) {
+ left: 6px;
+ animation: lds-ellipsis1 0.6s infinite;
+}
+.lds-ellipsis div:nth-child(2) {
+ left: 6px;
+ animation: lds-ellipsis2 0.6s infinite;
+}
+.lds-ellipsis div:nth-child(3) {
+ left: 26px;
+ animation: lds-ellipsis2 0.6s infinite;
+}
+.lds-ellipsis div:nth-child(4) {
+ left: 45px;
+ animation: lds-ellipsis3 0.6s infinite;
+}
+@keyframes lds-ellipsis1 {
+ 0% {
+ transform: scale(0);
+ }
+ 100% {
+ transform: scale(1);
+ }
+}
+@keyframes lds-ellipsis3 {
+ 0% {
+ transform: scale(1);
+ }
+ 100% {
+ transform: scale(0);
+ }
+}
+@keyframes lds-ellipsis2 {
+ 0% {
+ transform: translate(0, 0);
+ }
+ 100% {
+ transform: translate(19px, 0);
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/* Extra small devices (phones, 600px and down) */
+@media only screen and (max-width: 600px) {
+ body {
+ font-size: 14px !important;
+ }
+
+
+}
+
+/* Small devices (portrait tablets and large phones, 600px and up) */
+@media only screen and (min-width: 600px) {
+ body {
+ font-size: 16px !important;
+ }
+}
+
+/* Medium devices (landscape tablets, 768px and up) */
+@media only screen and (min-width: 768px) {
+ body {
+ font-size: 18px !important;
+ }
+}
+
+/* Large devices (laptops/desktops, 992px and up) */
+@media only screen and (min-width: 992px) {
+ body {
+ font-size: 20px !important;
+ }
+}
+
+/* Extra large devices (large laptops and desktops, 1200px and up) */
+@media only screen and (min-width: 1200px) {
+ body {
+ font-size: 22px !important;
+ }
+}
diff --git a/src/App.jsx b/src/App.jsx
new file mode 100644
index 0000000..0c2871d
--- /dev/null
+++ b/src/App.jsx
@@ -0,0 +1,72 @@
+import React, { useContext, useEffect, useState } from "react";
+import "bootstrap/dist/css/bootstrap.min.css";
+import "bootstrap/dist/js/bootstrap.bundle.min.js";
+import {
+ BrowserRouter as Router,
+ Routes,
+ Route,
+ Navigate,
+} from "react-router-dom";
+import "./App.css"; // Import CSS file
+import DefaultLayout from "./Layout/DefaultLayout";
+import NotFound from "./Pages/NotFound";
+import Login from "./Pages/Login";
+import GlobalStateContext from "./Contexts/GlobalStateContext";
+import Cookies from "js-cookie";
+import NoInternetScreen from "./Pages/NoInternetScreen";
+
+const App = () => {
+ // const { isAuthenticate } = useSelector((state) => state?.auth);
+
+ const { isAuthenticate } = useContext(GlobalStateContext);
+ const isAuthenticatedInCookie = Cookies.get("isAuthenticated");
+
+ const [isOnline, setIsOnline] = useState(navigator.onLine);
+
+ useEffect(() => {
+ const handleOnlineStatusChange = () => {
+ setIsOnline(navigator.onLine);
+ };
+
+ window.addEventListener("online", handleOnlineStatusChange);
+ window.addEventListener("offline", handleOnlineStatusChange);
+
+ return () => {
+ window.removeEventListener("online", handleOnlineStatusChange);
+ window.removeEventListener("offline", handleOnlineStatusChange);
+ };
+ }, []);
+
+ const PrivateRoute = ({ children }) => {
+ if (!isAuthenticate && isAuthenticatedInCookie !== "true") {
+ return ;
+ }
+ return children;
+ };
+
+ return (
+
+
+ } />
+
+ ) : (
+
+ )
+ ) : (
+
+ )
+ }
+ />
+
+ } />
+
+
+ );
+};
+
+export default App;
diff --git a/src/Components/BannerStack.jsx b/src/Components/BannerStack.jsx
new file mode 100644
index 0000000..a799996
--- /dev/null
+++ b/src/Components/BannerStack.jsx
@@ -0,0 +1,79 @@
+import { ArrowForwardIcon } from "@chakra-ui/icons";
+import { Box, Button, HStack, Skeleton, Text } from "@chakra-ui/react";
+import React from "react";
+import { Link } from "react-router-dom";
+import CommunityBannerCard from "../Pages/Community/CommunityBannerCard";
+
+const BannerStack = ({
+ stackTitle,
+ viewAllLink,
+ bannerIsLoading,
+ bannerArray,
+ viewBannerLink,
+}) => {
+ return (
+
+
+
+ {stackTitle}
+
+
+
+ }
+ colorScheme={"teal"}
+ size="sm"
+ >
+ View all
+
+
+
+
+
+ {bannerIsLoading
+ ? Array.from({ length: 4 }).map((_, index) => (
+
+
+
+ ))
+ : bannerArray?.map(
+ ({
+ id,
+ CTO_button_title,
+ banner_image,
+ Heading,
+ createdAt,
+ sub_heading,
+ }) => (
+
+
+
+ )
+ )}
+
+
+ );
+};
+
+export default BannerStack;
diff --git a/src/Components/Buttons/Button01.jsx b/src/Components/Buttons/Button01.jsx
new file mode 100644
index 0000000..1417714
--- /dev/null
+++ b/src/Components/Buttons/Button01.jsx
@@ -0,0 +1,25 @@
+import Loader01 from "../Loaders/Loader01";
+
+const Button01 = ({ title, onClick, type, backgroundColor, hover, isLoading }) => {
+ return (
+
+ );
+};
+
+export default Button01;
diff --git a/src/Components/Buttons/Button02.jsx b/src/Components/Buttons/Button02.jsx
new file mode 100644
index 0000000..cc5d079
--- /dev/null
+++ b/src/Components/Buttons/Button02.jsx
@@ -0,0 +1,47 @@
+
+import { RiLogoutCircleLine } from "react-icons/ri";
+
+const Button02 = ({ title, onClick, type, gradientColors, height, width, open }) => {
+ const [startColor, endColor] = gradientColors;
+ return (
+
+ );
+};
+
+export default Button02;
diff --git a/src/Components/ChipSelector/ChipSelector.css b/src/Components/ChipSelector/ChipSelector.css
new file mode 100644
index 0000000..4b2247d
--- /dev/null
+++ b/src/Components/ChipSelector/ChipSelector.css
@@ -0,0 +1,60 @@
+
+label {
+ display: inline-block;
+ margin-bottom: 0.5rem;
+ font-weight: bold;
+ }
+
+ .input-container {
+ display: flex;
+ flex-wrap: wrap;
+ row-gap: 1rem;
+ align-items: center;
+ border: 1px solid rgb(212, 206, 206);
+ border-radius: 0.2rem;
+ }
+
+
+
+ .chips {
+ list-style: none;
+ display: flex;
+ }
+
+ .chip {
+ background-color: #cfe1ff;
+ display: flex;
+ align-items: center;
+ padding: 0.2rem;
+ border-radius: 0.5rem;
+ margin-right: 1rem;
+ }
+
+ .chip span {
+ color: #013380;
+ }
+
+ .chip svg {
+ font-size: 2.5rem;
+ fill: #3270d1;
+ cursor: pointer;
+ transition: fill 0.2s;
+ }
+
+ .chip svg:hover {
+ fill: #2857a3;
+ transition: all 0.2s;
+ }
+
+ input {
+ font-size: 1.6rem;
+ background: transparent;
+ border: none;
+ outline: none;
+ }
+
+ .error-message {
+ margin-top: 1rem;
+ color: red;
+ }
+
\ No newline at end of file
diff --git a/src/Components/ChipSelector/ChipSelector.jsx b/src/Components/ChipSelector/ChipSelector.jsx
new file mode 100644
index 0000000..173bd48
--- /dev/null
+++ b/src/Components/ChipSelector/ChipSelector.jsx
@@ -0,0 +1,62 @@
+import React, { useState } from "react";
+import { Box, Input, Tag, TagCloseButton, TagLabel } from "@chakra-ui/react";
+import { TiWarning } from "react-icons/ti";
+
+const ChipSelector = ({chips, setChips}) => {
+ const [text, setText] = useState("");
+ const [validationError, setValidationError] = useState("");
+ console.log(chips);
+
+ function removeChip(chipToRemove) {
+ const updatedChips = chips.filter((chip) => chip !== chipToRemove);
+ setChips(updatedChips);
+ }
+
+ function handlePressEnter(e) {
+ if (e.key === "Enter") e.preventDefault();
+ if (e.key !== "Enter" || !text) return;
+ if (chips.includes(text)) {
+ return setValidationError("Cannot add the same input more than once");
+ }
+ setChips((prevState) => [...prevState, text]);
+ setText("");
+ setValidationError("");
+ }
+
+ return (
+
+
+ setText(e.target.value)}
+ onKeyDown={handlePressEnter}
+ />
+ {validationError && {validationError}}
+
+ {chips?.map((chip, i) => (
+
+ {chip}
+ removeChip(chip)} />
+
+ ))}
+
+
+
+ );
+};
+
+export default ChipSelector;
diff --git a/src/Components/CommunityBanner.jsx b/src/Components/CommunityBanner.jsx
new file mode 100644
index 0000000..f1d044e
--- /dev/null
+++ b/src/Components/CommunityBanner.jsx
@@ -0,0 +1,153 @@
+import { Box, Button, Container, Text } from "@chakra-ui/react";
+import banner from "../assets/communityBanner.webp";
+
+const BannerContent = [
+ {
+ heading1: `Welcome To The`,
+ heading2: `Rubix Community`,
+ },
+ {
+ subheading: `This is a space for enterprises, dApp developers, stakeholders
+ and blockchain advocates to aggregate resources and ideas to make a difference
+ through our green blockchain technology.`,
+ },
+ {
+ btn: `Explore our community`,
+ },
+];
+
+const CommunityBanner = () => {
+ return (
+
+
+
+
+
+ {BannerContent[0].heading1}
+ {" "}
+
+ {BannerContent[0].heading2}
+
+
+
+ {BannerContent[1].subheading}
+
+
+
+
+
+
+ );
+};
+
+export default CommunityBanner;
diff --git a/src/Components/CustomAlertDialog.jsx b/src/Components/CustomAlertDialog.jsx
new file mode 100644
index 0000000..af5a6a1
--- /dev/null
+++ b/src/Components/CustomAlertDialog.jsx
@@ -0,0 +1,46 @@
+import { AlertDialog, AlertDialogBody, AlertDialogCloseButton, AlertDialogContent, AlertDialogFooter, AlertDialogOverlay, Button, useDisclosure } from "@chakra-ui/react";
+import React, { useRef } from "react";
+
+const CustomAlertDialog = ({ isOpen, onOpen, onClose, alertHandler, isLoading, message }) => {
+ // const cancelRef = useRef();
+
+ return (
+
+
+
+
+
+
+ {message}
+
+
+
+
+
+
+
+ );
+};
+
+export default CustomAlertDialog;
diff --git a/src/Components/DataTable/DataTable.jsx b/src/Components/DataTable/DataTable.jsx
new file mode 100644
index 0000000..feb299e
--- /dev/null
+++ b/src/Components/DataTable/DataTable.jsx
@@ -0,0 +1,51 @@
+import React from "react";
+import { Table, TableContainer, Tbody, Td, Th, Thead, Tr, Skeleton, TableCaption, Tfoot } from "@chakra-ui/react";
+import EmptySearchList from "../EmptySearchList";
+
+const DataTable = ({ data, isLoading, tableHeadRow, emptyMessage }) => {
+ const columnWidth = data && data[0] ? `${(100 / Object.keys(data[0]).length).toFixed(2)}%` : "auto";
+ return (
+
+ {data?.length === 0 ? (
+
+ ) : (
+
+ Rubix v1.0.0
+
+
+ {tableHeadRow.map((heading, index) => (
+ |
+ {isLoading ? : heading}
+ {/* {heading} */}
+ |
+ ))}
+
+
+
+ {isLoading
+ ? Array.from({ length: 12 }).map((_, index) => (
+
+ {tableHeadRow.map((_, i) => (
+ |
+
+ |
+ ))}
+
+ ))
+ : data?.map((item, index) => (
+
+ {tableHeadRow.map((heading, i) => (
+ |
+ {item[heading]}
+ |
+ ))}
+
+ ))}
+
+
+ )}
+
+ );
+};
+
+export default DataTable;
diff --git a/src/Components/EmptySearchList.jsx b/src/Components/EmptySearchList.jsx
new file mode 100644
index 0000000..d707736
--- /dev/null
+++ b/src/Components/EmptySearchList.jsx
@@ -0,0 +1,21 @@
+import { Box, Image, Text } from "@chakra-ui/react"
+import EmptySearchListImage from "../assets/EmptySearchList.svg"
+
+const EmptySearchList = ({message}) => {
+ return (
+
+
+ {message}
+ Posts of rubix will appear here.
+
+
+ )
+}
+
+export default EmptySearchList
\ No newline at end of file
diff --git a/src/Components/Functions/TimeCalculator.jsx b/src/Components/Functions/TimeCalculator.jsx
new file mode 100644
index 0000000..46bce24
--- /dev/null
+++ b/src/Components/Functions/TimeCalculator.jsx
@@ -0,0 +1,35 @@
+import { useState, useEffect } from "react";
+
+const TimeCalculator = ({ JoiningDate }) => {
+ const [elapsedTime, setElapsedTime] = useState(0);
+
+ useEffect(() => {
+ const calculateTimeElapsed = () => {
+ const startDate = new Date(JoiningDate);
+ const currentDate = new Date();
+ const difference = currentDate - startDate;
+ setElapsedTime(Math.floor(difference / 1000)); // Convert milliseconds to seconds
+ };
+
+ // Calculate time elapsed initially
+ calculateTimeElapsed();
+
+ // Update time elapsed every second
+ const intervalId = setInterval(calculateTimeElapsed, 1000);
+
+ // Clear interval on component unmount
+ return () => clearInterval(intervalId);
+ }, []);
+
+ // Convert seconds to years, months, days, hours, minutes, and remaining seconds
+ const years = Math.floor(elapsedTime / (365 * 24 * 60 * 60));
+ const months = Math.floor((elapsedTime % (365 * 24 * 60 * 60)) / (30 * 24 * 60 * 60)); // Approximating a month to 30 days
+ const days = Math.floor((elapsedTime % (30 * 24 * 60 * 60)) / (24 * 60 * 60));
+ const hours = Math.floor((elapsedTime % (24 * 60 * 60)) / (60 * 60));
+ const minutes = Math.floor((elapsedTime % (60 * 60)) / 60);
+ const seconds = elapsedTime % 60;
+
+ return `${years}Y ${months}M ${hours}H ${minutes}M ${seconds}S`;
+};
+
+export default TimeCalculator;
diff --git a/src/Components/Functions/Toaster.jsx b/src/Components/Functions/Toaster.jsx
new file mode 100644
index 0000000..1b25e43
--- /dev/null
+++ b/src/Components/Functions/Toaster.jsx
@@ -0,0 +1,11 @@
+import { useToast } from "@chakra-ui/react";
+
+export const toaster = () => {
+ const toast = useToast();
+
+ return toast({
+ title: "Loged In",
+ status: "success",
+ isClosable: true,
+ });
+}
\ No newline at end of file
diff --git a/src/Components/Functions/UTCConvertor.jsx b/src/Components/Functions/UTCConvertor.jsx
new file mode 100644
index 0000000..beab87f
--- /dev/null
+++ b/src/Components/Functions/UTCConvertor.jsx
@@ -0,0 +1,16 @@
+export const formatDate = (dateString) => {
+ const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
+
+ // Create a new Date object from the provided string
+ const date = new Date(dateString);
+
+ // Extract day, month, and year components
+ const day = date.getDate();
+ const month = months[date.getMonth()];
+ const year = date.getFullYear();
+
+ // Format the date in "DD-Mon-YYYY" format
+ const formattedDate = `${day}-${month}-${year}`;
+
+ return formattedDate;
+}
\ No newline at end of file
diff --git a/src/Components/Header.jsx b/src/Components/Header.jsx
new file mode 100644
index 0000000..5fe7522
--- /dev/null
+++ b/src/Components/Header.jsx
@@ -0,0 +1,45 @@
+import { AddIcon } from "@chakra-ui/icons";
+import { Box, Button, Text } from "@chakra-ui/react";
+import React from "react";
+import { Link } from "react-router-dom";
+
+const Header = ({ link, btnTitle, title }) => {
+ return (
+
+ {/* Community */}
+
+
+ {title}
+
+
+ {btnTitle && link && (
+
+ }
+ backgroundColor={"purple.700"}
+ _hover={{
+ backgroundColor: "purple.800",
+ }}
+ color={"whitesmoke"}
+ size="sm"
+ rounded={"sm"}
+ >
+ {btnTitle}
+
+
+ )}
+
+ );
+};
+
+export default Header;
diff --git a/src/Components/ImageDropBox.jsx b/src/Components/ImageDropBox.jsx
new file mode 100644
index 0000000..d68ac5a
--- /dev/null
+++ b/src/Components/ImageDropBox.jsx
@@ -0,0 +1,77 @@
+import {
+ AspectRatio,
+ Box,
+ Container,
+ Heading,
+ Input,
+ Stack,
+ Text,
+} from "@chakra-ui/react";
+import React from "react";
+
+import { motion, useAnimation } from "framer-motion";
+
+const ImageDropBox = () => {
+ return (
+
+
+
+
+
+
+ Drop images here
+
+ or click to upload
+
+
+
+
+
+
+ );
+};
+
+export default ImageDropBox;
diff --git a/src/Components/Inputs/Input01.jsx b/src/Components/Inputs/Input01.jsx
new file mode 100644
index 0000000..61d7766
--- /dev/null
+++ b/src/Components/Inputs/Input01.jsx
@@ -0,0 +1,44 @@
+import React, { useState } from "react";
+
+const input01Style = {
+ width: "100%",
+ border: "1px solid #ADB3BD",
+ outline: "none",
+ height: 50,
+ fontSize: "16px",
+};
+
+const focusedInputStyle = {
+ border: "1px solid #38187C", // Change border color for focused state
+};
+
+const Input01 = ({ type, placeholder, onChange, name, register }) => {
+ const [isFocused, setIsFocused] = useState(false);
+
+ const handleFocus = () => {
+ setIsFocused(true);
+ };
+
+ const handleBlur = () => {
+ setIsFocused(false);
+ };
+
+ return (
+
+ );
+};
+
+export default Input01;
diff --git a/src/Components/Loaders/FullscreenLoaders.jsx b/src/Components/Loaders/FullscreenLoaders.jsx
new file mode 100644
index 0000000..0705dba
--- /dev/null
+++ b/src/Components/Loaders/FullscreenLoaders.jsx
@@ -0,0 +1,18 @@
+import { Box, Spinner } from "@chakra-ui/react";
+import React from "react";
+
+const FullscreenLoaders = () => {
+ return (
+
+
+
+ );
+};
+
+export default FullscreenLoaders;
diff --git a/src/Components/Loaders/Loader01.jsx b/src/Components/Loaders/Loader01.jsx
new file mode 100644
index 0000000..89f04bc
--- /dev/null
+++ b/src/Components/Loaders/Loader01.jsx
@@ -0,0 +1,14 @@
+import React from "react";
+
+const Loader01 = () => {
+ return (
+
+ );
+};
+
+export default Loader01;
diff --git a/src/Components/WebButton.jsx b/src/Components/WebButton.jsx
new file mode 100644
index 0000000..6d425fc
--- /dev/null
+++ b/src/Components/WebButton.jsx
@@ -0,0 +1,68 @@
+
+import { Button } from '@chakra-ui/react'
+import React from 'react'
+
+const WebButton = ({title}) => {
+ return (
+ )
+}
+
+export default WebButton
\ No newline at end of file
diff --git a/src/Constants/Paginations.js b/src/Constants/Paginations.js
new file mode 100644
index 0000000..c31b729
--- /dev/null
+++ b/src/Constants/Paginations.js
@@ -0,0 +1 @@
+export const TABLE_PAGINATION = { page: 1, size: 15 }
\ No newline at end of file
diff --git a/src/Contexts/GlobalStateContext.jsx b/src/Contexts/GlobalStateContext.jsx
new file mode 100644
index 0000000..48a2ae0
--- /dev/null
+++ b/src/Contexts/GlobalStateContext.jsx
@@ -0,0 +1,6 @@
+// GlobalStateContext.js
+import { createContext } from 'react';
+
+const GlobalStateContext = createContext();
+
+export default GlobalStateContext;
diff --git a/src/Contexts/GlobalStateProvider.jsx b/src/Contexts/GlobalStateProvider.jsx
new file mode 100644
index 0000000..40c7366
--- /dev/null
+++ b/src/Contexts/GlobalStateProvider.jsx
@@ -0,0 +1,30 @@
+// GlobalStateContext.js
+import React, { useState } from "react";
+import GlobalStateContext from "./GlobalStateContext";
+
+function generateUID() {
+ // Generates a random 8-character alphanumeric string
+ return Math.random().toString(36).substring(2, 10);
+}
+
+const GlobalStateProvider = ({ children }) => {
+ const [isAuthenticate, setIsAuthenticate] = useState(false);
+ const [memberIfo, setMemberInfo] = useState();
+ const [communityMembers, setCommityMembers] = useState();
+
+ return (
+
+ {children}
+
+ );
+};
+export default GlobalStateProvider;
diff --git a/src/Images/dark-bg.png b/src/Images/dark-bg.png
new file mode 100644
index 0000000..690e6b5
Binary files /dev/null and b/src/Images/dark-bg.png differ
diff --git a/src/Images/light-bg.png b/src/Images/light-bg.png
new file mode 100644
index 0000000..3b23568
Binary files /dev/null and b/src/Images/light-bg.png differ
diff --git a/src/Images/logo.jpg b/src/Images/logo.jpg
new file mode 100644
index 0000000..38dac87
Binary files /dev/null and b/src/Images/logo.jpg differ
diff --git a/src/Images/logoDark.png b/src/Images/logoDark.png
new file mode 100644
index 0000000..cf272a3
Binary files /dev/null and b/src/Images/logoDark.png differ
diff --git a/src/Images/logoDarkMini.png b/src/Images/logoDarkMini.png
new file mode 100644
index 0000000..28e09e7
Binary files /dev/null and b/src/Images/logoDarkMini.png differ
diff --git a/src/Images/logoLight.png b/src/Images/logoLight.png
new file mode 100644
index 0000000..9f0ea48
Binary files /dev/null and b/src/Images/logoLight.png differ
diff --git a/src/Images/miniLogo.jpg b/src/Images/miniLogo.jpg
new file mode 100644
index 0000000..4c2d702
Binary files /dev/null and b/src/Images/miniLogo.jpg differ
diff --git a/src/Images/reactLogo.png b/src/Images/reactLogo.png
new file mode 100644
index 0000000..80d81cf
Binary files /dev/null and b/src/Images/reactLogo.png differ
diff --git a/src/Layout/DefaultLayout.jsx b/src/Layout/DefaultLayout.jsx
new file mode 100644
index 0000000..514cbbb
--- /dev/null
+++ b/src/Layout/DefaultLayout.jsx
@@ -0,0 +1,312 @@
+import React, { useContext, useState } from "react";
+import logo from "../assets/logo.png";
+import logoMini from "../assets/logo-min.png";
+import { useDispatch } from "react-redux";
+import { loginUser } from "../Redux/Slice/auth";
+import Button02 from "../Components/Buttons/Button02";
+import { TbArrowBadgeLeftFilled } from "react-icons/tb";
+import { TbArrowBadgeRightFilled } from "react-icons/tb";
+import { ArrowBackIcon, ArrowLeftIcon, ArrowRightIcon } from "@chakra-ui/icons";
+import {
+ Link,
+ NavLink,
+ Route,
+ Routes,
+ useLocation,
+ useNavigate,
+} from "react-router-dom";
+import { RouteLink } from "../Routes/Routes";
+import NotFound from "../Pages/NotFound";
+import { nav } from "../Routes/Nav";
+import {
+ Avatar,
+ Box,
+ Button,
+ PopoverArrow,
+ PopoverBody,
+ PopoverCloseButton,
+ PopoverContent,
+ PopoverFooter,
+ PopoverHeader,
+ PopoverTrigger,
+ Portal,
+ Text,
+ WrapItem,
+ Popover,
+ Tag,
+} from "@chakra-ui/react";
+import GlobalStateContext from "../Contexts/GlobalStateContext";
+import Cookies from "js-cookie"; // Import the Cookies library
+
+const DashboardLayout = () => {
+ const navigate = useNavigate();
+ const dispach = useDispatch();
+ const location = useLocation();
+ const path = location.pathname;
+ const [isDrawerOpen, setIsDrawerOpen] = useState(false);
+ const [openDrawerClick, setOpenDrawerClick] = useState(true);
+ const { setIsAuthenticate } = useContext(GlobalStateContext);
+
+ console.log(isDrawerOpen, openDrawerClick);
+
+ const openDrawerOnClick = () => {
+ setOpenDrawerClick(!openDrawerClick);
+ };
+
+ const logOutHandler = () => {
+ // dispach(loginUser(false));
+ setIsAuthenticate(false);
+ Cookies.remove("isAuthenticated");
+ navigate("/login");
+ };
+
+ // Function to get the title based on the route
+ const getTitle = () => {
+ switch (path) {
+ case "/":
+ return "👋🏻 Hi, developer admin";
+ case "/blogs-articles":
+ return "Blogs and Articles";
+ case "/videos":
+ return "Videos";
+ case "/news":
+ return "News";
+ case "/events":
+ return "Events";
+ case "/whitepaper":
+ return "Whitepaper";
+ case "/community/":
+ return "Community";
+ case "/community":
+ return "Community";
+ case "/community/view/":
+ return "Community";
+ case "/community/add-comunity":
+ return
+
+
+
+ Community
+ ;
+ default:
+ if (path.startsWith("/community/view/")) {
+ return (
+
+
+
+
+ Community
+
+ );
+ } else if (path.startsWith("/community/edit/")) {
+ return (
+
+
+
+
+ Community
+
+ );
+ }
+ return "Rubix";
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ {/* */}
+
+
+
+
+ );
+};
+
+export default DashboardLayout;
+
+const AppContent = () => {
+ return (
+
+ {RouteLink.map(({ path, Component }, index) => (
+ } />
+ ))}
+ } />
+
+ );
+};
diff --git a/src/Layout/animations.jsx b/src/Layout/animations.jsx
new file mode 100644
index 0000000..7ac044d
--- /dev/null
+++ b/src/Layout/animations.jsx
@@ -0,0 +1,23 @@
+import { motion } from "framer-motion";
+
+export const OPACITY_ON_LOAD = {
+ as: motion.div,
+ initial: { opacity: 0 },
+ animate: { opacity: 1 }
+}
+
+export const SLIDE_IN_BOTTOM = {
+ as: motion.div,
+ initial: { opacity: 0, y: 50 },
+ animate: { opacity: 1, y: 0 },
+ transition: { duration: 0.5, ease: "easeInOut" }
+ };
+
+
+ export const FADE_IN_SCALE_UP = {
+ as: motion.div,
+ initial: { opacity: 0, scale: 0.9 },
+ animate: { opacity: 1, scale: 1 },
+ transition: { duration: 0.5, ease: "easeInOut" }
+ };
+
\ No newline at end of file
diff --git a/src/Pages/Banners/Banner.jsx b/src/Pages/Banners/Banner.jsx
new file mode 100644
index 0000000..5e43227
--- /dev/null
+++ b/src/Pages/Banners/Banner.jsx
@@ -0,0 +1,69 @@
+import { Box, Button, Divider, HStack, Skeleton, Text } from "@chakra-ui/react";
+import React from "react";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { Link } from "react-router-dom";
+import { AddIcon, ArrowForwardIcon } from "@chakra-ui/icons";
+import { useGetBuildBannerQuery, useGetCommunityBannerQuery, useGetLearnBannerQuery, useGetNewsBannerQuery } from "../../Services/api.service";
+import CommunityBannerCard from "../Community/CommunityBannerCard";
+import Header from "../../Components/Header";
+import BannerStack from "../../Components/BannerStack";
+
+const Banner = () => {
+ const communityBanner = useGetCommunityBannerQuery();
+ const learnBanner = useGetLearnBannerQuery();
+ const buildBanner = useGetBuildBannerQuery()
+ const newsBanner = useGetNewsBannerQuery()
+
+ return (
+
+
+ item?.status === true)}
+ viewBannerLink={'/banner/banner-community/view'}
+ />
+
+
+
+
+
+
+
+ );
+};
+
+export default Banner;
+
+
+
+
+
+
+
+
diff --git a/src/Pages/Banners/BannerCommunity/AddBanner.jsx b/src/Pages/Banners/BannerCommunity/AddBanner.jsx
new file mode 100644
index 0000000..e21f13c
--- /dev/null
+++ b/src/Pages/Banners/BannerCommunity/AddBanner.jsx
@@ -0,0 +1,359 @@
+import {
+ Box,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Input,
+ Text,
+ Stack,
+ Textarea,
+ Heading,
+ Button,
+ useToast,
+ Divider,
+ Image,
+ } from "@chakra-ui/react";
+ import React, { useState } from "react";
+ import fallbackImage from "../../../assets/ultp-fallback-img.webp";
+ import { TiWarning } from "react-icons/ti";
+
+ import { motion } from "framer-motion";
+ import { OPACITY_ON_LOAD } from "../../../Layout/animations";
+
+ import { yupResolver } from "@hookform/resolvers/yup";
+ import { useForm } from "react-hook-form";
+ import { addCommunityBannerSchema, addCommunitySchema } from "../../../Validations/Validations";
+ import {
+ useCreateCommunityBannerMutation,
+ useCreateCommunityMutation,
+ useGetCommunityQuery,
+ } from "../../../Services/api.service";
+ import { useNavigate } from "react-router-dom";
+ import Loader01 from "../../../Components/Loaders/Loader01";
+
+ const AddBanner = () => {
+ const toast = useToast();
+ const navigate = useNavigate();
+ const getCommunityQuery = useGetCommunityQuery();
+ const [createCommunityBannerData] = useCreateCommunityBannerMutation(); // Invoke the hook to get the mutation function
+ const [isLoading, setIsLoading] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(addCommunityBannerSchema),
+ });
+
+ const onSubmit = async (data) => {
+ console.log(data);
+ try {
+ setIsLoading(true);
+ const formData = new FormData();
+ formData.append("heading", data.heading);
+ formData.append("sub_heading", data.sub_heading);
+ formData.append("CTO_button_link", data.CTO_button_link);
+ formData.append("CTO_button_title", data.CTO_button_title);
+ if (data.banner_image[0]) {
+ formData.append("banner_image", data.banner_image[0]);
+ }
+ // Trigger the mutation
+ createCommunityBannerData(formData)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ reset();
+ navigate("/banner/banner-community");
+ }else if(response?.data?.statusCode === 500){
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+
+ }
+ })
+ .catch((error) => {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ // Handle error notification if needed
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ }
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return (
+
+
+
+ Banner Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Banner Image
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ export default AddBanner;
+
\ No newline at end of file
diff --git a/src/Pages/Banners/BannerCommunity/BannerCommunity.jsx b/src/Pages/Banners/BannerCommunity/BannerCommunity.jsx
new file mode 100644
index 0000000..3e967e6
--- /dev/null
+++ b/src/Pages/Banners/BannerCommunity/BannerCommunity.jsx
@@ -0,0 +1,318 @@
+import React, { useRef, useState } from "react";
+import {
+ Avatar,
+ Box,
+ Link,
+ Tag,
+ Text,
+ WrapItem,
+ Tooltip,
+ Divider,
+ Stack,
+ HStack,
+ Input,
+ Button,
+ Select,
+ Image,
+ Menu,
+ MenuButton,
+ MenuList,
+ MenuItem,
+ Switch,
+ Portal,
+ useDisclosure,
+ AlertDialog,
+ AlertDialogOverlay,
+ AlertDialogContent,
+ AlertDialogHeader,
+ AlertDialogCloseButton,
+ AlertDialogBody,
+ AlertDialogFooter,
+ useToast,
+ Skeleton,
+ VStack,
+} from "@chakra-ui/react";
+import { GrAdd } from "react-icons/gr";
+import { AddIcon, ChevronDownIcon, HamburgerIcon } from "@chakra-ui/icons";
+import DataTable from "../../../Components/DataTable/DataTable";
+import CommunityBanner from "../../../Components/CommunityBanner";
+import { OPACITY_ON_LOAD } from "../../../Layout/animations";
+import { v4 as uuidv4 } from "uuid";
+import { Link as RouterLink } from "react-router-dom";
+import {
+ useDeleteCommunityBannerMutation,
+ useDeleteCommunityMutation,
+ useGetCommunityBannerQuery,
+ useGetCommunityByIdQuery,
+ useGetCommunityQuery,
+ useUpdateCommunityBannerStatusMutation,
+ useUpdateCommunityStatusMutation,
+} from "../../../Services/api.service";
+import { HiDotsVertical } from "react-icons/hi";
+import TimeCalculator from "../../../Components/Functions/TimeCalculator";
+import { formatDate } from "../../../Components/Functions/UTCConvertor";
+import CustomAlertDialog from "../../../Components/CustomAlertDialog";
+import WebButton from "../../../Components/WebButton";
+import CommunityCardDisplay from "../../Community/CommunityCardDisplay";
+import CommunityBannerCard from "../../Community/CommunityBannerCard";
+import Header from "../../../Components/Header";
+
+const BannerCommunity = () => {
+ // ====================================================[Hooks]===================================================================
+ const toast = useToast();
+ const [deleteAlert, setDeleteAlert] = useState(false);
+ const [actionId, setActionId] = useState(null);
+ const [deleteIsLoading, setDeleteIsLoading] = useState(false);
+ const [searchTerm, setSearchTerm] = useState("");
+ const [statusFilter, setStatusFilter] = useState("all");
+ const community = useGetCommunityQuery();
+ const communityBanner = useGetCommunityBannerQuery();
+ const [deleteCommunityBanner] = useDeleteCommunityBannerMutation();
+ const [updateCommunityBannerStatus] =
+ useUpdateCommunityBannerStatusMutation();
+
+ // ====================================================[Functions]===================================================================
+ const handleDelete = async (bannerId) => {
+ try {
+ // Trigger the mutation
+ setDeleteIsLoading(true);
+ await deleteCommunityBanner(bannerId)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ duration: 1000,
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating community:", error);
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error deleting community:", error);
+ }
+ };
+
+ const handleUpdateStatus = async (id) => {
+ console.log(id);
+
+ try {
+ // Trigger the mutation
+ await updateCommunityBannerStatus({ id })
+ .then((response) => {
+ console.log(response?.data);
+ if (response?.data?.statusCode === 200) {
+ console.log("toasted");
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error updating community status:", error);
+ }
+ };
+
+ // ====================================================[Table Filter]================================================================
+ const filteredData = communityBanner?.data?.data?.rows?.filter((item) => {
+ // Filter by name (case insensitive)
+ const name = item.Heading;
+ const searchLower = searchTerm.toLowerCase();
+ const nameMatches = name.toLowerCase().includes(searchLower);
+
+ return nameMatches;
+ });
+
+ // ====================================================[Table Setup]================================================================
+ const tableHeadRow = [
+ "Banner image",
+ "Heading",
+ "Sub heading",
+ "Button title",
+ "Active",
+ "Created At",
+ ];
+
+ const extractedArray = filteredData?.map((item, index) => {
+ return {
+ "Banner image": (
+
+ ),
+ Heading: (
+
+
+
+ {item?.Heading}
+
+
+
+ ),
+ "Sub heading": (
+
+
+
+ {item?.sub_heading}
+
+
+
+ ),
+ "Button title": item?.CTO_button_title,
+ Active: (
+ handleUpdateStatus(item.id)}
+ isChecked={item.status}
+ />
+ ),
+ "Created At": (
+
+
+ {formatDate(item?.createdAt)}
+
+
+
+ ),
+ };
+ });
+
+ return (
+
+
+
+
+
+ {/* ====================================================[ Top bar ]================================================================ */}
+
+ {/* */}
+
+
+ {/*
+
+ Community Banners
+
+ */}
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+
+
+
+
+ {/* ====================================================[ Table ]================================================================ */}
+
+ {/* ====================================================[ Alert ]================================================================ */}
+ setDeleteAlert(false)}
+ isOpen={deleteAlert}
+ alertHandler={() => handleDelete(actionId)}
+ message={"Are you sure you want to delete member?"}
+ isLoading={deleteIsLoading}
+ />
+
+ );
+};
+
+export default BannerCommunity;
diff --git a/src/Pages/Banners/BannerCommunity/BannerCommunityEdit.jsx b/src/Pages/Banners/BannerCommunity/BannerCommunityEdit.jsx
new file mode 100644
index 0000000..a0506b9
--- /dev/null
+++ b/src/Pages/Banners/BannerCommunity/BannerCommunityEdit.jsx
@@ -0,0 +1,415 @@
+import React, { useEffect, useState } from "react";
+import { useNavigate, useParams } from "react-router-dom";
+import {
+ useGetCommunityBannerByIdQuery,
+ useGetCommunityByIdQuery,
+ useUpdateCommunityBannerMutation,
+ useUpdateCommunityMutation,
+} from "../../../Services/api.service";
+import { editCommunityBannerSchema, schemaEdit } from "../../../Validations/Validations";
+import { useForm } from "react-hook-form";
+import { yupResolver } from "@hookform/resolvers/yup";
+import {
+ Box,
+ Divider,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Heading,
+ Image,
+ Input,
+ Stack,
+ Textarea,
+ Button,
+ Skeleton,
+ useToast,
+ Switch,
+ Tag,
+} from "@chakra-ui/react";
+import { TiWarning } from "react-icons/ti";
+import { OPACITY_ON_LOAD } from "../../../Layout/animations";
+import { motion } from "framer-motion";
+import Loader01 from "../../../Components/Loaders/Loader01";
+import FullscreenLoaders from "../../../Components/Loaders/FullscreenLoaders";
+import fallbackImage from "../../../assets/ultp-fallback-img.webp";
+import Header from "../../../Components/Header";
+
+const BannerComunityEditPage = () => {
+ const { id } = useParams();
+ const toast = useToast();
+ const navigate = useNavigate();
+ const { data, error, isLoading } = useGetCommunityBannerByIdQuery(id);
+ const [isLoadingEdit, setIsLoadingEdit] = useState(false);
+ const [selectedImage, setSelectedImage] = useState();
+ const [updateCommunityBanner] = useUpdateCommunityBannerMutation();
+ console.log(data);
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ setValue,
+ } = useForm({
+ resolver: yupResolver(editCommunityBannerSchema),
+ defaultValues: {
+ Heading: "",
+ sub_heading: "",
+ CTO_button_title: "",
+ CTO_button_link: "",
+ },
+ });
+
+ useEffect(() => {
+ if (data?.data) {
+ setSelectedImage(
+ `https://rubix.betadelivery.com/${data?.data?.banner_image}`
+ );
+ setValue("Heading", data?.data?.Heading);
+ setValue("sub_heading", data?.data?.sub_heading);
+ setValue("CTO_button_title", data?.data?.CTO_button_title);
+ setValue("CTO_button_link", data?.data?.CTO_button_link);
+ setValue("banner_image", data?.data?.banner_image);
+ }
+ }, [data, setValue]);
+
+ const onSubmit = async (formData) => {
+ setIsLoadingEdit(true);
+ const form = new FormData();
+ form.append("Heading", formData.Heading);
+ form.append("sub_heading", formData.sub_heading);
+ form.append("CTO_button_title", formData.CTO_button_title);
+ form.append("CTO_button_link", formData.CTO_button_link);
+ if (formData.banner_image[0]) {
+ form.append("banner_image", formData.banner_image[0]);
+ }
+ if (formData?.banner_image === data?.data?.banner_image) {
+ console.log("hit");
+ form.delete("banner_image");
+ }
+ const mutationResult = await updateCommunityBanner({ id: id, data: form })
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setIsLoadingEdit(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ duration: 1000,
+ isClosable: true,
+ });
+ navigate("/banner/banner-community");
+ // setDeleteAlert(false);
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating community:", error);
+ setIsLoadingEdit(false);
+ // setDeleteIsLoading(false);
+ // setDeleteAlert(false);
+ });
+
+ // Log the FormData entries
+ // for (const [key, value] of form.entries()) {
+ // console.log(`${key}: ${value}`);
+ // }
+
+ reset();
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return isLoading ? (
+
+ ) : (
+
+
+
+
+
+
+ Display Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Display banner
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default BannerComunityEditPage;
diff --git a/src/Pages/Banners/BannerCommunity/BannerCommunityView.jsx b/src/Pages/Banners/BannerCommunity/BannerCommunityView.jsx
new file mode 100644
index 0000000..084077e
--- /dev/null
+++ b/src/Pages/Banners/BannerCommunity/BannerCommunityView.jsx
@@ -0,0 +1,155 @@
+import React, { useEffect, useState } from "react";
+import { Link, useParams } from "react-router-dom";
+import {
+ useGetCommunityBannerByIdQuery,
+ useGetCommunityByIdQuery,
+ useGetCommunityQuery,
+} from "../../../Services/api.service";
+import {
+ Box,
+ Button,
+ Divider,
+ Image,
+ StackDivider,
+ Tag,
+ VStack,
+} from "@chakra-ui/react";
+import { OPACITY_ON_LOAD } from "../../../Layout/animations";
+import FullscreenLoaders from "../../../Components/Loaders/FullscreenLoaders";
+import { formatDate } from "../../../Components/Functions/UTCConvertor";
+import Header from "../../../Components/Header";
+
+const BannerComunityViewPage = () => {
+ const { id } = useParams();
+ const { data, error, isLoading } = useGetCommunityBannerByIdQuery(id);
+ const banner = data?.data;
+ useEffect(() => {
+ }, [data])
+
+ return isLoading ? (
+
+ ) : (
+
+
+
+
+
+
+
+ Banners Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Display banner
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+ {/* */}
+
+
+
+
+ {data?.data?.status ?
+ Active
+ :
+ Inactive
+ }
+
+ Heading
+
+ {banner?.Heading}
+
+
+
+
+
+ Sub heading
+
+
+ {banner?.sub_heading}
+
+
+
+
+
+ Button title
+
+
+ {banner?.CTO_button_title}
+
+
+
+
+ Button link
+
+ {banner?.CTO_button_link}
+
+
+
+
+
+ Created At
+
+
+ {formatDate(banner?.createdAt)}
+
+
+
+
+
+ Updated At
+
+
+ {formatDate(banner?.updatedAt)}
+
+
+
+
+
+
+
+ );
+};
+
+export default BannerComunityViewPage;
diff --git a/src/Pages/Banners/BannerLearn/AddLearnBanner.jsx b/src/Pages/Banners/BannerLearn/AddLearnBanner.jsx
new file mode 100644
index 0000000..dd35882
--- /dev/null
+++ b/src/Pages/Banners/BannerLearn/AddLearnBanner.jsx
@@ -0,0 +1,358 @@
+import {
+ Box,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Input,
+ Text,
+ Stack,
+ Textarea,
+ Heading,
+ Button,
+ useToast,
+ Divider,
+ Image,
+} from "@chakra-ui/react";
+import React, { useState } from "react";
+import fallbackImage from "../../../assets/ultp-fallback-img.webp";
+import { TiWarning } from "react-icons/ti";
+
+import { motion } from "framer-motion";
+import { OPACITY_ON_LOAD } from "../../../Layout/animations";
+
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+import { addCommunityBannerSchema, addCommunitySchema } from "../../../Validations/Validations";
+import {
+ useCreateCommunityBannerMutation,
+ useCreateCommunityMutation,
+ useGetCommunityQuery,
+} from "../../../Services/api.service";
+import { useNavigate } from "react-router-dom";
+import Loader01 from "../../../Components/Loaders/Loader01";
+
+const AddLearnBanner = () => {
+ const toast = useToast();
+ const navigate = useNavigate();
+ const getCommunityQuery = useGetCommunityQuery();
+ const [createCommunityBannerData] = useCreateCommunityBannerMutation(); // Invoke the hook to get the mutation function
+ const [isLoading, setIsLoading] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(addCommunityBannerSchema),
+ });
+
+ const onSubmit = async (data) => {
+ console.log(data);
+ try {
+ setIsLoading(true);
+ const formData = new FormData();
+ formData.append("heading", data.heading);
+ formData.append("sub_heading", data.sub_heading);
+ formData.append("CTO_button_link", data.CTO_button_link);
+ formData.append("CTO_button_title", data.CTO_button_title);
+ if (data.banner_image[0]) {
+ formData.append("banner_image", data.banner_image[0]);
+ }
+ // Trigger the mutation
+ createCommunityBannerData(formData)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ reset();
+ navigate("/banner/banner-community");
+ }else if(response?.data?.statusCode === 500){
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+
+ }
+ })
+ .catch((error) => {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ // Handle error notification if needed
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ }
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return (
+
+
+
+ Banner Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Banner Image
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AddLearnBanner;
diff --git a/src/Pages/Banners/BannerLearn/BannerLearn.jsx b/src/Pages/Banners/BannerLearn/BannerLearn.jsx
new file mode 100644
index 0000000..ec60882
--- /dev/null
+++ b/src/Pages/Banners/BannerLearn/BannerLearn.jsx
@@ -0,0 +1,328 @@
+import React, { useRef, useState } from "react";
+import {
+ Avatar,
+ Box,
+ Link,
+ Tag,
+ Text,
+ WrapItem,
+ Tooltip,
+ Divider,
+ Stack,
+ HStack,
+ Input,
+ Button,
+ Select,
+ Image,
+ Menu,
+ MenuButton,
+ MenuList,
+ MenuItem,
+ Switch,
+ Portal,
+ useDisclosure,
+ AlertDialog,
+ AlertDialogOverlay,
+ AlertDialogContent,
+ AlertDialogHeader,
+ AlertDialogCloseButton,
+ AlertDialogBody,
+ AlertDialogFooter,
+ useToast,
+ Skeleton,
+ VStack,
+} from "@chakra-ui/react";
+import { GrAdd } from "react-icons/gr";
+import { AddIcon, ChevronDownIcon, HamburgerIcon } from "@chakra-ui/icons";
+import DataTable from "../../../Components/DataTable/DataTable";
+import CommunityBanner from "../../../Components/CommunityBanner";
+import { OPACITY_ON_LOAD } from "../../../Layout/animations";
+import { v4 as uuidv4 } from "uuid";
+import { Link as RouterLink } from "react-router-dom";
+import {
+ useDeleteCommunityBannerMutation,
+ useDeleteCommunityMutation,
+ useDeleteLearnBannerMutation,
+ useGetCommunityBannerQuery,
+ useGetCommunityByIdQuery,
+ useGetCommunityQuery,
+ useGetLearnBannerByIdQuery,
+ useGetLearnBannerQuery,
+ useUpdateCommunityBannerStatusMutation,
+ useUpdateCommunityStatusMutation,
+ useUpdateLearnBannerStatusMutation,
+} from "../../../Services/api.service";
+import { HiDotsVertical } from "react-icons/hi";
+import TimeCalculator from "../../../Components/Functions/TimeCalculator";
+import { formatDate } from "../../../Components/Functions/UTCConvertor";
+import CustomAlertDialog from "../../../Components/CustomAlertDialog";
+import WebButton from "../../../Components/WebButton";
+import CommunityCardDisplay from "../../Community/CommunityCardDisplay";
+import CommunityBannerCard from "../../Community/CommunityBannerCard";
+import Header from "../../../Components/Header";
+
+const BannerLearn = () => {
+ // ====================================================[Hooks]===================================================================
+ const toast = useToast();
+ const [deleteAlert, setDeleteAlert] = useState(false);
+ const [actionId, setActionId] = useState(null);
+ const [deleteIsLoading, setDeleteIsLoading] = useState(false);
+ const [searchTerm, setSearchTerm] = useState("");
+ const [statusFilter, setStatusFilter] = useState("all");
+ const Learn = useGetLearnBannerQuery();
+ const learnBanner = useGetLearnBannerQuery();
+ const [deleteLearnBanner] = useDeleteLearnBannerMutation();
+ const [updateLearnBannerStatus] = useUpdateLearnBannerStatusMutation();
+
+ // ====================================================[Functions]===================================================================
+ const handleDelete = async (bannerId) => {
+ try {
+ // Trigger the mutation
+ setDeleteIsLoading(true);
+ await deleteLearnBanner(bannerId)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ duration: 1000,
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating Learn:", error);
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error deleting Learn:", error);
+ }
+ };
+
+ const handleUpdateStatus = async (id) => {
+ console.log(id);
+
+ try {
+ // Trigger the mutation
+ await updateLearnBannerStatus({ id })
+ .then((response) => {
+ console.log(response?.data);
+ if (response?.data?.statusCode === 201) {
+ console.log("toasted");
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error updating community status:", error);
+ }
+ };
+
+ // ====================================================[Table Filter]================================================================
+ const filteredData = learnBanner?.data?.data?.rows?.filter((item) => {
+ // Filter by name (case insensitive)
+ const name = item.Heading;
+ const searchLower = searchTerm.toLowerCase();
+ const nameMatches = name.toLowerCase().includes(searchLower);
+
+
+
+ // Filter by status
+ const status = item.status;
+
+ const statusMatches =
+ statusFilter === "all" ||
+ (statusFilter === "active" && status === true) ||
+ (statusFilter === "inactive" && status === false);
+
+ return nameMatches && statusMatches;
+ });
+
+ // ====================================================[Table Setup]================================================================
+ const tableHeadRow = [
+ "Banner image",
+ "Heading",
+ "Sub heading",
+ "Button title",
+ "Active",
+ "Created At",
+ ];
+
+ const extractedArray = filteredData?.map((item, index) => {
+ return {
+ "Banner image": (
+
+ ),
+ Heading: (
+
+
+
+ {item?.Heading}
+
+
+
+ ),
+ "Sub heading": (
+
+
+
+ {item?.sub_heading}
+
+
+
+ ),
+ "Button title": item?.CTO_button_title,
+ Active: (
+ handleUpdateStatus(item.id)}
+ isChecked={item.status}
+ />
+ ),
+ "Created At": (
+
+
+ {formatDate(item?.createdAt)}
+
+
+
+ ),
+ };
+ });
+
+ return (
+
+
+ {/* ====================================================[ Top bar ]================================================================ */}
+
+ {/* */}
+
+
+ {/*
+
+ Community Banners
+
+ */}
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+
+
+
+
+ {/* ====================================================[ Table ]================================================================ */}
+
+ {/* ====================================================[ Alert ]================================================================ */}
+ setDeleteAlert(false)}
+ isOpen={deleteAlert}
+ alertHandler={() => handleDelete(actionId)}
+ message={"Are you sure you want to delete member?"}
+ isLoading={deleteIsLoading}
+ />
+
+ );
+};
+
+export default BannerLearn;
diff --git a/src/Pages/BlogsAndArticles/AddBlogsAndArticles.jsx b/src/Pages/BlogsAndArticles/AddBlogsAndArticles.jsx
new file mode 100644
index 0000000..4ec8ad0
--- /dev/null
+++ b/src/Pages/BlogsAndArticles/AddBlogsAndArticles.jsx
@@ -0,0 +1,746 @@
+import {
+ Box,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Input,
+ Text,
+ Stack,
+ Textarea,
+ Heading,
+ Button,
+ useToast,
+ Divider,
+ Image,
+} from "@chakra-ui/react";
+import React, { useState } from "react";
+import fallbackImage from "../../assets/fallBackImage.png";
+import fallbackImageLarge from "../../assets/ultp-fallback-img.webp";
+import { TiWarning } from "react-icons/ti";
+
+import { motion } from "framer-motion";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+import { addBlogSchema } from "../../Validations/Validations";
+import { useCreateBlogMutation } from "../../Services/api.service";
+import { useNavigate } from "react-router-dom";
+import Loader01 from "../../Components/Loaders/Loader01";
+import ReactQuill from "react-quill";
+import "react-quill/dist/quill.snow.css";
+import ChipSelector from "../../Components/ChipSelector/ChipSelector";
+import Header from "../../Components/Header";
+
+const AddBlogsAndArticles = () => {
+ const toast = useToast();
+ const navigate = useNavigate();
+ const [createBlog] = useCreateBlogMutation(); // Invoke the hook to get the mutation function
+ const [isLoading, setIsLoading] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+ const [selectedImageLarge, setSelectedImageLarge] =
+ useState(fallbackImageLarge);
+ const [largeImageData, setLargeImageData] = useState(null);
+ const [smallImageData, setSmallImageData] = useState(null);
+ const [chips, setChips] = useState([]);
+ const [value, setValue] = useState("");
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(addBlogSchema),
+ });
+
+ const onSubmit = async (data) => {
+ console.log(data);
+ const formData = new FormData();
+ formData.append("author_name", data.author_name);
+ formData.append("author_designation", data.author_designation);
+ formData.append("meta_description", data.meta_description);
+ formData.append("title", data.title);
+ formData.append("category", data.category);
+ formData.append("summary", data.summary);
+ formData.append("content", value); // Add the content to formData
+ if (data.profile_image[0]) {
+ formData.append("profile_image", data.profile_image[0]);
+ }
+ if (data.content_image_large[0]) {
+ formData.append("content_image_large", data.content_image_large[0]);
+ }
+ if (chips.length === 0) {
+ return toast({
+ title: "Please add tags",
+ status: "error",
+ isClosable: true,
+ });
+ } else {
+ // formData.append("tags", chips);
+ chips.forEach((tag, i) => {
+ formData.append(`tags[${i}]`, tag); // Append each tag as an array element
+ });
+ }
+
+ try {
+ setIsLoading(true);
+ createBlog(formData)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 201) {
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ reset();
+ navigate("/blogs-articles");
+ }
+ })
+ .catch((error) => {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ // Handle error notification if needed
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error creating community:", error);
+ }
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ setSmallImageData(file);
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ const handleImageChangeLarge = (e) => {
+ const file = e.target.files[0];
+ setLargeImageData(file);
+ console.log(largeImageData);
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImageLarge(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return (
+
+
+
+
+
+ );
+};
+
+export default AddBlogsAndArticles;
diff --git a/src/Pages/BlogsAndArticles/BlogsAndArticles.jsx b/src/Pages/BlogsAndArticles/BlogsAndArticles.jsx
new file mode 100644
index 0000000..b43f3ee
--- /dev/null
+++ b/src/Pages/BlogsAndArticles/BlogsAndArticles.jsx
@@ -0,0 +1,335 @@
+import React, { useRef, useState } from "react";
+import {
+ Avatar,
+ Box,
+ Link,
+ Tag,
+ Text,
+ WrapItem,
+ Tooltip,
+ Divider,
+ Stack,
+ HStack,
+ Input,
+ Button,
+ Select,
+ Image,
+ Menu,
+ MenuButton,
+ MenuList,
+ MenuItem,
+ Switch,
+ Portal,
+ useDisclosure,
+ AlertDialog,
+ AlertDialogOverlay,
+ AlertDialogContent,
+ AlertDialogHeader,
+ AlertDialogCloseButton,
+ AlertDialogBody,
+ AlertDialogFooter,
+ useToast,
+ Skeleton,
+ VStack,
+} from "@chakra-ui/react";
+import { AddIcon } from "@chakra-ui/icons";
+import DataTable from "../../Components/DataTable/DataTable";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { Link as RouterLink } from "react-router-dom";
+import {
+ useDeleteBlogMutation,
+ useDeleteCommunityMutation,
+ useGetBlogQuery,
+ useGetCommunityBannerQuery,
+ useGetCommunityByIdQuery,
+ useGetCommunityQuery,
+ useUpdateBlogStatusMutation,
+ useUpdateCommunityStatusMutation,
+} from "../../Services/api.service";
+import { HiDotsVertical } from "react-icons/hi";
+import { formatDate } from "../../Components/Functions/UTCConvertor";
+import CustomAlertDialog from "../../Components/CustomAlertDialog";
+import Header from "../../Components/Header";
+
+const BlogsAndArticles = () => {
+ // ====================================================[Hooks]===================================================================
+ const toast = useToast();
+ const [deleteAlert, setDeleteAlert] = useState(false);
+ const [actionId, setActionId] = useState(null);
+ const [deleteIsLoading, setDeleteIsLoading] = useState(false);
+ const [searchTerm, setSearchTerm] = useState("");
+ const [statusFilter, setStatusFilter] = useState("all");
+ const blog = useGetBlogQuery();
+ const [deleteBlog] = useDeleteBlogMutation();
+ const [updateBlogStatus] = useUpdateBlogStatusMutation();
+ // ====================================================[Functions]===================================================================
+ const handleDelete = async (communityId) => {
+ try {
+ // Trigger the mutation
+ setDeleteIsLoading(true);
+ await deleteBlog(communityId)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 201) {
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating community:", error);
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error deleting community:", error);
+ }
+ };
+
+ const handleUpdateStatus = async (id) => {
+ try {
+ // Trigger the mutation
+ await updateBlogStatus({ id })
+ .then((response) => {
+ console.log(response?.data);
+ if (response?.data?.statusCode === 201) {
+ console.log("toasted");
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error updating community status:", error);
+ }
+ };
+
+ // ====================================================[Table Filter]================================================================
+ const filteredData = blog?.data?.data?.rows?.filter((item) => {
+ // Filter by name (case insensitive)
+ const name = item.title;
+ const searchLower = searchTerm.toLowerCase();
+ const nameMatches = name.toLowerCase().includes(searchLower);
+
+ // Filter by status
+ const status = item.active_blog;
+
+ const statusMatches =
+ statusFilter === "all" ||
+ (statusFilter === "active" && status === true) ||
+ (statusFilter === "inactive" && status === false);
+
+ return nameMatches && statusMatches;
+ });
+
+ // ====================================================[Table Setup]================================================================
+ const tableHeadRow = [
+ "Auther Name",
+ "Discription",
+ "Summary",
+ "Tags",
+ "Active",
+ "Created At",
+ ];
+ const extractedArray = filteredData?.map((item, index) => {
+ return {
+ "Auther Name": (
+
+
+
+
+ {item?.author_name}
+
+
+ {item?.author_designation}
+
+
+
+ ),
+ Discription: (
+
+
+
+ {item?.meta_description}
+
+
+
+ ),
+ Summary: (
+
+
+
+ {item?.summary}
+
+
+
+ ),
+ Tags: (
+
+ {item?.tags?.map(({ id, tag }) => (
+
+ {tag}
+
+ ))}
+
+ ),
+ Active: (
+ handleUpdateStatus(item.id)}
+ isChecked={item.active_blog}
+ />
+ ),
+ "Created At": (
+
+
+ {formatDate(item?.createdAt)}
+
+
+
+ ),
+ };
+ });
+
+ return (
+
+ {/* ====================================================[ Top bar ]================================================================ */}
+
+ {/* */}
+
+
+
+
+ {/*
+
+ Blogs
+
+ */}
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+
+
+
+
+ {/* ====================================================[ Table ]================================================================ */}
+
+
+ {/* ====================================================[ Alert ]================================================================ */}
+ setDeleteAlert(false)}
+ isOpen={deleteAlert}
+ alertHandler={() => handleDelete(actionId)}
+ message={"Are you sure you want to delete member?"}
+ isLoading={deleteIsLoading}
+ />
+
+ );
+};
+
+export default BlogsAndArticles;
diff --git a/src/Pages/BlogsAndArticles/EditBlogsAndArticles.jsx b/src/Pages/BlogsAndArticles/EditBlogsAndArticles.jsx
new file mode 100644
index 0000000..27dfe08
--- /dev/null
+++ b/src/Pages/BlogsAndArticles/EditBlogsAndArticles.jsx
@@ -0,0 +1,789 @@
+import React, { useEffect, useState } from "react";
+import { useNavigate, useParams } from "react-router-dom";
+import {
+ Box,
+ Button,
+ Divider,
+ FormControl,
+ Textarea,
+ FormHelperText,
+ FormLabel,
+ Heading,
+ Image,
+ Input,
+ Stack,
+ useToast,
+} from "@chakra-ui/react";
+import {
+ useGetBlogByIdQuery,
+ useUpdateBlogMutation,
+} from "../../Services/api.service";
+import { useForm } from "react-hook-form";
+import { yupResolver } from "@hookform/resolvers/yup";
+import FullscreenLoaders from "../../Components/Loaders/FullscreenLoaders";
+import { addBlogSchema } from "../../Validations/Validations";
+import fallbackImage from "../../assets/fallBackImage.png";
+import fallbackImageLarge from "../../assets/ultp-fallback-img.webp";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { TiWarning } from "react-icons/ti";
+import ReactQuill from "react-quill";
+import ChipSelector from "../../Components/ChipSelector/ChipSelector";
+import { motion } from "framer-motion";
+import Loader01 from "../../Components/Loaders/Loader01";
+import Header from "../../Components/Header";
+
+const EditBlogsAndArticles = () => {
+ const { id } = useParams();
+ const toast = useToast();
+ const navigate = useNavigate();
+ const [updateBlog] = useUpdateBlogMutation();
+ const { data, error, isLoading } = useGetBlogByIdQuery(id);
+ const blog = data?.data;
+ const [isLoading01, setIsLoading01] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+ const [selectedImageLarge, setSelectedImageLarge] =
+ useState(fallbackImageLarge);
+ const [largeImageData, setLargeImageData] = useState({});
+ const [smallImageData, setSmallImageData] = useState({});
+ const [chips, setChips] = useState(
+ blog?.tags?.map((tagObject) => tagObject.tag)
+ );
+
+ console.log(blog?.tags?.map((tagObject) => tagObject.tag));
+
+ const [valueQuill, setValueQuill] = useState(blog?.content);
+ console.log(blog);
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ setValue,
+ } = useForm({
+ resolver: yupResolver(addBlogSchema),
+ defaultValues: {
+ author_name: "",
+ author_designation: "",
+ meta_description: "",
+ title: "",
+ category: "",
+ summary: "",
+ content: "",
+ profile_image: "",
+ content_image_large: "",
+ tags: "",
+ },
+ });
+
+ useEffect(() => {
+ if (data?.data) {
+ setSelectedImage(`https://rubix.betadelivery.com/${blog?.profile_image}`);
+ setSelectedImageLarge(
+ `https://rubix.betadelivery.com/${blog?.content_image_large}`
+ );
+ setValue("author_name", blog?.author_name);
+ setValue("author_designation", blog?.author_designation);
+ setValue("meta_description", blog?.meta_description);
+ setValue("title", blog?.title);
+ setValue("category", blog?.category?.blog_category);
+ setValue("summary", blog?.summary);
+ setValue("content", blog?.content);
+ setValue("tags", blog?.tags);
+ }
+ }, [data, blog, setValue]);
+
+ const onSubmit = async (data) => {
+ console.log(data);
+ const formData = new FormData();
+ formData.append("author_name", data.author_name);
+ formData.append("author_designation", data.author_designation);
+ formData.append("meta_description", data.meta_description);
+ formData.append("title", data.title);
+ formData.append("category", data.category);
+ formData.append("summary", data.summary);
+ formData.append("content", valueQuill); // Add the content to formData
+ if (data.profile_image[0]) {
+ formData.append("profile_image", data.profile_image[0]);
+ }
+ if (data.content_image_large[0]) {
+ formData.append("content_image_large", data.content_image_large[0]);
+ }
+ if (chips.length === 0) {
+ return toast({
+ title: "Please add tags",
+ status: "error",
+ isClosable: true,
+ });
+ } else {
+ // formData.append("tags", chips);
+ chips.forEach((tag, i) => {
+ formData.append(`tags[${i}]`, tag); // Append each tag as an array element
+ });
+ }
+
+ try {
+ setIsLoading01(true);
+ updateBlog({ id: id, data: formData })
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+ console.log(response);
+
+ if (response?.data?.statusCode === 201) {
+ setIsLoading01(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ reset();
+ navigate("/blogs-articles");
+ }
+ })
+ .catch((error) => {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading01(false);
+ // Handle error notification if needed
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error creating community:", error);
+ }
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ setSmallImageData(file);
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ const handleImageChangeLarge = (e) => {
+ const file = e.target.files[0];
+ setLargeImageData(file);
+ console.log(largeImageData);
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImageLarge(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ if (isLoading) {
+ return ;
+ }
+ return (
+
+
+
+
+ );
+};
+
+export default EditBlogsAndArticles;
diff --git a/src/Pages/BlogsAndArticles/ViewBlogsAndArticles.jsx b/src/Pages/BlogsAndArticles/ViewBlogsAndArticles.jsx
new file mode 100644
index 0000000..5091217
--- /dev/null
+++ b/src/Pages/BlogsAndArticles/ViewBlogsAndArticles.jsx
@@ -0,0 +1,228 @@
+import {
+ Box,
+ Button,
+ Divider,
+ Image,
+ Tag,
+ Text,
+ useToast,
+} from "@chakra-ui/react";
+import React from "react";
+import { Link, useNavigate, useParams } from "react-router-dom";
+import { useGetBlogByIdQuery } from "../../Services/api.service";
+import FullscreenLoaders from "../../Components/Loaders/FullscreenLoaders";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import Header from "../../Components/Header";
+
+const ViewBlogsAndArticles = () => {
+ const { id } = useParams();
+ const toast = useToast();
+ const navigate = useNavigate();
+ const { data, error, isLoading } = useGetBlogByIdQuery(id);
+ const blog = data?.data;
+ if (isLoading) {
+ return ;
+ }
+ console.log(blog);
+ return (
+
+
+
+
+
+
+ Blog Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Blog's banner image
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+ {/* */}
+
+
+
+
+
+
+ Status
+
+ {blog.active_blog ? (
+
+ Active
+
+ ) : (
+
+ Inactive
+
+ )}
+
+
+
+ Title
+ {blog?.title}
+
+
+
+
+ Blog description
+
+
+ {blog?.meta_description}
+
+
+
+
+
+ Content
+
+
+
+
+
+
+
+
+ Blog summary
+
+
+ {blog?.summary}
+
+
+
+
+
+ Tags
+
+
+
+ {blog?.tags?.map(({ id, tag }) => (
+
+ {tag}
+
+ ))}
+
+
+
+
+
+ Category
+
+
+ {blog?.category?.blog_category}
+
+
+
+
+
+
+
+
+
+
+ Author's display profile
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+
+
+
+
+
+ Author name
+
+
+ {blog?.author_name}
+
+
+
+
+
+ Author designation
+
+
+ {blog?.author_designation}
+
+
+
+
+
+ );
+};
+
+export default ViewBlogsAndArticles;
diff --git a/src/Pages/Community/AddComunity.jsx b/src/Pages/Community/AddComunity.jsx
new file mode 100644
index 0000000..b397eba
--- /dev/null
+++ b/src/Pages/Community/AddComunity.jsx
@@ -0,0 +1,343 @@
+import {
+ Box,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Input,
+ Text,
+ Stack,
+ Textarea,
+ Heading,
+ Button,
+ useToast,
+ Divider,
+ Image,
+} from "@chakra-ui/react";
+import React, { useState } from "react";
+import fallbackImage from "../../assets/fallBackImage.png";
+import { TiWarning } from "react-icons/ti";
+
+import { motion } from "framer-motion";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+import { addCommunitySchema } from "../../Validations/Validations";
+import {
+ useCreateCommunityMutation,
+ useGetCommunityQuery,
+} from "../../Services/api.service";
+import { useNavigate } from "react-router-dom";
+import Loader01 from "../../Components/Loaders/Loader01";
+import Header from "../../Components/Header";
+
+const AddComunity = () => {
+ const toast = useToast();
+ const navigate = useNavigate();
+ const getCommunityQuery = useGetCommunityQuery();
+ const [createCommunityData] = useCreateCommunityMutation(); // Invoke the hook to get the mutation function
+ const [isLoading, setIsLoading] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(addCommunitySchema),
+ });
+
+ const onSubmit = async (data) => {
+ try {
+ setIsLoading(true);
+ const formData = new FormData();
+ formData.append("member_name", data.member_name);
+ formData.append("designation", data.designation);
+ formData.append("description", data.description);
+ formData.append("linkedin", data.linkedin);
+ if (data.profile_image[0]) {
+ formData.append("profile_image", data.profile_image[0]);
+ }
+ // Trigger the mutation
+ createCommunityData(formData)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ reset();
+ navigate("/community");
+ }
+ })
+ .catch((error) => {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ // Handle error notification if needed
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error creating community:", error);
+ }
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ Members Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Display profile
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AddComunity;
diff --git a/src/Pages/Community/CommCard.jsx b/src/Pages/Community/CommCard.jsx
new file mode 100644
index 0000000..3fa1a66
--- /dev/null
+++ b/src/Pages/Community/CommCard.jsx
@@ -0,0 +1,85 @@
+/* eslint-disable react/prop-types */
+/* eslint-disable no-unused-vars */
+import { Text, SimpleGrid, Card, Image, Box, Flex } from "@chakra-ui/react";
+// import map from "../../assets/images/map-pin.png";
+import linkedin from "../../assets/linkedin.png";
+import { Link } from "react-router-dom";
+
+const CommCard = ({ id, imageUrl, name, jobTitle, description, linkdin }) => {
+ return (
+
+
+
+
+
+
+
+
+
+ {/*
*/}
+
+
+ {/*
+
{location}
+ */}
+
+ {name}
+
+
+ {jobTitle}
+
+
+ {description}
+
+
+ );
+};
+
+export default CommCard;
diff --git a/src/Pages/Community/Community.jsx b/src/Pages/Community/Community.jsx
new file mode 100644
index 0000000..0154eb1
--- /dev/null
+++ b/src/Pages/Community/Community.jsx
@@ -0,0 +1,510 @@
+import React, { useRef, useState } from "react";
+import {
+ Avatar,
+ Box,
+ Link,
+ Tag,
+ Text,
+ WrapItem,
+ Tooltip,
+ Divider,
+ Stack,
+ HStack,
+ Input,
+ Button,
+ Select,
+ Image,
+ Menu,
+ MenuButton,
+ MenuList,
+ MenuItem,
+ Switch,
+ Portal,
+ useDisclosure,
+ AlertDialog,
+ AlertDialogOverlay,
+ AlertDialogContent,
+ AlertDialogHeader,
+ AlertDialogCloseButton,
+ AlertDialogBody,
+ AlertDialogFooter,
+ useToast,
+ Skeleton,
+ VStack,
+} from "@chakra-ui/react";
+import { GrAdd } from "react-icons/gr";
+import { AddIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, HamburgerIcon } from "@chakra-ui/icons";
+import DataTable from "../../Components/DataTable/DataTable";
+import CommunityBanner from "../../Components/CommunityBanner";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { v4 as uuidv4 } from "uuid";
+import { Link as RouterLink } from "react-router-dom";
+import {
+ useDeleteCommunityMutation,
+ useGetCommunityBannerQuery,
+ useGetCommunityByIdQuery,
+ useGetCommunityQuery,
+ useUpdateCommunityStatusMutation,
+} from "../../Services/api.service";
+import { HiDotsVertical } from "react-icons/hi";
+import TimeCalculator from "../../Components/Functions/TimeCalculator";
+import { formatDate } from "../../Components/Functions/UTCConvertor";
+import CustomAlertDialog from "../../Components/CustomAlertDialog";
+import WebButton from "../../Components/WebButton";
+import CommunityCardDisplay from "./CommunityCardDisplay";
+import CommunityBannerCard from "./CommunityBannerCard";
+import Header from "../../Components/Header";
+import { TABLE_PAGINATION } from "../../Constants/Paginations";
+
+const Community = () => {
+ // ====================================================[Hooks]===================================================================
+ const cancelRef = useRef();
+ const toast = useToast();
+ const { isOpen, onOpen, onClose } = useDisclosure();
+ const [deleteAlert, setDeleteAlert] = useState(false);
+ const [actionId, setActionId] = useState(null);
+ const [deleteIsLoading, setDeleteIsLoading] = useState(false);
+ const [searchTerm, setSearchTerm] = useState("");
+ const [statusFilter, setStatusFilter] = useState("all");
+
+
+
+ const [pageSize, setPageSize] = useState(TABLE_PAGINATION?.size);
+ const [currentPage, setCurrentPage] = useState(1);
+ const [displayRange, setDisplayRange] = useState({ start: TABLE_PAGINATION?.page, end: pageSize });
+
+
+
+ const community = useGetCommunityQuery({ page: currentPage, size: pageSize });
+ const [deleteCommunity] = useDeleteCommunityMutation();
+ const [updateCommunityStatus] = useUpdateCommunityStatusMutation();
+
+ // ====================================================[Functions]===================================================================
+ const handleDelete = async (communityId) => {
+ try {
+ // Trigger the mutation
+ setDeleteIsLoading(true);
+ await deleteCommunity(communityId)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 201) {
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating community:", error);
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error deleting community:", error);
+ }
+ };
+ const handleUpdateStatus = async (id) => {
+ try {
+ // Trigger the mutation
+ await updateCommunityStatus({ id })
+ .then((response) => {
+ console.log(response?.data);
+ if (response?.data?.statusCode === 201) {
+ console.log("toasted");
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error updating community status:", error);
+ }
+ };
+
+ // ====================================================[Table Filter]================================================================
+ const filteredData = community?.data?.data?.rows?.filter((item) => {
+ // Filter by name (case insensitive)
+ const name = item.member_name;
+ const searchLower = searchTerm.toLowerCase();
+ const nameMatches = name.toLowerCase().includes(searchLower);
+
+ // Filter by status
+ const status = item.status;
+ const statusLower = status ? "active" : "inactive";
+
+ const statusMatches =
+ statusFilter === "all" ||
+ (statusFilter === "active" && status === true) ||
+ (statusFilter === "inactive" && status === false);
+
+ return nameMatches && statusMatches;
+ });
+
+ // ====================================================[Table Setup]================================================================
+ const tableHeadRow = [
+ "Name",
+ "Discription",
+ "Linked In",
+ "Active",
+ "Created At",
+ ];
+ const extractedArray = filteredData?.map((item, index) => {
+ return {
+ Name: (
+
+
+
+
+ {item?.member_name}
+
+
+ {item?.designation}
+
+
+
+ ),
+ Discription: (
+
+ {item?.description}
+
+ ),
+ "Linked In": (
+
+
+
+ Linked In
+
+
+
+ ),
+ Active: (
+ handleUpdateStatus(item.id)}
+ isChecked={item.status}
+ />
+ ),
+ "Created At": (
+
+
+ {formatDate(item?.createdAt)}
+
+
+
+ ),
+ };
+ });
+
+
+
+ // ====================================================[Pagination Setup]================================================================
+ const paginationPrev = () => {
+ if (currentPage > 1) {
+ setCurrentPage(currentPage - 1);
+ updateDisplayRange(currentPage - 1);
+ }
+ };
+
+ const paginationNext = () => {
+ const totalPages = Math.ceil(community?.data?.data?.totalItems / pageSize);
+ if (currentPage < totalPages) {
+ setCurrentPage(currentPage + 1);
+ updateDisplayRange(currentPage + 1);
+ }
+ };
+ const updateDisplayRange = (page) => {
+ const start = (page - 1) * pageSize + 1;
+ const end = Math.min(start + pageSize - 1, community?.data?.data?.totalItems);
+ setDisplayRange({ start, end });
+ };
+
+
+
+
+
+
+
+ return (
+
+
+
+ {/* */}
+ {/*
+ Community banner
+
+
+
+ }
+ backgroundColor={"purple.700"}
+ _hover={{
+ backgroundColor: "purple.800",
+ }}
+ color={"whitesmoke"}
+ size="sm"
+ >
+ Create banner
+
+
+ */}
+
+ {/* */}
+ {/* {communityBanner?.isLoading ? :
+
+
+ {banner?.Heading}
+
+
+ {banner?.sub_heading}
+
+
+
+ Last update: {formatDate(banner?.createdAt)}
+ } */}
+
+ {/* {communityBanner?.isLoading
+ ? Array.from({ length: 3 }).map((_, index) => (
+
+ ))
+ : banner?.map(
+ ({
+ id,
+ CTO_button_title,
+ banner_image,
+ Heading,
+ createdAt,
+ sub_heading,
+ }) => (
+
+ )
+ )}
+ */}
+
+
+ {/* ====================================================[ Top bar ]================================================================ */}
+
+ {/* */}
+
+
+ {/*
+
+ Community cards
+
+ */}
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+
+
+
+
+
+
+
+ {displayRange.start} - {displayRange.end} of{" "}
+ {community?.data?.data?.totalItems}
+
+
+
+
+
+
+
+
+ {/* ====================================================[ Table ]================================================================ */}
+
+
+ {/* */}
+
+ {/*
+
+ Community cards
+
+
+
+
+ */}
+
+ {/* ====================================================[ Alert ]================================================================ */}
+ setDeleteAlert(false)}
+ isOpen={deleteAlert}
+ alertHandler={() => handleDelete(actionId)}
+ message={"Are you sure you want to delete member?"}
+ isLoading={deleteIsLoading}
+ />
+
+ );
+};
+
+export default Community;
diff --git a/src/Pages/Community/CommunityBannerCard.jsx b/src/Pages/Community/CommunityBannerCard.jsx
new file mode 100644
index 0000000..390647f
--- /dev/null
+++ b/src/Pages/Community/CommunityBannerCard.jsx
@@ -0,0 +1,53 @@
+import { Box, Button, Card, CardBody, CardHeader, Heading, Text } from "@chakra-ui/react";
+import React from "react";
+import WebButton from "../../Components/WebButton";
+import { formatDate } from "../../Components/Functions/UTCConvertor";
+
+const CommunityBannerCard = ({ bgImage, subHeading, heading, ctoBtnTitle, createdAt }) => {
+ return (
+
+
+ {heading}
+
+
+
+
+ {subHeading}
+
+
+
+
+
+
+ {formatDate(createdAt)}
+
+ );
+};
+
+export default CommunityBannerCard;
diff --git a/src/Pages/Community/CommunityCardDisplay.jsx b/src/Pages/Community/CommunityCardDisplay.jsx
new file mode 100644
index 0000000..42db0b5
--- /dev/null
+++ b/src/Pages/Community/CommunityCardDisplay.jsx
@@ -0,0 +1,73 @@
+import React from 'react'
+import { useGetCommunityQuery } from '../../Services/api.service';
+import CommCard from './CommCard';
+import { Box, Container, SimpleGrid, Text } from '@chakra-ui/react';
+
+
+const CommunityCardDisplay = () => {
+ const community = useGetCommunityQuery();
+ console.log(community.data?.data?.rows);
+ const communityData = community.data?.data?.rows
+ console.log(communityData);
+ return (
+
+
+
+ Rubix Community
+
+
+ {communityData?.map((item) => (
+
+ ))}
+
+
+
+ )
+}
+
+export default CommunityCardDisplay
\ No newline at end of file
diff --git a/src/Pages/Community/CommunityCardsTableView.jsx b/src/Pages/Community/CommunityCardsTableView.jsx
new file mode 100644
index 0000000..c775d41
--- /dev/null
+++ b/src/Pages/Community/CommunityCardsTableView.jsx
@@ -0,0 +1,9 @@
+import React from 'react'
+
+const CommunityCardsTableView = () => {
+ return (
+ CommunityCardsTableView
+ )
+}
+
+export default CommunityCardsTableView
\ No newline at end of file
diff --git a/src/Pages/Community/ComunityEditPage.jsx b/src/Pages/Community/ComunityEditPage.jsx
new file mode 100644
index 0000000..ed1c083
--- /dev/null
+++ b/src/Pages/Community/ComunityEditPage.jsx
@@ -0,0 +1,413 @@
+import React, { useEffect, useState } from "react";
+import { useNavigate, useParams } from "react-router-dom";
+import {
+ useGetCommunityByIdQuery,
+ useUpdateCommunityMutation,
+} from "../../Services/api.service";
+import { addCommunitySchema, schemaEdit } from "../../Validations/Validations";
+import { useForm } from "react-hook-form";
+import { yupResolver } from "@hookform/resolvers/yup";
+import {
+ Box,
+ Divider,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Heading,
+ Image,
+ Input,
+ Stack,
+ Textarea,
+ Button,
+ Skeleton,
+ useToast,
+ Switch,
+ Tag,
+} from "@chakra-ui/react";
+import { TiWarning } from "react-icons/ti";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { motion } from "framer-motion";
+import Loader01 from "../../Components/Loaders/Loader01";
+import FullscreenLoaders from "../../Components/Loaders/FullscreenLoaders";
+import fallbackImage from "../../assets/fallBackImage.png";
+import Header from "../../Components/Header";
+
+const ComunityEditPage = () => {
+ const { id } = useParams();
+ const toast = useToast();
+ const navigate = useNavigate();
+ const { data, error, isLoading } = useGetCommunityByIdQuery(id);
+ const [isLoadingEdit, setIsLoadingEdit] = useState(false);
+ const [selectedImage, setSelectedImage] = useState();
+ const [updateCommunity] = useUpdateCommunityMutation();
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ setValue,
+ } = useForm({
+ resolver: yupResolver(addCommunitySchema),
+ defaultValues: {
+ member_name: "",
+ designation: "",
+ description: "",
+ linkedin: "",
+ profile_image:null
+ },
+ });
+
+ useEffect(() => {
+ if (data?.data) {
+ setSelectedImage(
+ `https://rubix.betadelivery.com/${data?.data?.profile_image}`
+ );
+ setValue("member_name", data?.data?.member_name);
+ setValue("designation", data?.data?.designation);
+ setValue("description", data?.data?.description);
+ setValue("linkedin", data?.data?.linkedin);
+ setValue("profile_image", data?.data?.profile_image);
+ }
+ }, [data, setValue]);
+
+ const onSubmit = async (formData) => {
+ setIsLoadingEdit(true);
+ const form = new FormData();
+ form.append("member_name", formData.member_name);
+ form.append("designation", formData.designation);
+ form.append("description", formData.description);
+ form.append("linkedin", formData.linkedin);
+ if (formData.profile_image[0]) {
+ form.append("profile_image", formData.profile_image[0]);
+ }
+ if (formData?.profile_image === data?.data?.profile_image) {
+ console.log("hit");
+ form.delete("profile_image");
+ }
+ await updateCommunity({ id: id, data: form })
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setIsLoadingEdit(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ duration: 1000,
+ isClosable: true,
+ });
+ navigate("/community");
+ // setDeleteAlert(false);
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating community:", error);
+ setIsLoadingEdit(false);
+ // setDeleteIsLoading(false);
+ // setDeleteAlert(false);
+ });
+
+ // Log the FormData entries
+ // for (const [key, value] of form.entries()) {
+ // console.log(`${key}: ${value}`);
+ // }
+
+ reset();
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return isLoading ? (
+
+ ) : (
+
+
+
+
+
+
+
+ Members Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Display profile
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ComunityEditPage;
diff --git a/src/Pages/Community/ComunityViewPage.jsx b/src/Pages/Community/ComunityViewPage.jsx
new file mode 100644
index 0000000..50df44a
--- /dev/null
+++ b/src/Pages/Community/ComunityViewPage.jsx
@@ -0,0 +1,170 @@
+import React, { useEffect, useState } from "react";
+import { Link, useParams } from "react-router-dom";
+import {
+ useGetCommunityByIdQuery,
+ useGetCommunityQuery,
+} from "../../Services/api.service";
+import {
+ Box,
+ Button,
+ Divider,
+ Image,
+ StackDivider,
+ Tag,
+ VStack,
+} from "@chakra-ui/react";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import FullscreenLoaders from "../../Components/Loaders/FullscreenLoaders";
+import { formatDate } from "../../Components/Functions/UTCConvertor";
+import Header from "../../Components/Header";
+
+const ComunityViewPage = () => {
+ const { id } = useParams();
+ const { data, error, isLoading } = useGetCommunityByIdQuery(id);
+ const member = data?.data;
+ return isLoading ? (
+
+ ) : (
+
+
+
+
+
+
+
+
+
+ Members Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Display profile
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+ {/* */}
+
+
+
+
+ {data?.data?.status ? (
+
+ Active
+
+ ) : (
+
+ Inactive
+
+ )}
+
+ Name
+
+ {member?.member_name}
+
+
+
+
+
+ Designation
+
+
+ {member?.designation}
+
+
+
+
+
+ Description
+
+
+ {member?.description}
+
+
+
+
+ Linkedin
+
+ {member?.linkedin}
+
+
+
+
+
+ Created At
+
+
+ {formatDate(member?.createdAt)}
+
+
+
+
+
+ Updated At
+
+
+ {formatDate(member?.updatedAt)}
+
+
+
+
+
+
+
+
+ );
+};
+
+export default ComunityViewPage;
diff --git a/src/Pages/Events.jsx b/src/Pages/Events.jsx
new file mode 100644
index 0000000..7d1e5eb
--- /dev/null
+++ b/src/Pages/Events.jsx
@@ -0,0 +1,18 @@
+import { Box } from '@chakra-ui/react'
+import { OPACITY_ON_LOAD } from '../Layout/animations'
+
+const Events = () => {
+ return (
+ Events
+ )
+}
+
+export default Events
\ No newline at end of file
diff --git a/src/Pages/Login.jsx b/src/Pages/Login.jsx
new file mode 100644
index 0000000..2cf2725
--- /dev/null
+++ b/src/Pages/Login.jsx
@@ -0,0 +1,236 @@
+import { useNavigate } from "react-router-dom";
+import Input01 from "../Components/Inputs/Input01";
+import logo from "../assets/logo.png";
+import { useDispatch, useSelector } from "react-redux";
+import { loginUser } from "../Redux/Slice/auth";
+import { useContext, useEffect, useState } from "react";
+import Button01 from "../Components/Buttons/Button01";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+import { TiWarning } from "react-icons/ti";
+import Loader01 from "../Components/Loaders/Loader01";
+import Ellipse from "../assets/Ellipse-38.png";
+import Ellipse1 from "../assets/Ellipse-37.png";
+import Ellipse2 from "../assets/Ellipse-39.png";
+import {
+ Button,
+ FormControl,
+ FormLabel,
+ Input,
+ useToast,
+} from "@chakra-ui/react";
+import GlobalStateContext from "../Contexts/GlobalStateContext";
+import Cookies from 'js-cookie';
+import { validationSchema } from "../Validations/Validations";
+
+const Login = () => {
+ const { isAuthenticate, setIsAuthenticate } = useContext(GlobalStateContext);
+ const toast = useToast();
+ // const { isAuthenticate } = useSelector((state) => state?.auth);
+ const [isLoading, setIsLoading] = useState(false);
+
+ const navigate = useNavigate();
+ const dispatch = useDispatch();
+
+ useEffect(() => {
+ if (isAuthenticate) {
+ navigate("/");
+ }
+ }, [navigate, isAuthenticate]);
+
+ const onSubmit = (value) => {
+ setIsLoading(true);
+ if (value.name === "Admin" && value.password === "Admin") {
+ return setTimeout(() => {
+ // dispatch(loginUser(true));
+ setIsAuthenticate(true)
+ setIsLoading(false);
+ toast({
+ title: "Logged In",
+ status: "success",
+ isClosable: true,
+ });
+ Cookies.set('isAuthenticated', true, { expires: 7 });
+ navigate("/");
+ }, 2000); // 3-second delay
+ } else {
+
+ return setTimeout(() => {
+ // dispatch(loginUser(true));
+ setIsAuthenticate(false)
+ setIsLoading(false);
+ toast({
+ title: `Invalid Credentials`,
+ status: "error",
+ isClosable: true,
+ })
+ reset();
+ navigate("/login");
+ }, 2000);
+ }
+ };
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(validationSchema),
+ });
+
+ return (
+
+
+
+
+ Rubix v1.0.0
+
+
+

+
+

+
+

+
+ );
+};
+
+export default Login;
diff --git a/src/Pages/News/AddNews.jsx b/src/Pages/News/AddNews.jsx
new file mode 100644
index 0000000..843a185
--- /dev/null
+++ b/src/Pages/News/AddNews.jsx
@@ -0,0 +1,370 @@
+import {
+ Box,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Input,
+ Text,
+ Stack,
+ Textarea,
+ Heading,
+ Button,
+ useToast,
+ Divider,
+ Image,
+} from "@chakra-ui/react";
+import React, { useState } from "react";
+import fallbackImage from "../../assets/ultp-fallback-img.webp";
+import { TiWarning } from "react-icons/ti";
+
+import { motion } from "framer-motion";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+import {
+ addCommunityBannerSchema,
+ addCommunitySchema,
+ addNews,
+} from "../../Validations/Validations";
+import {
+ useCreateCommunityBannerMutation,
+ useCreateCommunityMutation,
+ useCreateNewsMutation,
+ useGetCommunityQuery,
+} from "../../Services/api.service";
+import { useNavigate } from "react-router-dom";
+import Loader01 from "../../Components/Loaders/Loader01";
+import Header from "../../Components/Header";
+
+const AddNews = () => {
+ const toast = useToast();
+ const navigate = useNavigate();
+ const getCommunityQuery = useGetCommunityQuery();
+ const [createNews] = useCreateNewsMutation(); // Invoke the hook to get the mutation function
+ const [isLoading, setIsLoading] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ } = useForm({
+ resolver: yupResolver(addNews),
+ });
+
+ const onSubmit = async (data) => {
+ const date = new Date(data?.release_date).toUTCString();
+ try {
+ setIsLoading(true);
+ const formData = new FormData();
+ formData.append("title", data.title);
+ formData.append("meta_description", data.meta_description);
+ formData.append("content", data.content);
+ formData.append("release_date", date);
+ if (data.banner_image[0]) {
+ formData.append("banner_image", data.banner_image[0]);
+ }
+ // Trigger the mutation
+ createNews(formData)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ reset();
+ navigate("/news");
+ } else if (response?.data?.statusCode === 500) {
+ setIsLoading(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ // Handle error notification if needed
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error creating community:", error);
+ setIsLoading(false);
+ }
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+ Banner Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Banner Image
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default AddNews;
diff --git a/src/Pages/News/EditNews.jsx b/src/Pages/News/EditNews.jsx
new file mode 100644
index 0000000..11e9200
--- /dev/null
+++ b/src/Pages/News/EditNews.jsx
@@ -0,0 +1,426 @@
+import {
+ Box,
+ Button,
+ Divider,
+ FormControl,
+ FormHelperText,
+ FormLabel,
+ Heading,
+ Image,
+ Input,
+ Stack,
+ Tag,
+ Textarea,
+ useToast,
+} from "@chakra-ui/react";
+import React, { useEffect, useState } from "react";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import Header from "../../Components/Header";
+import { useNavigate, useParams } from "react-router-dom";
+import {
+ useGetNewsByIdQuery,
+ useUpdateNewsMutation,
+} from "../../Services/api.service";
+import { addNews, editNews } from "../../Validations/Validations";
+import { yupResolver } from "@hookform/resolvers/yup";
+import { useForm } from "react-hook-form";
+import fallbackImage from "../../assets/ultp-fallback-img.webp";
+import { motion } from "framer-motion";
+import Loader01 from "../../Components/Loaders/Loader01";
+import { formatDate } from "../../Components/Functions/UTCConvertor";
+import { TiWarning } from "react-icons/ti";
+import FullscreenLoaders from "../../Components/Loaders/FullscreenLoaders";
+
+const EditNews = () => {
+ const { id } = useParams();
+ const toast = useToast();
+ const navigate = useNavigate();
+ const { data, error, isLoading } = useGetNewsByIdQuery(id);
+ const [isLoadingEdit, setIsLoadingEdit] = useState(false);
+ const [selectedImage, setSelectedImage] = useState(fallbackImage);
+ const [largeImageData, setLargeImageData] = useState(null);
+ const [updateNews] = useUpdateNewsMutation();
+
+ const {
+ register,
+ handleSubmit,
+ reset,
+ formState: { errors },
+ setValue,
+ } = useForm({
+ resolver: yupResolver(editNews),
+ defaultValues: {
+ title: "",
+ release_date: "",
+ meta_description: "",
+ content: "",
+ banner_image: null,
+ },
+ });
+
+ useEffect(() => {
+ if (data?.data) {
+ setSelectedImage(
+ `https://rubix.betadelivery.com/${data?.data?.banner_image}`
+ );
+ setValue("title", data?.data?.title);
+ setValue("meta_description", data?.data?.meta_description);
+ setValue("release_date", data?.data?.release_date);
+ setValue("content", data?.data?.content);
+ setValue("banner_image", data?.data?.banner_image);
+ }
+ }, [data, setValue]);
+
+ console.log(errors);
+
+ const onSubmit = async (data) => {
+ setIsLoadingEdit(true);
+ console.log(largeImageData);
+ const form = new FormData();
+ form.append("title", data?.title);
+ form.append("meta_description", data?.meta_description);
+ form.append("content", data?.content);
+ form.append("release_date", data?.release_date);
+ if (largeImageData !== null) {
+ form.append("banner_image", largeImageData);
+ }
+
+ await updateNews({ id: id, data: form })
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setIsLoadingEdit(false);
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ duration: 1000,
+ isClosable: true,
+ });
+ navigate("/news");
+ // setDeleteAlert(false);
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating community:", error);
+ setIsLoadingEdit(false);
+ // setDeleteIsLoading(false);
+ // setDeleteAlert(false);
+ });
+ reset()
+ };
+
+ const handleImageChange = (e) => {
+ const file = e.target.files[0];
+ setLargeImageData(file);
+ if (file) {
+ const reader = new FileReader();
+ reader.onloadend = () => {
+ setSelectedImage(reader.result);
+ };
+ reader.readAsDataURL(file);
+ }
+
+ };
+
+ return isLoading ? (
+
+ ) : (
+
+
+
+
+
+
+ Members Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ Display profile
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+ {selectedImage === fallbackImage || largeImageData === null ? (
+ ""
+ ) : (
+
+
+ {largeImageData && largeImageData?.name}
+
+
+ {largeImageData &&
+ (largeImageData?.size / (1024 * 1024)).toFixed(2)}{" "}
+ mb
+
+
+ )}
+
+
+
+
+
+
+
+ );
+};
+
+export default EditNews;
diff --git a/src/Pages/News/HelpAndSupport.jsx b/src/Pages/News/HelpAndSupport.jsx
new file mode 100644
index 0000000..4b9c437
--- /dev/null
+++ b/src/Pages/News/HelpAndSupport.jsx
@@ -0,0 +1,19 @@
+import React from "react";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { Box } from "@chakra-ui/react";
+import Header from "../../Components/Header";
+
+const HelpAndSupport = () => {
+ return (
+
+
+
+ );
+};
+
+export default HelpAndSupport;
diff --git a/src/Pages/News/News.jsx b/src/Pages/News/News.jsx
new file mode 100644
index 0000000..df6d324
--- /dev/null
+++ b/src/Pages/News/News.jsx
@@ -0,0 +1,319 @@
+import React, { useState } from "react";
+import {
+ Box,
+ Text,
+ Tooltip,
+ HStack,
+ Input,
+ Select,
+ Menu,
+ MenuButton,
+ MenuList,
+ MenuItem,
+ Switch,
+ Portal,
+ useToast,
+} from "@chakra-ui/react";
+import { ChevronLeftIcon, ChevronRightIcon } from "@chakra-ui/icons";
+import DataTable from "../../Components/DataTable/DataTable";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import { Link as RouterLink } from "react-router-dom";
+import {
+ useDeleteNewsMutation,
+ useGetNewsQuery,
+ useUpdateNewsStatusMutation,
+} from "../../Services/api.service";
+import { HiDotsVertical } from "react-icons/hi";
+import { formatDate } from "../../Components/Functions/UTCConvertor";
+import CustomAlertDialog from "../../Components/CustomAlertDialog";
+import Header from "../../Components/Header";
+import { TABLE_PAGINATION } from "../../Constants/Paginations";
+
+const News = () => {
+ // ====================================================[Hooks]===================================================================
+ const toast = useToast();
+ const [deleteAlert, setDeleteAlert] = useState(false);
+ const [actionId, setActionId] = useState(null);
+ const [deleteIsLoading, setDeleteIsLoading] = useState(false);
+ // ====================================================[Constants]===================================================================
+ const [searchTerm, setSearchTerm] = useState("");
+ const [statusFilter, setStatusFilter] = useState("all");
+ const [pageSize, setPageSize] = useState(TABLE_PAGINATION?.size);
+ const [currentPage, setCurrentPage] = useState(TABLE_PAGINATION?.page);
+ const [displayRange, setDisplayRange] = useState({ start: TABLE_PAGINATION?.page, end: pageSize });
+ // ====================================================[RTK Hooks]===================================================================
+ const news = useGetNewsQuery({ page: currentPage, size: pageSize });
+ const [deleteNews] = useDeleteNewsMutation();
+ const [updateNewsStatus] = useUpdateNewsStatusMutation();
+ // ====================================================[Functions]===================================================================
+ const handleDelete = async (communityId) => {
+ try {
+ // Trigger the mutation
+ setDeleteIsLoading(true);
+ await deleteNews(communityId)
+ .then((response) => {
+ // Handle the response here
+ console.log("Mutation response:", response?.data?.statusCode);
+ console.log("Mutation response:", response?.data?.message);
+
+ if (response?.data?.statusCode === 200) {
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ }
+ })
+ .catch((error) => {
+ console.error("Error creating community:", error);
+ setDeleteIsLoading(false);
+ setDeleteAlert(false);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error deleting community:", error);
+ }
+ };
+ const handleUpdateStatus = async (id) => {
+ try {
+ // Trigger the mutation
+ await updateNewsStatus({ id })
+ .then((response) => {
+ console.log(response?.data);
+ if (response?.data?.statusCode === 201) {
+ console.log("toasted");
+ toast({
+ title: response?.data?.message,
+ status: "success",
+ isClosable: true,
+ });
+ }
+ })
+ .catch((error) => {
+ console.log(error);
+ });
+ } catch (error) {
+ // Handle errors
+ console.error("Error updating community status:", error);
+ }
+ };
+ // ====================================================[Table Filter]================================================================
+ const filteredData = news?.data?.data?.rows?.filter((item) => {
+ // Filter by name (case insensitive)
+ const name = item.title;
+ const searchLower = searchTerm.toLowerCase();
+ const nameMatches = name.toLowerCase().includes(searchLower);
+
+ // Filter by status
+ const status = item.status;
+
+ const statusMatches =
+ statusFilter === "all" ||
+ (statusFilter === "active" && status === true) ||
+ (statusFilter === "inactive" && status === false);
+
+ return nameMatches && statusMatches;
+ });
+ // ====================================================[Table Setup]================================================================
+ const tableHeadRow = [
+ "Title",
+ "Discription",
+ "Content",
+ "Release Data",
+ "Active",
+ "Created At",
+ ];
+ const extractedArray = filteredData?.map((item, index) => {
+ return {
+ Title: item?.title,
+ Discription: (
+
+
+
+ {item?.meta_description}
+
+
+
+ ),
+ Content: (
+
+
+
+ {item?.content}
+
+
+
+ ),
+ "Release Data": (
+
+ {formatDate(item?.release_date)}
+
+ ),
+ Active: (
+ handleUpdateStatus(item.id)}
+ isChecked={item.status}
+ />
+ ),
+ "Created At": (
+
+
+ {formatDate(item?.createdAt)}
+
+
+
+ ),
+ };
+ });
+ // ====================================================[Pagination Setup]================================================================
+ const paginationPrev = () => {
+ if (currentPage > 1) {
+ setCurrentPage(currentPage - 1);
+ updateDisplayRange(currentPage - 1);
+ }
+ };
+
+ const paginationNext = () => {
+ const totalPages = Math.ceil(news?.data?.data?.totalItems / pageSize);
+ if (currentPage < totalPages) {
+ setCurrentPage(currentPage + 1);
+ updateDisplayRange(currentPage + 1);
+ }
+ };
+ const updateDisplayRange = (page) => {
+ const start = (page - 1) * pageSize + 1;
+ const end = Math.min(start + pageSize - 1, news?.data?.data?.totalItems);
+ setDisplayRange({ start, end });
+ };
+
+ return (
+
+ {/* ====================================================[ Top bar ]================================================================ */}
+
+
+
+
+ setSearchTerm(e.target.value)}
+ />
+
+
+
+
+
+
+
+
+ {displayRange.start} - {displayRange.end} of{" "}
+ {news?.data?.data?.totalItems}
+
+
+
+
+
+
+
+ {/* ====================================================[ Table ]================================================================ */}
+
+
+ {/* ====================================================[ Alert ]================================================================ */}
+ setDeleteAlert(false)}
+ isOpen={deleteAlert}
+ alertHandler={() => handleDelete(actionId)}
+ message={"Are you sure you want to delete member?"}
+ isLoading={deleteIsLoading}
+ />
+
+ );
+};
+
+export default News;
diff --git a/src/Pages/News/ViewNews.jsx b/src/Pages/News/ViewNews.jsx
new file mode 100644
index 0000000..21e072d
--- /dev/null
+++ b/src/Pages/News/ViewNews.jsx
@@ -0,0 +1,156 @@
+import { Box, Divider, Image, Tag, useToast } from "@chakra-ui/react";
+import React from "react";
+import Header from "../../Components/Header";
+import { OPACITY_ON_LOAD } from "../../Layout/animations";
+import {
+ useGetNewsByIdQuery,
+ useGetNewsQuery,
+} from "../../Services/api.service";
+import { useNavigate, useParams } from "react-router-dom";
+import FullscreenLoaders from "../../Components/Loaders/FullscreenLoaders";
+import { formatDate } from "../../Components/Functions/UTCConvertor";
+
+const ViewNews = () => {
+ const { id } = useParams();
+ const toast = useToast();
+ const navigate = useNavigate();
+ const { data, error, isLoading } = useGetNewsByIdQuery(id);
+ console.log(isLoading);
+ // const { data, error, isLoading } = useGetNewsQuery();
+ const news = data?.data;
+
+ console.log(data);
+ if (isLoading) {
+ return ;
+ }
+ return (
+
+
+
+
+
+
+ News Info
+
+
+ Select the platform for which you need to create this campaign.
+
+
+
+
+
+ News banner image
+
+
+ Below is the profile that will be displayed on the community page.
+
+
+
+
+ {/* */}
+
+
+
+
+
+
+ Status
+
+ {news?.status ? (
+
+ Active
+
+ ) : (
+
+ Inactive
+
+ )}
+
+
+
+ Title
+ {news?.title}
+
+
+
+
+ news description
+
+
+ {news?.meta_description}
+
+
+
+
+
+ Content
+
+
+ {news?.content}
+
+
+
+
+
+ Created at
+
+
+ {formatDate(news?.createdAt)}
+
+
+
+
+
+ Updated at
+
+
+ {formatDate(news?.updatedAt)}
+
+
+
+
+ Release date
+
+
+ {formatDate(news?.release_date)}
+
+
+
+
+
+ );
+};
+
+export default ViewNews;
diff --git a/src/Pages/NoInternetScreen.jsx b/src/Pages/NoInternetScreen.jsx
new file mode 100644
index 0000000..2f14c0f
--- /dev/null
+++ b/src/Pages/NoInternetScreen.jsx
@@ -0,0 +1,22 @@
+import { Box, Image, Text } from '@chakra-ui/react'
+import noInternet from "../assets/Error.svg"
+
+const NoInternetScreen = () => {
+ return (
+
+
+ No Internet !
+
+
+ )
+}
+
+export default NoInternetScreen
\ No newline at end of file
diff --git a/src/Pages/NotFound.jsx b/src/Pages/NotFound.jsx
new file mode 100644
index 0000000..859fc43
--- /dev/null
+++ b/src/Pages/NotFound.jsx
@@ -0,0 +1,8 @@
+
+const NotFound = () => {
+ return (
+ NotFound
+ )
+}
+
+export default NotFound
\ No newline at end of file
diff --git a/src/Pages/Videos.jsx b/src/Pages/Videos.jsx
new file mode 100644
index 0000000..a03b36c
--- /dev/null
+++ b/src/Pages/Videos.jsx
@@ -0,0 +1,19 @@
+import { Box } from '@chakra-ui/react'
+import { OPACITY_ON_LOAD } from '../Layout/animations'
+
+const Videos = () => {
+ return (
+ Videos
+ )
+}
+
+export default Videos
\ No newline at end of file
diff --git a/src/Pages/Whitepapers.jsx b/src/Pages/Whitepapers.jsx
new file mode 100644
index 0000000..7d9a7cd
--- /dev/null
+++ b/src/Pages/Whitepapers.jsx
@@ -0,0 +1,18 @@
+import { Box } from '@chakra-ui/react'
+import { OPACITY_ON_LOAD } from '../Layout/animations'
+
+const Whitepapers = () => {
+ return (
+ Whitepapers
+ )
+}
+
+export default Whitepapers
\ No newline at end of file
diff --git a/src/Redux/Slice/auth.js b/src/Redux/Slice/auth.js
new file mode 100644
index 0000000..ccc070e
--- /dev/null
+++ b/src/Redux/Slice/auth.js
@@ -0,0 +1,80 @@
+import { createSlice } from "@reduxjs/toolkit";
+
+// export const AuthMe = createAsyncThunk(
+// "auth/Me",
+// async (args, { rejectWithValue, dispatch }) => {
+// try {
+// const res = await authMeService();
+// if (res?.status === 200) return res.data;
+// return rejectWithValue(res);
+// } catch (err) {
+// return rejectWithValue(err.response);
+// }
+// }
+// );
+
+const initialState = {
+ isLoading: true,
+ isError: false,
+ error: null,
+ message: null,
+ isAuthenticate: false,
+};
+
+const authMeSlice = createSlice({
+ name: "auth",
+ initialState: initialState,
+ reducers: {
+ logoutUser: (state, action) => {
+ state = initialState;
+ },
+ loginUser: (state, action) => {
+ state.isAuthenticate = action.payload;
+ },
+ },
+ // extraReducers: (builder) => {
+ // builder
+ // .addCase(AuthMe.pending, (state) => {
+ // state.isLoading = true;
+ // })
+ // .addCase(AuthMe.fulfilled, (state, action) => {
+ // state.isLoading = false;
+ // state.profileData = action.payload?.data;
+ // })
+ // .addCase(AuthMe.rejected, (state, action) => {
+ // state.isLoading = false;
+ // })
+ // .addCase(AuthReGenrateAccessToken.pending, (state) => {
+ // state.isLoading = true;
+ // })
+ // .addCase(AuthReGenrateAccessToken.fulfilled, (state, action) => {
+ // state.isLoading = false;
+ // state.accessToken = action.payload?.accessToken || null;
+ // })
+ // .addCase(AuthReGenrateAccessToken.rejected, (state) => {
+ // state.isAuthenticate = false;
+ // state.isLoading = false;
+ // })
+ // .addCase(AuthLogin.pending, (state) => {
+ // state.isLoading = true;
+ // })
+ // .addCase(AuthLogin.fulfilled, (state, action) => {
+ // state.isLoading = false;
+ // state.isAuthenticate = true;
+ // state.role = action.payload.role[0].title;
+ // state.group = action.payload.group[0].title;
+ // state.actions = action.payload.role[0].actions;
+ // state.resources = action.payload.resources;
+ // state.accessToken = action.payload.accessToken;
+ // state.refreshToken = action.payload.refreshToken;
+ // })
+ // .addCase(AuthLogin.rejected, (state, action) => {
+ // state.isLoading = false;
+ // state.isError = true;
+ // state.error = action.payload;
+ // });
+ // },
+});
+
+export const { logoutUser, loginUser } = authMeSlice.actions;
+export default authMeSlice.reducer;
diff --git a/src/Redux/Store.js b/src/Redux/Store.js
new file mode 100644
index 0000000..a73889d
--- /dev/null
+++ b/src/Redux/Store.js
@@ -0,0 +1,43 @@
+import { configureStore } from "@reduxjs/toolkit";
+import { combineReducers } from "redux";
+import { persistReducer, persistStore } from "redux-persist";
+import storage from "redux-persist/lib/storage"; // defaults to localStorage for web
+import { encryptTransform } from "redux-persist-transform-encrypt";
+import auth from "./Slice/auth";
+
+// Import your reducers and combine them
+const rootReducer = combineReducers({
+ // Add your reducers here
+ auth: auth,
+});
+
+// Define encryption for persisted state
+const encryptor = encryptTransform({
+ secretKey: "webStore",
+ onError: function (error) {
+ console.log(error);
+ },
+});
+
+// Configuration for persisting the Redux store
+const persistConfig = {
+ key: "root",
+ storage,
+ transforms: [encryptor],
+};
+
+// Create a persisted reducer
+const persistedReducer = persistReducer(persistConfig, rootReducer);
+
+// Create the Redux store
+export const store = configureStore({
+ reducer: persistedReducer,
+ middleware: (getDefaultMiddleware) =>
+ getDefaultMiddleware({
+ serializableCheck: false,
+ }), // This line already includes thunk middleware
+});
+
+// Export store state and persistor
+export const RootState = store.getState();
+export const persistor = persistStore(store);
diff --git a/src/Routes/Nav.js b/src/Routes/Nav.js
new file mode 100644
index 0000000..ca0cde8
--- /dev/null
+++ b/src/Routes/Nav.js
@@ -0,0 +1,51 @@
+import { FaHome, FaTable } from "react-icons/fa";
+import { FiHome } from "react-icons/fi";
+import { RiBloggerLine } from "react-icons/ri";
+import { LuVideo } from "react-icons/lu";
+import { HiOutlineNewspaper } from "react-icons/hi";
+import { IoMdPaper } from "react-icons/io";
+import { MdOutlineEvent } from "react-icons/md";
+import { CgCommunity } from "react-icons/cg";
+import { AiOutlineIdcard } from "react-icons/ai";
+
+export const nav = [
+ {
+ title: "Banners",
+ path: "/",
+ Icon: AiOutlineIdcard,
+ },
+ {
+ title: "CONTENT MANAGEMENT",
+ path: null,
+ },
+ {
+ title: "Blogs",
+ path: "/blogs-articles",
+ Icon: RiBloggerLine,
+ },
+ {
+ title: "Videos",
+ path: "/videos",
+ Icon: LuVideo,
+ },
+ {
+ title: "News",
+ path: "/news",
+ Icon: HiOutlineNewspaper,
+ },
+ {
+ title: "Events",
+ path: "/events",
+ Icon: MdOutlineEvent,
+ },
+ {
+ title: "Whitepaper",
+ path: "/whitepaper",
+ Icon: IoMdPaper,
+ },
+ {
+ title: "Community",
+ path: "/community",
+ Icon: CgCommunity,
+ },
+];
diff --git a/src/Routes/PrivateRoute.jsx b/src/Routes/PrivateRoute.jsx
new file mode 100644
index 0000000..bd2e149
--- /dev/null
+++ b/src/Routes/PrivateRoute.jsx
@@ -0,0 +1,18 @@
+import React, { useContext } from 'react';
+import { Navigate, Outlet, useNavigate } from 'react-router-dom';
+import GlobalStateContext from '../Contexts/GlobalStateContext';
+
+
+const PrivateRoute = ({ children }) => {
+ const navigate = useNavigate()
+const { isAuthenticate } = useContext(GlobalStateContext);
+const isAuthenticatedInCookie = Cookies.get("isAuthenticated");
+
+
+ if (!isAuthenticate && isAuthenticatedInCookie !== "true") {
+ return navigate('/login');
+ }
+ return children;
+};
+
+export default PrivateRoute;
\ No newline at end of file
diff --git a/src/Routes/Routes.js b/src/Routes/Routes.js
new file mode 100644
index 0000000..265038a
--- /dev/null
+++ b/src/Routes/Routes.js
@@ -0,0 +1,64 @@
+import BlogsAndArticles from "../Pages/BlogsAndArticles/BlogsAndArticles";
+import AddComunity from "../Pages/Community/AddComunity";
+import Community from "../Pages/Community/Community";
+import CommunityCardsTableView from "../Pages/Community/CommunityCardsTableView";
+import ComunityEditPage from "../Pages/Community/ComunityEditPage";
+import ComunityViewPage from "../Pages/Community/ComunityViewPage";
+import Events from "../Pages/Events";
+import Home from "../Pages/Banners/Banner";
+import Videos from "../Pages/Videos";
+import Whitepapers from "../Pages/Whitepapers";
+import BannerCommunity from "../Pages/Banners/BannerCommunity/BannerCommunity";
+import BannerComunityEditPage from "../Pages/Banners/BannerCommunity/BannerCommunityEdit";
+import BannerComunityViewPage from "../Pages/Banners/BannerCommunity/BannerCommunityView";
+import AddBlogsAndArticles from "../Pages/BlogsAndArticles/AddBlogsAndArticles";
+import News from "../Pages/News/News";
+import AddNews from "../Pages/News/AddNews";
+import EditNews from "../Pages/News/EditNews";
+import ViewNews from "../Pages/News/ViewNews";
+import ViewBlogsAndArticles from "../Pages/BlogsAndArticles/ViewBlogsAndArticles";
+import EditBlogsAndArticles from "../Pages/BlogsAndArticles/EditBlogsAndArticles";
+import BannerLearn from "../Pages/Banners/BannerLearn/BannerLearn";
+import AddBanner from "../Pages/Banners/BannerCommunity/AddBanner";
+import AddLearnBanner from "../Pages/Banners/BannerLearn/AddLearnBanner";
+import HelpAndSupport from "../Pages/News/HelpAndSupport";
+
+export const RouteLink = [
+ { path: "/", Component: Home },
+ { path: "/videos", Component: Videos },
+ { path: "/news", Component: News },
+ { path: "/events", Component: Events },
+ { path: "/whitepaper", Component: Whitepapers },
+ { path: "/community", Component: Community },
+ { path: "/help-and-support", Component: HelpAndSupport },
+
+ { path: "community/view/:id", Component: ComunityViewPage },
+ { path: "community/edit/:id", Component: ComunityEditPage },
+ { path: "community/add-comunity", Component: AddComunity },
+ { path: "community-table-view", Component: CommunityCardsTableView },
+
+
+
+ { path: "banner/banner-community", Component: BannerCommunity },
+ { path: "banner/banner-community/add-banner", Component: AddBanner },
+ { path: "banner/banner-community/edit/:id", Component: BannerComunityEditPage },
+ { path: "banner/banner-community/view/:id", Component: BannerComunityViewPage },
+
+
+
+ { path: "banner/learn/add-banner", Component: AddLearnBanner },
+ { path: "banner/learn", Component: BannerLearn },
+
+
+ // =============[ blog ]================
+ { path: "/blogs-articles", Component: BlogsAndArticles },
+ { path: "blogs-articles/add-blog", Component: AddBlogsAndArticles },
+ { path: "blogs-articles/view/:id", Component: ViewBlogsAndArticles },
+ { path: "blogs-articles/edit/:id", Component: EditBlogsAndArticles },
+
+
+ // =============[ news ]================
+ { path: "/news/view/:id", Component: ViewNews },
+ { path: "/news/add-news", Component: AddNews },
+ { path: "/news/edit/:id", Component: EditNews },
+];
diff --git a/src/Services/api.service.js b/src/Services/api.service.js
new file mode 100644
index 0000000..2b8aff5
--- /dev/null
+++ b/src/Services/api.service.js
@@ -0,0 +1,297 @@
+// Need to use the React-specific entry point to import createApi
+import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
+
+const baseUrl = "https://rubix.betadelivery.com/api";
+
+// Define a service using a base URL and expected endpoints
+export const rubixApi = createApi({
+ reducerPath: "api",
+ baseQuery: fetchBaseQuery({ baseUrl }),
+ tagTypes: [
+ "getCommunity",
+ "getCommunityById",
+ "getCommunityBanner",
+ "getCommunityBannerById",
+ ],
+ endpoints: (builder) => ({
+ // ===============[ Community cards endpoints ]=======================
+ getCommunity: builder.query({
+ query: ({ page, size }) => `/admin/community?page=${page}&size=${size}`,
+ providesTags: ["getCommunity"],
+ }),
+ getCommunityById: builder.query({
+ query: (id) => `/admin/community/${id}`,
+ providesTags: ["getCommunityById"],
+ }),
+ createCommunity: builder.mutation({
+ query: (newCommunity) => ({
+ url: "/admin/community",
+ method: "POST",
+ body: newCommunity,
+ }),
+ invalidatesTags: ["getCommunity"],
+ }),
+ deleteCommunity: builder.mutation({
+ query: (communityId) => ({
+ url: `/admin/community/${communityId}`,
+ method: "DELETE",
+ }),
+ invalidatesTags: ["getCommunity"],
+ }),
+ updateCommunityStatus: builder.mutation({
+ query: ({ id }) => ({
+ url: `/admin/community/change-visibility/${id}`,
+ method: "POST",
+ }),
+ invalidatesTags: ["getCommunity"],
+ }),
+ updateCommunity: builder.mutation({
+ query: ({ id, data }) => ({
+ url: `/admin/community/${id}`,
+ method: "PUT",
+ body: data, // Include the data you want to send in the request body
+ }),
+ invalidatesTags: ["getCommunity"],
+ }),
+
+ // ===============[ Community Banners endpoints ]=======================
+ getCommunityBanner: builder.query({
+ query: () => "/admin/main-community",
+ providesTags: ["getCommunityBanner"],
+ }),
+ getCommunityBannerById: builder.query({
+ query: (id) => `/admin/main-community/${id}`,
+ providesTags: ["getCommunityBannerById"],
+ }),
+ createCommunityBanner: builder.mutation({
+ query: (newBanner) => ({
+ url: "/admin/main-community",
+ method: "POST",
+ body: newBanner,
+ }),
+ invalidatesTags: ["getCommunityBanner"],
+ }),
+ deleteCommunityBanner: builder.mutation({
+ query: (communityBannerId) => ({
+ url: `/admin/main-community/${communityBannerId}`,
+ method: "DELETE",
+ }),
+ invalidatesTags: ["getCommunityBanner"],
+ }),
+ updateCommunityBanner: builder.mutation({
+ query: ({ id, data }) => ({
+ url: `/admin/main-community/${id}`,
+ method: "PUT",
+ body: data,
+ }),
+ invalidatesTags: ["getCommunityBanner"],
+ }),
+ updateCommunityBannerStatus: builder.mutation({
+ query: ({ id }) => ({
+ url: `/admin/main/change-visibility/${id}`,
+ method: "POST",
+ }),
+ invalidatesTags: ["getCommunityBanner"],
+ }),
+
+ // ===============[ Learn Banners endpoints ]=======================
+ getLearnBanner: builder.query({
+ query: () => "/admin/learn",
+ providesTags: ["getLearnBanner"],
+ }),
+ getLearnBannerById: builder.query({
+ query: (id) => `/admin/learn/${id}`,
+ providesTags: ["getLearnBannerById"],
+ }),
+ createLearnBanner: builder.mutation({
+ query: (newBanner) => ({
+ url: "/admin/learn",
+ method: "POST",
+ body: newBanner,
+ }),
+ invalidatesTags: ["getLearnBanner"],
+ }),
+ deleteLearnBanner: builder.mutation({
+ query: (id) => ({
+ url: `/admin/learn/${id}`,
+ method: "DELETE",
+ }),
+ invalidatesTags: ["getLearnBanner"],
+ }),
+ updateLearnBanner: builder.mutation({
+ query: ({ id, data }) => ({
+ url: `/admin/learn/${id}`,
+ method: "PUT",
+ body: data,
+ }),
+ invalidatesTags: ["getLearnBanner"],
+ }),
+ updateLearnBannerStatus: builder.mutation({
+ query: ({ id }) => ({
+ url: `/admin/learn/change-visibility/${id}`,
+ method: "POST",
+ }),
+ invalidatesTags: ["getLearnBanner"],
+ }),
+
+
+
+
+ // ===============[ Learn Banners endpoints ]=======================
+ getBuildBanner: builder.query({
+ query: () => "/admin/build",
+ providesTags: ["getBuildBanner"],
+ }),
+
+
+
+ // ===============[ news Banners endpoints ]=======================
+ getNewsBanner: builder.query({
+ query: () => "/admin/main-news",
+ providesTags: ["getNewsBanner"],
+ }),
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ // ================[ blog endpoints ]====================
+
+ getBlog: builder.query({
+ query: () => "/admin/blog",
+ providesTags: ["getBlog"],
+ }),
+ getBlogById: builder.query({
+ query: (id) => `/admin/blog/${id}`,
+ providesTags: ["getBlogById"],
+ }),
+ createBlog: builder.mutation({
+ query: (newBlog) => ({
+ url: "/admin/blog",
+ method: "POST",
+ body: newBlog,
+ }),
+ invalidatesTags: ["getBlog"],
+ }),
+ deleteBlog: builder.mutation({
+ query: (blogId) => ({
+ url: `/admin/blog/${blogId}`,
+ method: "DELETE",
+ }),
+ invalidatesTags: ["getBlog"],
+ }),
+ updateBlog: builder.mutation({
+ query: ({ id, data }) => ({
+ url: `/admin/blog/${id}`,
+ method: "PUT",
+ body: data, // Include the data you want to send in the request body
+ }),
+ invalidatesTags: ["getBlog"],
+ }),
+ updateBlogStatus: builder.mutation({
+ query: ({ id }) => ({
+ url: `/admin/blog/change-visibility/${id}`,
+ method: "POST",
+ }),
+ invalidatesTags: ["getBlog"],
+ }),
+
+ // ================[ news ]====================
+
+ getNews: builder.query({
+ query: ({ page, size }) => `/admin/news?page=${page}&size=${size}`,
+ providesTags: ["getNews"],
+ }),
+ getNewsById: builder.query({
+ query: (id) => `/admin/news/${id}`,
+ providesTags: ["getNews"],
+ }),
+ createNews: builder.mutation({
+ query: (news) => ({
+ url: "/admin/news",
+ method: "POST",
+ body: news,
+ }),
+ invalidatesTags: ["getNews"],
+ }),
+ updateNewsStatus: builder.mutation({
+ query: ({ id }) => ({
+ url: `/admin/news/change-visibility/${id}`,
+ method: "POST",
+ }),
+ invalidatesTags: ["getNews"],
+ }),
+
+
+ updateNews: builder.mutation({
+ query: ({ id, data }) => ({
+ url: `/admin/news/${id}`,
+ method: "PUT",
+ body: data, // Include the data you want to send in the request body
+ }),
+ invalidatesTags: ["getNews"],
+ }),
+
+
+
+ deleteNews: builder.mutation({
+ query: (blogId) => ({
+ url: `/admin/news/${blogId}`,
+ method: "DELETE",
+ }),
+ invalidatesTags: ["getNews"],
+ }),
+ }),
+});
+
+export const {
+ useGetCommunityQuery,
+ useGetCommunityByIdQuery,
+ useCreateCommunityMutation,
+ useDeleteCommunityMutation,
+ useUpdateCommunityStatusMutation,
+ useUpdateCommunityMutation,
+
+ useGetCommunityBannerQuery,
+ useCreateCommunityBannerMutation,
+ useDeleteCommunityBannerMutation,
+ useUpdateCommunityBannerMutation,
+ useGetCommunityBannerByIdQuery,
+
+ useCreateLearnBannerMutation,
+ useDeleteLearnBannerMutation,
+ useGetLearnBannerByIdQuery,
+ useGetLearnBannerQuery,
+ useUpdateLearnBannerMutation,
+ useUpdateLearnBannerStatusMutation,
+
+ useGetBuildBannerQuery,
+
+
+
+ useGetNewsBannerQuery,
+
+ useGetBlogQuery,
+ useGetBlogByIdQuery,
+ useCreateBlogMutation,
+ useDeleteBlogMutation,
+ useUpdateBlogMutation,
+ useUpdateCommunityBannerStatusMutation,
+ useUpdateBlogStatusMutation,
+
+ useGetNewsQuery,
+ useUpdateNewsStatusMutation,
+ useDeleteNewsMutation,
+ useCreateNewsMutation,
+ useGetNewsByIdQuery,
+ useUpdateNewsMutation,
+} = rubixApi;
diff --git a/src/Store/Store.js b/src/Store/Store.js
new file mode 100644
index 0000000..89758e4
--- /dev/null
+++ b/src/Store/Store.js
@@ -0,0 +1,17 @@
+// Store.js
+
+import { configureStore } from '@reduxjs/toolkit';
+import { setupListeners } from '@reduxjs/toolkit/query';
+import { rubixApi } from '../Services/api.service';
+
+export const store = configureStore({
+ reducer: {
+ [rubixApi.reducerPath]: rubixApi.reducer,
+ },
+ middleware: (getDefaultMiddleware) =>
+ getDefaultMiddleware().concat(rubixApi.middleware),
+});
+
+setupListeners(store.dispatch);
+
+export default store; // Make sure to export the store variable
diff --git a/src/Validations/Validations.js b/src/Validations/Validations.js
new file mode 100644
index 0000000..9ce3c67
--- /dev/null
+++ b/src/Validations/Validations.js
@@ -0,0 +1,93 @@
+import * as Yup from "yup";
+
+export const validationSchema = Yup.object().shape({
+ name: Yup.string().required("Owner name is required"),
+ password: Yup.string().required("Password is required"),
+});
+
+export const addCommunitySchema = Yup.object().shape({
+ member_name: Yup.string().required("Name is required"),
+ designation: Yup.string().required("Designation is required"),
+ description: Yup.string().required("Description is required"),
+ linkedin: Yup.string().required("Linked In link is required"),
+ profile_image: Yup.mixed().required("Display picture is required"),
+});
+
+export const schemaEdit = Yup.object().shape({
+ member_name: Yup.string().required("Name is required"),
+ designation: Yup.string().required("Designation is required"),
+ description: Yup.string().required("Description is required"),
+ linkedin: Yup.string()
+ .url("Invalid LinkedIn URL")
+ .required("LinkedIn is required"),
+});
+
+export const addCommunityBannerSchema = Yup.object().shape({
+ heading: Yup.string().required("Name is required"),
+ sub_heading: Yup.string().required("Designation is required"),
+ CTO_button_title: Yup.string().required("Description is required"),
+ CTO_button_link: Yup.string().required("Linked In link is required"),
+ banner_image: Yup.mixed().required("Display picture is required"),
+});
+
+export const editCommunityBannerSchema = Yup.object().shape({
+ Heading: Yup.string().required("Name is required"),
+ sub_heading: Yup.string().required("Designation is required"),
+ CTO_button_title: Yup.string().required("Description is required"),
+ CTO_button_link: Yup.string()
+ .url("Invalid LinkedIn URL")
+ .required("LinkedIn is required"),
+});
+
+export const addBlogSchema = Yup.object().shape({
+ author_name: Yup.string().required("Author is required"),
+ author_designation: Yup.string().required("Author designation is required"),
+ title: Yup.string().required("Title is required"),
+ meta_description: Yup.string().required("Description is required"),
+ // content: Yup.string().required("Content is required"),
+ summary: Yup.string().required("Summary is required"),
+});
+
+
+
+
+export const addNews = Yup.object().shape({
+ title: Yup.string().required("Author is required"),
+ release_date: Yup.date().required("Release date is required"),
+ meta_description: Yup.string().required("Description is required"),
+ content: Yup.string().required("Content is required"),
+ banner_image: Yup.mixed()
+ .test("fileSize", "Image must be at least 2MB", (value) => {
+ // If no file uploaded, return true (validation passed)
+ if (!value) return true;
+
+ // Calculate file size in bytes
+ const fileSizeInBytes = value.size;
+ // Convert bytes to megabytes
+ const fileSizeInMB = fileSizeInBytes / (1024 * 1024);
+
+ // Check if file size is at least 2MB
+ return fileSizeInMB >= 10;
+ }).required("Banner image is required")
+});
+
+
+export const editNews = Yup.object().shape({
+ title: Yup.string(),
+ release_date: Yup.date(),
+ meta_description: Yup.string(),
+ content: Yup.string(),
+ banner_image: Yup.mixed()
+ // .test("fileSize", "Image must be at least 2MB", (value) => {
+ // // If no file uploaded, return true (validation passed)
+ // if (!value) return true;
+
+ // // Calculate file size in bytes
+ // const fileSizeInBytes = value.size;
+ // // Convert bytes to megabytes
+ // const fileSizeInMB = fileSizeInBytes / (1024 * 1024);
+
+ // // Check if file size is at least 2MB
+ // return fileSizeInMB >= 10;
+ // })
+});
\ No newline at end of file
diff --git a/src/assets/Ellipse-37.png b/src/assets/Ellipse-37.png
new file mode 100644
index 0000000..cd7e58a
Binary files /dev/null and b/src/assets/Ellipse-37.png differ
diff --git a/src/assets/Ellipse-38.png b/src/assets/Ellipse-38.png
new file mode 100644
index 0000000..6af52ca
Binary files /dev/null and b/src/assets/Ellipse-38.png differ
diff --git a/src/assets/Ellipse-39.png b/src/assets/Ellipse-39.png
new file mode 100644
index 0000000..8b58fe6
Binary files /dev/null and b/src/assets/Ellipse-39.png differ
diff --git a/src/assets/EmptySearchList.svg b/src/assets/EmptySearchList.svg
new file mode 100644
index 0000000..0796885
--- /dev/null
+++ b/src/assets/EmptySearchList.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/Error.svg b/src/assets/Error.svg
new file mode 100644
index 0000000..f5b3a2c
--- /dev/null
+++ b/src/assets/Error.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/communityBanner.webp b/src/assets/communityBanner.webp
new file mode 100644
index 0000000..df4629d
Binary files /dev/null and b/src/assets/communityBanner.webp differ
diff --git a/src/assets/fallBackImage.png b/src/assets/fallBackImage.png
new file mode 100644
index 0000000..494e1de
Binary files /dev/null and b/src/assets/fallBackImage.png differ
diff --git a/src/assets/linkedin.png b/src/assets/linkedin.png
new file mode 100644
index 0000000..1e7032b
Binary files /dev/null and b/src/assets/linkedin.png differ
diff --git a/src/assets/logo-min.png b/src/assets/logo-min.png
new file mode 100644
index 0000000..8bd41dc
Binary files /dev/null and b/src/assets/logo-min.png differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000..1ac5022
Binary files /dev/null and b/src/assets/logo.png differ
diff --git a/src/assets/photo-1472313420546-a46e561861d8.avif b/src/assets/photo-1472313420546-a46e561861d8.avif
new file mode 100644
index 0000000..601721c
Binary files /dev/null and b/src/assets/photo-1472313420546-a46e561861d8.avif differ
diff --git a/src/assets/react.svg b/src/assets/react.svg
new file mode 100644
index 0000000..6c87de9
--- /dev/null
+++ b/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/ultp-fallback-img.webp b/src/assets/ultp-fallback-img.webp
new file mode 100644
index 0000000..4b4fce4
Binary files /dev/null and b/src/assets/ultp-fallback-img.webp differ
diff --git a/src/main.jsx b/src/main.jsx
new file mode 100644
index 0000000..c14a531
--- /dev/null
+++ b/src/main.jsx
@@ -0,0 +1,22 @@
+import React from "react";
+import ReactDOM from "react-dom/client";
+import App from "./App.jsx";
+// import { persistor, store } from "./Redux/Store.js";
+
+import { Provider } from "react-redux";
+import { PersistGate } from "redux-persist/integration/react";
+import { ChakraProvider } from "@chakra-ui/react";
+import GlobalStateProvider from "./Contexts/GlobalStateProvider";
+import { store } from "./Store/Store.js";
+
+ReactDOM.createRoot(document.getElementById("root")).render(
+
+
+ {/* */}
+
+
+
+ {/* */}
+
+
+);
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..861b04b
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react-swc'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [react()],
+})
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..55c6b48
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,3597 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@aashutoshrathi/word-wrap@^1.2.3":
+ version "1.2.6"
+ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
+ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
+
+"@babel/code-frame@^7.0.0":
+ version "7.24.2"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae"
+ integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==
+ dependencies:
+ "@babel/highlight" "^7.24.2"
+ picocolors "^1.0.0"
+
+"@babel/helper-module-imports@^7.16.7":
+ version "7.24.3"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128"
+ integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==
+ dependencies:
+ "@babel/types" "^7.24.0"
+
+"@babel/helper-string-parser@^7.23.4":
+ version "7.24.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e"
+ integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==
+
+"@babel/helper-validator-identifier@^7.22.20":
+ version "7.22.20"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0"
+ integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==
+
+"@babel/highlight@^7.24.2":
+ version "7.24.2"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26"
+ integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.20"
+ chalk "^2.4.2"
+ js-tokens "^4.0.0"
+ picocolors "^1.0.0"
+
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3":
+ version "7.24.4"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd"
+ integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
+"@babel/types@^7.24.0":
+ version "7.24.0"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf"
+ integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==
+ dependencies:
+ "@babel/helper-string-parser" "^7.23.4"
+ "@babel/helper-validator-identifier" "^7.22.20"
+ to-fast-properties "^2.0.0"
+
+"@chakra-ui/accordion@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-2.3.1.tgz#a326509e286a5c4e8478de9bc2b4b05017039e6b"
+ integrity sha512-FSXRm8iClFyU+gVaXisOSEw0/4Q+qZbFRiuhIAkVU6Boj0FxAMrlo9a8AV5TuF77rgaHytCdHk0Ng+cyUijrag==
+ dependencies:
+ "@chakra-ui/descendant" "3.1.0"
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-controllable-state" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/transition" "2.1.0"
+
+"@chakra-ui/alert@2.2.2":
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-2.2.2.tgz#aeba951d120c7c6e69d5f515a695ad6e4db43ffe"
+ integrity sha512-jHg4LYMRNOJH830ViLuicjb3F+v6iriE/2G5T+Sd0Hna04nukNJ1MxUmBPE+vI22me2dIflfelu2v9wdB6Pojw==
+ dependencies:
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/spinner" "2.1.0"
+
+"@chakra-ui/anatomy@2.2.2":
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/anatomy/-/anatomy-2.2.2.tgz#2d0e14cba2534d92077ca28abf8c183b6e27897b"
+ integrity sha512-MV6D4VLRIHr4PkW4zMyqfrNS1mPlCTiCXwvYGtDFQYr+xHFfonhAuf9WjsSc0nyp2m0OdkSLnzmVKkZFLo25Tg==
+
+"@chakra-ui/avatar@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-2.3.0.tgz#f018a2714d1e3ba5970bcf66558887925fdfccf4"
+ integrity sha512-8gKSyLfygnaotbJbDMHDiJoF38OHXUYVme4gGxZ1fLnQEdPVEaIWfH+NndIjOM0z8S+YEFnT9KyGMUtvPrBk3g==
+ dependencies:
+ "@chakra-ui/image" "2.1.0"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/breadcrumb@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-2.2.0.tgz#751bc48498f3c403f97b5d9aae528ebfd405ef48"
+ integrity sha512-4cWCG24flYBxjruRi4RJREWTGF74L/KzI2CognAW/d/zWR0CjiScuJhf37Am3LFbCySP6WSoyBOtTIoTA4yLEA==
+ dependencies:
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/breakpoint-utils@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/breakpoint-utils/-/breakpoint-utils-2.0.8.tgz#750d3712668b69f6e8917b45915cee0e08688eed"
+ integrity sha512-Pq32MlEX9fwb5j5xx8s18zJMARNHlQZH2VH1RZgfgRDpp7DcEgtRW5AInfN5CfqdHLO1dGxA7I3MqEuL5JnIsA==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/button@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-2.1.0.tgz#623ed32cc92fc8e52492923e9924791fc6f25447"
+ integrity sha512-95CplwlRKmmUXkdEp/21VkEWgnwcx2TOBG6NfYlsuLBDHSLlo5FKIiE2oSi4zXc4TLcopGcWPNcm/NDaSC5pvA==
+ dependencies:
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/spinner" "2.1.0"
+
+"@chakra-ui/card@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/card/-/card-2.2.0.tgz#b5e59dc51c171fced76ea76bf26088803b8bc184"
+ integrity sha512-xUB/k5MURj4CtPAhdSoXZidUbm8j3hci9vnc+eZJVDqhDOShNlD6QeniQNRPRys4lWAQLCbFcrwL29C8naDi6g==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/checkbox@2.3.2":
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-2.3.2.tgz#4ecb14a2f57b7470d1a58542ca4691c3b105bfa1"
+ integrity sha512-85g38JIXMEv6M+AcyIGLh7igNtfpAN6KGQFYxY9tBj0eWvWk4NKQxvqqyVta0bSAyIl1rixNIIezNpNWk2iO4g==
+ dependencies:
+ "@chakra-ui/form-control" "2.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+ "@chakra-ui/react-use-controllable-state" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+ "@chakra-ui/react-use-update-effect" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/visually-hidden" "2.2.0"
+ "@zag-js/focus-visible" "0.16.0"
+
+"@chakra-ui/clickable@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-2.1.0.tgz#800fa8d10cf45a41fc50a3df32c679a3ce1921c3"
+ integrity sha512-flRA/ClPUGPYabu+/GLREZVZr9j2uyyazCAUHAdrTUEdDYCr31SVGhgh7dgKdtq23bOvAQJpIJjw/0Bs0WvbXw==
+ dependencies:
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/close-button@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-2.1.1.tgz#995b245c56eb41465a71d8667840c238618a7b66"
+ integrity sha512-gnpENKOanKexswSVpVz7ojZEALl2x5qjLYNqSQGbxz+aP9sOXPfUS56ebyBrre7T7exuWGiFeRwnM0oVeGPaiw==
+ dependencies:
+ "@chakra-ui/icon" "3.2.0"
+
+"@chakra-ui/color-mode@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-2.2.0.tgz#828d47234c74ba2fb4c5dd63a63331aead20b9f6"
+ integrity sha512-niTEA8PALtMWRI9wJ4LL0CSBDo8NBfLNp4GD6/0hstcm3IlbBHTVKxN6HwSaoNYfphDQLxCjT4yG+0BJA5tFpg==
+ dependencies:
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+
+"@chakra-ui/control-box@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-2.1.0.tgz#0f4586797b3154c02463bc5c106782e70c88f04f"
+ integrity sha512-gVrRDyXFdMd8E7rulL0SKeoljkLQiPITFnsyMO8EFHNZ+AHt5wK4LIguYVEq88APqAGZGfHFWXr79RYrNiE3Mg==
+
+"@chakra-ui/counter@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-2.1.0.tgz#e413a2f1093a18f847bb7aa240117fde788a59e6"
+ integrity sha512-s6hZAEcWT5zzjNz2JIWUBzRubo9la/oof1W7EKZVVfPYHERnl5e16FmBC79Yfq8p09LQ+aqFKm/etYoJMMgghw==
+ dependencies:
+ "@chakra-ui/number-utils" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/css-reset@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-2.3.0.tgz#83e3160a9c2a12431cad0ee27ebfbf3aedc5c9c7"
+ integrity sha512-cQwwBy5O0jzvl0K7PLTLgp8ijqLPKyuEMiDXwYzl95seD3AoeuoCLyzZcJtVqaUZ573PiBdAbY/IlZcwDOItWg==
+
+"@chakra-ui/descendant@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-3.1.0.tgz#f3b80ed13ffc4bf1d615b3ed5541bd0905375cca"
+ integrity sha512-VxCIAir08g5w27klLyi7PVo8BxhW4tgU/lxQyujkmi4zx7hT9ZdrcQLAted/dAa+aSIZ14S1oV0Q9lGjsAdxUQ==
+ dependencies:
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+
+"@chakra-ui/dom-utils@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/dom-utils/-/dom-utils-2.1.0.tgz#d15df89e458ef19756db04c7cfd084eb552454f0"
+ integrity sha512-ZmF2qRa1QZ0CMLU8M1zCfmw29DmPNtfjR9iTo74U5FPr3i1aoAh7fbJ4qAlZ197Xw9eAW28tvzQuoVWeL5C7fQ==
+
+"@chakra-ui/editable@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-3.1.0.tgz#065783c2e3389c3bb9ab0582cb50d38e1dc00fa1"
+ integrity sha512-j2JLrUL9wgg4YA6jLlbU88370eCRyor7DZQD9lzpY95tSOXpTljeg3uF9eOmDnCs6fxp3zDWIfkgMm/ExhcGTg==
+ dependencies:
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+ "@chakra-ui/react-use-controllable-state" "2.1.0"
+ "@chakra-ui/react-use-focus-on-pointer-down" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+ "@chakra-ui/react-use-update-effect" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/event-utils@2.0.8":
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/event-utils/-/event-utils-2.0.8.tgz#e6439ba200825a2f15d8f1973d267d1c00a6d1b4"
+ integrity sha512-IGM/yGUHS+8TOQrZGpAKOJl/xGBrmRYJrmbHfUE7zrG3PpQyXvbLDP1M+RggkCFVgHlJi2wpYIf0QtQlU0XZfw==
+
+"@chakra-ui/focus-lock@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-2.1.0.tgz#580e5450fe85356987b9a246abaff8333369c667"
+ integrity sha512-EmGx4PhWGjm4dpjRqM4Aa+rCWBxP+Rq8Uc/nAVnD4YVqkEhBkrPTpui2lnjsuxqNaZ24fIAZ10cF1hlpemte/w==
+ dependencies:
+ "@chakra-ui/dom-utils" "2.1.0"
+ react-focus-lock "^2.9.4"
+
+"@chakra-ui/form-control@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-2.2.0.tgz#69c771d6406ddac8ab357ae88446cc11827656a4"
+ integrity sha512-wehLC1t4fafCVJ2RvJQT2jyqsAwX7KymmiGqBu7nQoQz8ApTkGABWpo/QwDh3F/dBLrouHDoOvGmYTqft3Mirw==
+ dependencies:
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/hooks@2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-2.2.1.tgz#b86ce5eeaaab877ddcb11a50842d1227306ace28"
+ integrity sha512-RQbTnzl6b1tBjbDPf9zGRo9rf/pQMholsOudTxjy4i9GfTfz6kgp5ValGjQm2z7ng6Z31N1cnjZ1AlSzQ//ZfQ==
+ dependencies:
+ "@chakra-ui/react-utils" "2.0.12"
+ "@chakra-ui/utils" "2.0.15"
+ compute-scroll-into-view "3.0.3"
+ copy-to-clipboard "3.3.3"
+
+"@chakra-ui/icon@3.2.0":
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-3.2.0.tgz#92b9454aa0d561b4994bcd6a1b3bb1fdd5c67bef"
+ integrity sha512-xxjGLvlX2Ys4H0iHrI16t74rG9EBcpFvJ3Y3B7KMQTrnW34Kf7Da/UC8J67Gtx85mTHW020ml85SVPKORWNNKQ==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/icons@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/icons/-/icons-2.1.1.tgz#58ff0f9e703f2f4f89debd600ce4e438f43f9c9a"
+ integrity sha512-3p30hdo4LlRZTT5CwoAJq3G9fHI0wDc0pBaMHj4SUn0yomO+RcDRlzhdXqdr5cVnzax44sqXJVnf3oQG0eI+4g==
+ dependencies:
+ "@chakra-ui/icon" "3.2.0"
+
+"@chakra-ui/image@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-2.1.0.tgz#6c205f1ca148e3bf58345b0b5d4eb3d959eb9f87"
+ integrity sha512-bskumBYKLiLMySIWDGcz0+D9Th0jPvmX6xnRMs4o92tT3Od/bW26lahmV2a2Op2ItXeCmRMY+XxJH5Gy1i46VA==
+ dependencies:
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/input@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-2.1.2.tgz#0cad49ec372f8f21f2f4f1db365f34b9a708ff9d"
+ integrity sha512-GiBbb3EqAA8Ph43yGa6Mc+kUPjh4Spmxp1Pkelr8qtudpc3p2PJOOebLpd90mcqw8UePPa+l6YhhPtp6o0irhw==
+ dependencies:
+ "@chakra-ui/form-control" "2.2.0"
+ "@chakra-ui/object-utils" "2.1.0"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/layout@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-2.3.1.tgz#0601c5eb91555d24a7015a7c9d4e01fed2698557"
+ integrity sha512-nXuZ6WRbq0WdgnRgLw+QuxWAHuhDtVX8ElWqcTK+cSMFg/52eVP47czYBE5F35YhnoW2XBwfNoNgZ7+e8Z01Rg==
+ dependencies:
+ "@chakra-ui/breakpoint-utils" "2.0.8"
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/object-utils" "2.1.0"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/lazy-utils@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/lazy-utils/-/lazy-utils-2.0.5.tgz#363c3fa1d421362790b416ffa595acb835e1ae5b"
+ integrity sha512-UULqw7FBvcckQk2n3iPO56TMJvDsNv0FKZI6PlUNJVaGsPbsYxK/8IQ60vZgaTVPtVcjY6BE+y6zg8u9HOqpyg==
+
+"@chakra-ui/live-region@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-2.1.0.tgz#02b4b1d997075f19a7a9a87187e08c72e82ef0dd"
+ integrity sha512-ZOxFXwtaLIsXjqnszYYrVuswBhnIHHP+XIgK1vC6DePKtyK590Wg+0J0slDwThUAd4MSSIUa/nNX84x1GMphWw==
+
+"@chakra-ui/media-query@3.3.0":
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-3.3.0.tgz#40f9151dedb6a7af9df3be0474b59a799c92c619"
+ integrity sha512-IsTGgFLoICVoPRp9ykOgqmdMotJG0CnPsKvGQeSFOB/dZfIujdVb14TYxDU4+MURXry1MhJ7LzZhv+Ml7cr8/g==
+ dependencies:
+ "@chakra-ui/breakpoint-utils" "2.0.8"
+ "@chakra-ui/react-env" "3.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/menu@2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-2.2.1.tgz#7d9810d435f6b40fa72ed867a33b88a1ef75073f"
+ integrity sha512-lJS7XEObzJxsOwWQh7yfG4H8FzFPRP5hVPN/CL+JzytEINCSBvsCDHrYPQGp7jzpCi8vnTqQQGQe0f8dwnXd2g==
+ dependencies:
+ "@chakra-ui/clickable" "2.1.0"
+ "@chakra-ui/descendant" "3.1.0"
+ "@chakra-ui/lazy-utils" "2.0.5"
+ "@chakra-ui/popper" "3.1.0"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-animation-state" "2.1.0"
+ "@chakra-ui/react-use-controllable-state" "2.1.0"
+ "@chakra-ui/react-use-disclosure" "2.1.0"
+ "@chakra-ui/react-use-focus-effect" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/react-use-outside-click" "2.2.0"
+ "@chakra-ui/react-use-update-effect" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/transition" "2.1.0"
+
+"@chakra-ui/modal@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-2.3.1.tgz#524dc32b6b4f545b54ae531dbf6c74e1052ee794"
+ integrity sha512-TQv1ZaiJMZN+rR9DK0snx/OPwmtaGH1HbZtlYt4W4s6CzyK541fxLRTjIXfEzIGpvNW+b6VFuFjbcR78p4DEoQ==
+ dependencies:
+ "@chakra-ui/close-button" "2.1.1"
+ "@chakra-ui/focus-lock" "2.1.0"
+ "@chakra-ui/portal" "2.1.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/transition" "2.1.0"
+ aria-hidden "^1.2.3"
+ react-remove-scroll "^2.5.6"
+
+"@chakra-ui/number-input@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-2.1.2.tgz#dda9095fba6a4b89212332db02831b94120da163"
+ integrity sha512-pfOdX02sqUN0qC2ysuvgVDiws7xZ20XDIlcNhva55Jgm095xjm8eVdIBfNm3SFbSUNxyXvLTW/YQanX74tKmuA==
+ dependencies:
+ "@chakra-ui/counter" "2.1.0"
+ "@chakra-ui/form-control" "2.2.0"
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+ "@chakra-ui/react-use-event-listener" "2.1.0"
+ "@chakra-ui/react-use-interval" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+ "@chakra-ui/react-use-update-effect" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/number-utils@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/number-utils/-/number-utils-2.0.7.tgz#aaee979ca2fb1923a0373a91619473811315db11"
+ integrity sha512-yOGxBjXNvLTBvQyhMDqGU0Oj26s91mbAlqKHiuw737AXHt0aPllOthVUqQMeaYLwLCjGMg0jtI7JReRzyi94Dg==
+
+"@chakra-ui/object-utils@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/object-utils/-/object-utils-2.1.0.tgz#a4ecf9cea92f1de09f5531f53ffdc41e0b19b6c3"
+ integrity sha512-tgIZOgLHaoti5PYGPTwK3t/cqtcycW0owaiOXoZOcpwwX/vlVb+H1jFsQyWiiwQVPt9RkoSLtxzXamx+aHH+bQ==
+
+"@chakra-ui/pin-input@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-2.1.0.tgz#61e6bbf909ec510634307b2861c4f1891a9f8d81"
+ integrity sha512-x4vBqLStDxJFMt+jdAHHS8jbh294O53CPQJoL4g228P513rHylV/uPscYUHrVJXRxsHfRztQO9k45jjTYaPRMw==
+ dependencies:
+ "@chakra-ui/descendant" "3.1.0"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-controllable-state" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/popover@2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-2.2.1.tgz#89cfd29817abcd204da570073c0f2b4d8072c3a3"
+ integrity sha512-K+2ai2dD0ljvJnlrzesCDT9mNzLifE3noGKZ3QwLqd/K34Ym1W/0aL1ERSynrcG78NKoXS54SdEzkhCZ4Gn/Zg==
+ dependencies:
+ "@chakra-ui/close-button" "2.1.1"
+ "@chakra-ui/lazy-utils" "2.0.5"
+ "@chakra-ui/popper" "3.1.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-animation-state" "2.1.0"
+ "@chakra-ui/react-use-disclosure" "2.1.0"
+ "@chakra-ui/react-use-focus-effect" "2.1.0"
+ "@chakra-ui/react-use-focus-on-pointer-down" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/popper@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-3.1.0.tgz#92a9180c6894763af3b22a6003f9a9d958fe2659"
+ integrity sha512-ciDdpdYbeFG7og6/6J8lkTFxsSvwTdMLFkpVylAF6VNC22jssiWfquj2eyD4rJnzkRFPvIWJq8hvbfhsm+AjSg==
+ dependencies:
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@popperjs/core" "^2.9.3"
+
+"@chakra-ui/portal@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-2.1.0.tgz#9e7f57424d7041738b6563cac80134561080bd27"
+ integrity sha512-9q9KWf6SArEcIq1gGofNcFPSWEyl+MfJjEUg/un1SMlQjaROOh3zYr+6JAwvcORiX7tyHosnmWC3d3wI2aPSQg==
+ dependencies:
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+
+"@chakra-ui/progress@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-2.2.0.tgz#67444ea9779631d7c8395b2c9c78e5634f994999"
+ integrity sha512-qUXuKbuhN60EzDD9mHR7B67D7p/ZqNS2Aze4Pbl1qGGZfulPW0PY8Rof32qDtttDQBkzQIzFGE8d9QpAemToIQ==
+ dependencies:
+ "@chakra-ui/react-context" "2.1.0"
+
+"@chakra-ui/provider@2.4.2":
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-2.4.2.tgz#92cb10b6a7df0720e3fa62716dc7cd872ae3ea3d"
+ integrity sha512-w0Tef5ZCJK1mlJorcSjItCSbyvVuqpvyWdxZiVQmE6fvSJR83wZof42ux0+sfWD+I7rHSfj+f9nzhNaEWClysw==
+ dependencies:
+ "@chakra-ui/css-reset" "2.3.0"
+ "@chakra-ui/portal" "2.1.0"
+ "@chakra-ui/react-env" "3.1.0"
+ "@chakra-ui/system" "2.6.2"
+ "@chakra-ui/utils" "2.0.15"
+
+"@chakra-ui/radio@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-2.1.2.tgz#66db19c61a2e628aaf5e727027f7c3b4006ea898"
+ integrity sha512-n10M46wJrMGbonaghvSRnZ9ToTv/q76Szz284gv4QUWvyljQACcGrXIONUnQ3BIwbOfkRqSk7Xl/JgZtVfll+w==
+ dependencies:
+ "@chakra-ui/form-control" "2.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@zag-js/focus-visible" "0.16.0"
+
+"@chakra-ui/react-children-utils@2.0.6":
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-children-utils/-/react-children-utils-2.0.6.tgz#6c480c6a60678fcb75cb7d57107c7a79e5179b92"
+ integrity sha512-QVR2RC7QsOsbWwEnq9YduhpqSFnZGvjjGREV8ygKi8ADhXh93C8azLECCUVgRJF2Wc+So1fgxmjLcbZfY2VmBA==
+
+"@chakra-ui/react-context@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-context/-/react-context-2.1.0.tgz#4858be1d5ff1c8ac0a0ec088d93a3b7f1cbbff99"
+ integrity sha512-iahyStvzQ4AOwKwdPReLGfDesGG+vWJfEsn0X/NoGph/SkN+HXtv2sCfYFFR9k7bb+Kvc6YfpLlSuLvKMHi2+w==
+
+"@chakra-ui/react-env@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-3.1.0.tgz#7d3c1c05a501bb369524d9f3d38c9325eb16ab50"
+ integrity sha512-Vr96GV2LNBth3+IKzr/rq1IcnkXv+MLmwjQH6C8BRtn3sNskgDFD5vLkVXcEhagzZMCh8FR3V/bzZPojBOyNhw==
+ dependencies:
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+
+"@chakra-ui/react-types@2.0.7":
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-types/-/react-types-2.0.7.tgz#799c166a44882b23059c8f510eac9bd5d0869ac4"
+ integrity sha512-12zv2qIZ8EHwiytggtGvo4iLT0APris7T0qaAWqzpUGS0cdUtR8W+V1BJ5Ocq+7tA6dzQ/7+w5hmXih61TuhWQ==
+
+"@chakra-ui/react-use-animation-state@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-animation-state/-/react-use-animation-state-2.1.0.tgz#eab661fbafd96804fe867b0df0c27e78feefe6e2"
+ integrity sha512-CFZkQU3gmDBwhqy0vC1ryf90BVHxVN8cTLpSyCpdmExUEtSEInSCGMydj2fvn7QXsz/za8JNdO2xxgJwxpLMtg==
+ dependencies:
+ "@chakra-ui/dom-utils" "2.1.0"
+ "@chakra-ui/react-use-event-listener" "2.1.0"
+
+"@chakra-ui/react-use-callback-ref@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-callback-ref/-/react-use-callback-ref-2.1.0.tgz#a508085f4d9e7d84d4ceffdf5f41745c9ac451d7"
+ integrity sha512-efnJrBtGDa4YaxDzDE90EnKD3Vkh5a1t3w7PhnRQmsphLy3g2UieasoKTlT2Hn118TwDjIv5ZjHJW6HbzXA9wQ==
+
+"@chakra-ui/react-use-controllable-state@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-controllable-state/-/react-use-controllable-state-2.1.0.tgz#8fb6fa2f45d0c04173582ae8297e604ffdb9c7d9"
+ integrity sha512-QR/8fKNokxZUs4PfxjXuwl0fj/d71WPrmLJvEpCTkHjnzu7LnYvzoe2wB867IdooQJL0G1zBxl0Dq+6W1P3jpg==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+
+"@chakra-ui/react-use-disclosure@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-disclosure/-/react-use-disclosure-2.1.0.tgz#90093eaf45db1bea7a6851dd0ce5cdb3eb66f90a"
+ integrity sha512-Ax4pmxA9LBGMyEZJhhUZobg9C0t3qFE4jVF1tGBsrLDcdBeLR9fwOogIPY9Hf0/wqSlAryAimICbr5hkpa5GSw==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+
+"@chakra-ui/react-use-event-listener@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-event-listener/-/react-use-event-listener-2.1.0.tgz#afea2645bd9b38f754fc2b8eb858f9bb22385ded"
+ integrity sha512-U5greryDLS8ISP69DKDsYcsXRtAdnTQT+jjIlRYZ49K/XhUR/AqVZCK5BkR1spTDmO9H8SPhgeNKI70ODuDU/Q==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+
+"@chakra-ui/react-use-focus-effect@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-effect/-/react-use-focus-effect-2.1.0.tgz#963fb790370dfadd51d12666ff2da60706f53a2a"
+ integrity sha512-xzVboNy7J64xveLcxTIJ3jv+lUJKDwRM7Szwn9tNzUIPD94O3qwjV7DDCUzN2490nSYDF4OBMt/wuDBtaR3kUQ==
+ dependencies:
+ "@chakra-ui/dom-utils" "2.1.0"
+ "@chakra-ui/react-use-event-listener" "2.1.0"
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+ "@chakra-ui/react-use-update-effect" "2.1.0"
+
+"@chakra-ui/react-use-focus-on-pointer-down@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-focus-on-pointer-down/-/react-use-focus-on-pointer-down-2.1.0.tgz#2fbcf6bc7d06d97606747e231a908d5c387ca0cc"
+ integrity sha512-2jzrUZ+aiCG/cfanrolsnSMDykCAbv9EK/4iUyZno6BYb3vziucmvgKuoXbMPAzWNtwUwtuMhkby8rc61Ue+Lg==
+ dependencies:
+ "@chakra-ui/react-use-event-listener" "2.1.0"
+
+"@chakra-ui/react-use-interval@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-interval/-/react-use-interval-2.1.0.tgz#2602c097b3ab74b6644812e4f5efaad621218d98"
+ integrity sha512-8iWj+I/+A0J08pgEXP1J1flcvhLBHkk0ln7ZvGIyXiEyM6XagOTJpwNhiu+Bmk59t3HoV/VyvyJTa+44sEApuw==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+
+"@chakra-ui/react-use-latest-ref@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-latest-ref/-/react-use-latest-ref-2.1.0.tgz#d1e926130102566ece1d39f8a48ed125e0c8441a"
+ integrity sha512-m0kxuIYqoYB0va9Z2aW4xP/5b7BzlDeWwyXCH6QpT2PpW3/281L3hLCm1G0eOUcdVlayqrQqOeD6Mglq+5/xoQ==
+
+"@chakra-ui/react-use-merge-refs@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-merge-refs/-/react-use-merge-refs-2.1.0.tgz#c0c233527abdbea9a1348269c192012205762314"
+ integrity sha512-lERa6AWF1cjEtWSGjxWTaSMvneccnAVH4V4ozh8SYiN9fSPZLlSG3kNxfNzdFvMEhM7dnP60vynF7WjGdTgQbQ==
+
+"@chakra-ui/react-use-outside-click@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-outside-click/-/react-use-outside-click-2.2.0.tgz#5570b772a255f6f02b69e967127397c1b5fa3d3c"
+ integrity sha512-PNX+s/JEaMneijbgAM4iFL+f3m1ga9+6QK0E5Yh4s8KZJQ/bLwZzdhMz8J/+mL+XEXQ5J0N8ivZN28B82N1kNw==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+
+"@chakra-ui/react-use-pan-event@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-pan-event/-/react-use-pan-event-2.1.0.tgz#51c21bc3c0e9e73d1faef5ea4f7e3c3d071a2758"
+ integrity sha512-xmL2qOHiXqfcj0q7ZK5s9UjTh4Gz0/gL9jcWPA6GVf+A0Od5imEDa/Vz+533yQKWiNSm1QGrIj0eJAokc7O4fg==
+ dependencies:
+ "@chakra-ui/event-utils" "2.0.8"
+ "@chakra-ui/react-use-latest-ref" "2.1.0"
+ framesync "6.1.2"
+
+"@chakra-ui/react-use-previous@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-previous/-/react-use-previous-2.1.0.tgz#f6046e6f7398b1e8d7e66ff7ebb8d61c92a2d3d0"
+ integrity sha512-pjxGwue1hX8AFcmjZ2XfrQtIJgqbTF3Qs1Dy3d1krC77dEsiCUbQ9GzOBfDc8pfd60DrB5N2tg5JyHbypqh0Sg==
+
+"@chakra-ui/react-use-safe-layout-effect@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-safe-layout-effect/-/react-use-safe-layout-effect-2.1.0.tgz#3a95f0ba6fd5d2d0aa14919160f2c825f13e686f"
+ integrity sha512-Knbrrx/bcPwVS1TorFdzrK/zWA8yuU/eaXDkNj24IrKoRlQrSBFarcgAEzlCHtzuhufP3OULPkELTzz91b0tCw==
+
+"@chakra-ui/react-use-size@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-size/-/react-use-size-2.1.0.tgz#fcf3070eaade8b4a84af8ce5341c4d5ca0a42bec"
+ integrity sha512-tbLqrQhbnqOjzTaMlYytp7wY8BW1JpL78iG7Ru1DlV4EWGiAmXFGvtnEt9HftU0NJ0aJyjgymkxfVGI55/1Z4A==
+ dependencies:
+ "@zag-js/element-size" "0.10.5"
+
+"@chakra-ui/react-use-timeout@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-timeout/-/react-use-timeout-2.1.0.tgz#24415f54267d7241a3c1d36a5cae4d472834cef7"
+ integrity sha512-cFN0sobKMM9hXUhyCofx3/Mjlzah6ADaEl/AXl5Y+GawB5rgedgAcu2ErAgarEkwvsKdP6c68CKjQ9dmTQlJxQ==
+ dependencies:
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+
+"@chakra-ui/react-use-update-effect@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-use-update-effect/-/react-use-update-effect-2.1.0.tgz#5c57cd1f50c2a6a8119e0f57f69510723d69884b"
+ integrity sha512-ND4Q23tETaR2Qd3zwCKYOOS1dfssojPLJMLvUtUbW5M9uW1ejYWgGUobeAiOVfSplownG8QYMmHTP86p/v0lbA==
+
+"@chakra-ui/react-utils@2.0.12":
+ version "2.0.12"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-2.0.12.tgz#d6b773b9a5b2e51dce61f51ac8a0e9a0f534f479"
+ integrity sha512-GbSfVb283+YA3kA8w8xWmzbjNWk14uhNpntnipHCftBibl0lxtQ9YqMFQLwuFOO0U2gYVocszqqDWX+XNKq9hw==
+ dependencies:
+ "@chakra-ui/utils" "2.0.15"
+
+"@chakra-ui/react@^2.8.2":
+ version "2.8.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-2.8.2.tgz#94d692fb35e4447748c5bfd73d8d38a746193c7d"
+ integrity sha512-Hn0moyxxyCDKuR9ywYpqgX8dvjqwu9ArwpIb9wHNYjnODETjLwazgNIliCVBRcJvysGRiV51U2/JtJVrpeCjUQ==
+ dependencies:
+ "@chakra-ui/accordion" "2.3.1"
+ "@chakra-ui/alert" "2.2.2"
+ "@chakra-ui/avatar" "2.3.0"
+ "@chakra-ui/breadcrumb" "2.2.0"
+ "@chakra-ui/button" "2.1.0"
+ "@chakra-ui/card" "2.2.0"
+ "@chakra-ui/checkbox" "2.3.2"
+ "@chakra-ui/close-button" "2.1.1"
+ "@chakra-ui/control-box" "2.1.0"
+ "@chakra-ui/counter" "2.1.0"
+ "@chakra-ui/css-reset" "2.3.0"
+ "@chakra-ui/editable" "3.1.0"
+ "@chakra-ui/focus-lock" "2.1.0"
+ "@chakra-ui/form-control" "2.2.0"
+ "@chakra-ui/hooks" "2.2.1"
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/image" "2.1.0"
+ "@chakra-ui/input" "2.1.2"
+ "@chakra-ui/layout" "2.3.1"
+ "@chakra-ui/live-region" "2.1.0"
+ "@chakra-ui/media-query" "3.3.0"
+ "@chakra-ui/menu" "2.2.1"
+ "@chakra-ui/modal" "2.3.1"
+ "@chakra-ui/number-input" "2.1.2"
+ "@chakra-ui/pin-input" "2.1.0"
+ "@chakra-ui/popover" "2.2.1"
+ "@chakra-ui/popper" "3.1.0"
+ "@chakra-ui/portal" "2.1.0"
+ "@chakra-ui/progress" "2.2.0"
+ "@chakra-ui/provider" "2.4.2"
+ "@chakra-ui/radio" "2.1.2"
+ "@chakra-ui/react-env" "3.1.0"
+ "@chakra-ui/select" "2.1.2"
+ "@chakra-ui/skeleton" "2.1.0"
+ "@chakra-ui/skip-nav" "2.1.0"
+ "@chakra-ui/slider" "2.1.0"
+ "@chakra-ui/spinner" "2.1.0"
+ "@chakra-ui/stat" "2.1.1"
+ "@chakra-ui/stepper" "2.3.1"
+ "@chakra-ui/styled-system" "2.9.2"
+ "@chakra-ui/switch" "2.1.2"
+ "@chakra-ui/system" "2.6.2"
+ "@chakra-ui/table" "2.1.0"
+ "@chakra-ui/tabs" "3.0.0"
+ "@chakra-ui/tag" "3.1.1"
+ "@chakra-ui/textarea" "2.1.2"
+ "@chakra-ui/theme" "3.3.1"
+ "@chakra-ui/theme-utils" "2.0.21"
+ "@chakra-ui/toast" "7.0.2"
+ "@chakra-ui/tooltip" "2.3.1"
+ "@chakra-ui/transition" "2.1.0"
+ "@chakra-ui/utils" "2.0.15"
+ "@chakra-ui/visually-hidden" "2.2.0"
+
+"@chakra-ui/select@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-2.1.2.tgz#f57d6cec0559373c32094fd4a5abd32855829264"
+ integrity sha512-ZwCb7LqKCVLJhru3DXvKXpZ7Pbu1TDZ7N0PdQ0Zj1oyVLJyrpef1u9HR5u0amOpqcH++Ugt0f5JSmirjNlctjA==
+ dependencies:
+ "@chakra-ui/form-control" "2.2.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/shared-utils@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/shared-utils/-/shared-utils-2.0.5.tgz#cb2b49705e113853647f1822142619570feba081"
+ integrity sha512-4/Wur0FqDov7Y0nCXl7HbHzCg4aq86h+SXdoUeuCMD3dSj7dpsVnStLYhng1vxvlbUnLpdF4oz5Myt3i/a7N3Q==
+
+"@chakra-ui/skeleton@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-2.1.0.tgz#e3b25dd3afa330029d6d63be0f7cb8d44ad25531"
+ integrity sha512-JNRuMPpdZGd6zFVKjVQ0iusu3tXAdI29n4ZENYwAJEMf/fN0l12sVeirOxkJ7oEL0yOx2AgEYFSKdbcAgfUsAQ==
+ dependencies:
+ "@chakra-ui/media-query" "3.3.0"
+ "@chakra-ui/react-use-previous" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/skip-nav@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/skip-nav/-/skip-nav-2.1.0.tgz#cac27eecc6eded1e83c8f0cf7445d727739cb325"
+ integrity sha512-Hk+FG+vadBSH0/7hwp9LJnLjkO0RPGnx7gBJWI4/SpoJf3e4tZlWYtwGj0toYY4aGKl93jVghuwGbDBEMoHDug==
+
+"@chakra-ui/slider@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-2.1.0.tgz#1caeed18761ba2a390777418cc9389ba25e39bce"
+ integrity sha512-lUOBcLMCnFZiA/s2NONXhELJh6sY5WtbRykPtclGfynqqOo47lwWJx+VP7xaeuhDOPcWSSecWc9Y1BfPOCz9cQ==
+ dependencies:
+ "@chakra-ui/number-utils" "2.0.7"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-callback-ref" "2.1.0"
+ "@chakra-ui/react-use-controllable-state" "2.1.0"
+ "@chakra-ui/react-use-latest-ref" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/react-use-pan-event" "2.1.0"
+ "@chakra-ui/react-use-size" "2.1.0"
+ "@chakra-ui/react-use-update-effect" "2.1.0"
+
+"@chakra-ui/spinner@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-2.1.0.tgz#aa24a3d692c6ac90714e0f0f82c76c12c78c8e60"
+ integrity sha512-hczbnoXt+MMv/d3gE+hjQhmkzLiKuoTo42YhUG7Bs9OSv2lg1fZHW1fGNRFP3wTi6OIbD044U1P9HK+AOgFH3g==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/stat@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-2.1.1.tgz#a204ba915795345996a16c79794d84826d7dcc2d"
+ integrity sha512-LDn0d/LXQNbAn2KaR3F1zivsZCewY4Jsy1qShmfBMKwn6rI8yVlbvu6SiA3OpHS0FhxbsZxQI6HefEoIgtqY6Q==
+ dependencies:
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/stepper@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/stepper/-/stepper-2.3.1.tgz#a0a0b73e147f202ab4e51cae55dad45489cc89fd"
+ integrity sha512-ky77lZbW60zYkSXhYz7kbItUpAQfEdycT0Q4bkHLxfqbuiGMf8OmgZOQkOB9uM4v0zPwy2HXhe0vq4Dd0xa55Q==
+ dependencies:
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/styled-system@2.9.2":
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-2.9.2.tgz#898ab63da560a4a014f7b05fa7767e8c76da6d2f"
+ integrity sha512-To/Z92oHpIE+4nk11uVMWqo2GGRS86coeMmjxtpnErmWRdLcp1WVCVRAvn+ZwpLiNR+reWFr2FFqJRsREuZdAg==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+ csstype "^3.1.2"
+ lodash.mergewith "4.6.2"
+
+"@chakra-ui/switch@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-2.1.2.tgz#f7c6878d8126bfac8fa3b939079f1017c21b7479"
+ integrity sha512-pgmi/CC+E1v31FcnQhsSGjJnOE2OcND4cKPyTE+0F+bmGm48Q/b5UmKD9Y+CmZsrt/7V3h8KNczowupfuBfIHA==
+ dependencies:
+ "@chakra-ui/checkbox" "2.3.2"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/system@2.6.2":
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-2.6.2.tgz#528ec955bd6a7f74da46470ee8225b1e2c80a78b"
+ integrity sha512-EGtpoEjLrUu4W1fHD+a62XR+hzC5YfsWm+6lO0Kybcga3yYEij9beegO0jZgug27V+Rf7vns95VPVP6mFd/DEQ==
+ dependencies:
+ "@chakra-ui/color-mode" "2.2.0"
+ "@chakra-ui/object-utils" "2.1.0"
+ "@chakra-ui/react-utils" "2.0.12"
+ "@chakra-ui/styled-system" "2.9.2"
+ "@chakra-ui/theme-utils" "2.0.21"
+ "@chakra-ui/utils" "2.0.15"
+ react-fast-compare "3.2.2"
+
+"@chakra-ui/table@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-2.1.0.tgz#20dce14c5e4d70dc7c6c0e87cce9b05907ff8c50"
+ integrity sha512-o5OrjoHCh5uCLdiUb0Oc0vq9rIAeHSIRScc2ExTC9Qg/uVZl2ygLrjToCaKfaaKl1oQexIeAcZDKvPG8tVkHyQ==
+ dependencies:
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/tabs@3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-3.0.0.tgz#854c06880af26158d7c72881c4b5e0453f6c485d"
+ integrity sha512-6Mlclp8L9lqXmsGWF5q5gmemZXOiOYuh0SGT/7PgJVNPz3LXREXlXg2an4MBUD8W5oTkduCX+3KTMCwRrVrDYw==
+ dependencies:
+ "@chakra-ui/clickable" "2.1.0"
+ "@chakra-ui/descendant" "3.1.0"
+ "@chakra-ui/lazy-utils" "2.0.5"
+ "@chakra-ui/react-children-utils" "2.0.6"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-controllable-state" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/react-use-safe-layout-effect" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/tag@3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-3.1.1.tgz#d05284b6549a84d3a08e57eec57df3ad0eebd882"
+ integrity sha512-Bdel79Dv86Hnge2PKOU+t8H28nm/7Y3cKd4Kfk9k3lOpUh4+nkSGe58dhRzht59lEqa4N9waCgQiBdkydjvBXQ==
+ dependencies:
+ "@chakra-ui/icon" "3.2.0"
+ "@chakra-ui/react-context" "2.1.0"
+
+"@chakra-ui/textarea@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-2.1.2.tgz#30f8af0e233cec2dee79d527450c6586e7122eff"
+ integrity sha512-ip7tvklVCZUb2fOHDb23qPy/Fr2mzDOGdkrpbNi50hDCiV4hFX02jdQJdi3ydHZUyVgZVBKPOJ+lT9i7sKA2wA==
+ dependencies:
+ "@chakra-ui/form-control" "2.2.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/theme-tools@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-2.1.2.tgz#913be05879cd816c546993ccb9ff7615f85ff69f"
+ integrity sha512-Qdj8ajF9kxY4gLrq7gA+Azp8CtFHGO9tWMN2wfF9aQNgG9AuMhPrUzMq9AMQ0MXiYcgNq/FD3eegB43nHVmXVA==
+ dependencies:
+ "@chakra-ui/anatomy" "2.2.2"
+ "@chakra-ui/shared-utils" "2.0.5"
+ color2k "^2.0.2"
+
+"@chakra-ui/theme-utils@2.0.21":
+ version "2.0.21"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/theme-utils/-/theme-utils-2.0.21.tgz#da7ed541a5241a8ed0384eb14f37fa9b998382cf"
+ integrity sha512-FjH5LJbT794r0+VSCXB3lT4aubI24bLLRWB+CuRKHijRvsOg717bRdUN/N1fEmEpFnRVrbewttWh/OQs0EWpWw==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/styled-system" "2.9.2"
+ "@chakra-ui/theme" "3.3.1"
+ lodash.mergewith "4.6.2"
+
+"@chakra-ui/theme@3.3.1":
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-3.3.1.tgz#75c6cd0b5c70c0aa955068274ee4780f299bd8a4"
+ integrity sha512-Hft/VaT8GYnItGCBbgWd75ICrIrIFrR7lVOhV/dQnqtfGqsVDlrztbSErvMkoPKt0UgAkd9/o44jmZ6X4U2nZQ==
+ dependencies:
+ "@chakra-ui/anatomy" "2.2.2"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/theme-tools" "2.1.2"
+
+"@chakra-ui/toast@7.0.2":
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-7.0.2.tgz#d1c396bbfced12e22b010899731fd8cc294d53ec"
+ integrity sha512-yvRP8jFKRs/YnkuE41BVTq9nB2v/KDRmje9u6dgDmE5+1bFt3bwjdf9gVbif4u5Ve7F7BGk5E093ARRVtvLvXA==
+ dependencies:
+ "@chakra-ui/alert" "2.2.2"
+ "@chakra-ui/close-button" "2.1.1"
+ "@chakra-ui/portal" "2.1.0"
+ "@chakra-ui/react-context" "2.1.0"
+ "@chakra-ui/react-use-timeout" "2.1.0"
+ "@chakra-ui/react-use-update-effect" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+ "@chakra-ui/styled-system" "2.9.2"
+ "@chakra-ui/theme" "3.3.1"
+
+"@chakra-ui/tooltip@2.3.1":
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-2.3.1.tgz#29fb8508a37bb6b20ab8dbb32bca6cd59b098796"
+ integrity sha512-Rh39GBn/bL4kZpuEMPPRwYNnccRCL+w9OqamWHIB3Qboxs6h8cOyXfIdGxjo72lvhu1QI/a4KFqkM3St+WfC0A==
+ dependencies:
+ "@chakra-ui/dom-utils" "2.1.0"
+ "@chakra-ui/popper" "3.1.0"
+ "@chakra-ui/portal" "2.1.0"
+ "@chakra-ui/react-types" "2.0.7"
+ "@chakra-ui/react-use-disclosure" "2.1.0"
+ "@chakra-ui/react-use-event-listener" "2.1.0"
+ "@chakra-ui/react-use-merge-refs" "2.1.0"
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/transition@2.1.0":
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-2.1.0.tgz#c8e95564f7ab356e78119780037bae5ad150c7b3"
+ integrity sha512-orkT6T/Dt+/+kVwJNy7zwJ+U2xAZ3EU7M3XCs45RBvUnZDr/u9vdmaM/3D/rOpmQJWgQBwKPJleUXrYWUagEDQ==
+ dependencies:
+ "@chakra-ui/shared-utils" "2.0.5"
+
+"@chakra-ui/utils@2.0.15":
+ version "2.0.15"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-2.0.15.tgz#bd800b1cff30eb5a5e8c36fa039f49984b4c5e4a"
+ integrity sha512-El4+jL0WSaYYs+rJbuYFDbjmfCcfGDmRY95GO4xwzit6YAPZBLcR65rOEwLps+XWluZTy1xdMrusg/hW0c1aAA==
+ dependencies:
+ "@types/lodash.mergewith" "4.6.7"
+ css-box-model "1.2.1"
+ framesync "6.1.2"
+ lodash.mergewith "4.6.2"
+
+"@chakra-ui/visually-hidden@2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-2.2.0.tgz#9b0ecef8f01263ab808ba3bda7b36a0d91b4d5c1"
+ integrity sha512-KmKDg01SrQ7VbTD3+cPWf/UfpF5MSwm3v7MWi0n5t8HnnadT13MF0MJCDSXbBWnzLv1ZKJ6zlyAOeARWX+DpjQ==
+
+"@emotion/babel-plugin@^11.11.0":
+ version "11.11.0"
+ resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz#c2d872b6a7767a9d176d007f5b31f7d504bb5d6c"
+ integrity sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/runtime" "^7.18.3"
+ "@emotion/hash" "^0.9.1"
+ "@emotion/memoize" "^0.8.1"
+ "@emotion/serialize" "^1.1.2"
+ 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"
+ integrity sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==
+ dependencies:
+ "@emotion/memoize" "^0.8.1"
+ "@emotion/sheet" "^1.2.2"
+ "@emotion/utils" "^1.2.1"
+ "@emotion/weak-memoize" "^0.3.1"
+ 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/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/memoize@^0.8.1":
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17"
+ integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
+
+"@emotion/react@^11.11.4":
+ version "11.11.4"
+ resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.4.tgz#3a829cac25c1f00e126408fab7f891f00ecc3c1d"
+ integrity sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==
+ 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"
+ hoist-non-react-statics "^3.3.1"
+
+"@emotion/serialize@^1.1.2", "@emotion/serialize@^1.1.3", "@emotion/serialize@^1.1.4":
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.1.4.tgz#fc8f6d80c492cfa08801d544a05331d1cc7cd451"
+ integrity sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==
+ dependencies:
+ "@emotion/hash" "^0.9.1"
+ "@emotion/memoize" "^0.8.1"
+ "@emotion/unitless" "^0.8.1"
+ "@emotion/utils" "^1.2.1"
+ csstype "^3.0.2"
+
+"@emotion/sheet@^1.2.2":
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.2.2.tgz#d58e788ee27267a14342303e1abb3d508b6d0fec"
+ integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==
+
+"@emotion/styled@^11.11.5":
+ version "11.11.5"
+ resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.5.tgz#0c5c8febef9d86e8a926e663b2e5488705545dfb"
+ integrity sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==
+ dependencies:
+ "@babel/runtime" "^7.18.3"
+ "@emotion/babel-plugin" "^11.11.0"
+ "@emotion/is-prop-valid" "^1.2.2"
+ "@emotion/serialize" "^1.1.4"
+ "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1"
+ "@emotion/utils" "^1.2.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/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/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/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==
+
+"@esbuild/aix-ppc64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537"
+ integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==
+
+"@esbuild/android-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9"
+ integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==
+
+"@esbuild/android-arm@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995"
+ integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==
+
+"@esbuild/android-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98"
+ integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==
+
+"@esbuild/darwin-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb"
+ integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==
+
+"@esbuild/darwin-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0"
+ integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==
+
+"@esbuild/freebsd-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911"
+ integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==
+
+"@esbuild/freebsd-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c"
+ integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==
+
+"@esbuild/linux-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5"
+ integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==
+
+"@esbuild/linux-arm@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c"
+ integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==
+
+"@esbuild/linux-ia32@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa"
+ integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==
+
+"@esbuild/linux-loong64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5"
+ integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==
+
+"@esbuild/linux-mips64el@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa"
+ integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==
+
+"@esbuild/linux-ppc64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20"
+ integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==
+
+"@esbuild/linux-riscv64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300"
+ integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==
+
+"@esbuild/linux-s390x@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685"
+ integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==
+
+"@esbuild/linux-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff"
+ integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==
+
+"@esbuild/netbsd-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6"
+ integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==
+
+"@esbuild/openbsd-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf"
+ integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==
+
+"@esbuild/sunos-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f"
+ integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==
+
+"@esbuild/win32-arm64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90"
+ integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==
+
+"@esbuild/win32-ia32@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23"
+ integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==
+
+"@esbuild/win32-x64@0.20.2":
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc"
+ integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==
+
+"@eslint-community/eslint-utils@^4.2.0":
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
+ dependencies:
+ eslint-visitor-keys "^3.3.0"
+
+"@eslint-community/regexpp@^4.6.1":
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
+ integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
+
+"@eslint/eslintrc@^2.1.4":
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
+ integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
+ dependencies:
+ ajv "^6.12.4"
+ debug "^4.3.2"
+ espree "^9.6.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
+ import-fresh "^3.2.1"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
+ strip-json-comments "^3.1.1"
+
+"@eslint/js@8.57.0":
+ version "8.57.0"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
+ integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
+
+"@hookform/resolvers@^3.3.4":
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-3.3.4.tgz#de9b668c2835eb06892290192de6e2a5c906229b"
+ integrity sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==
+
+"@humanwhocodes/config-array@^0.11.14":
+ version "0.11.14"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
+ integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
+ dependencies:
+ "@humanwhocodes/object-schema" "^2.0.2"
+ debug "^4.3.1"
+ minimatch "^3.0.5"
+
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
+ integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
+
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.8":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
+"@popperjs/core@^2.9.3":
+ version "2.11.8"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
+ integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
+
+"@reduxjs/toolkit@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-2.2.3.tgz#5ce71cbf162f98c5dafb49bd3f1e11c5486ab9c4"
+ integrity sha512-76dll9EnJXg4EVcI5YNxZA/9hSAmZsFqzMmNRHvIlzw2WS/twfcVX3ysYrWGJMClwEmChQFC4yRq74tn6fdzRA==
+ dependencies:
+ immer "^10.0.3"
+ redux "^5.0.1"
+ redux-thunk "^3.1.0"
+ reselect "^5.0.1"
+
+"@remix-run/router@1.15.3":
+ version "1.15.3"
+ resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.15.3.tgz#d2509048d69dbb72d5389a14945339f1430b2d3c"
+ integrity sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==
+
+"@rollup/rollup-android-arm-eabi@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz#bddf05c3387d02fac04b6b86b3a779337edfed75"
+ integrity sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==
+
+"@rollup/rollup-android-arm64@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz#b26bd09de58704c0a45e3375b76796f6eda825e4"
+ integrity sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==
+
+"@rollup/rollup-darwin-arm64@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz#c5f3fd1aa285b6d33dda6e3f3ca395f8c37fd5ca"
+ integrity sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==
+
+"@rollup/rollup-darwin-x64@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz#8e4673734d7dc9d68f6d48e81246055cda0e840f"
+ integrity sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==
+
+"@rollup/rollup-linux-arm-gnueabihf@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz#53ed38eb13b58ababdb55a7f66f0538a7f85dcba"
+ integrity sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==
+
+"@rollup/rollup-linux-arm-musleabihf@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz#0706ee38330e267a5c9326956820f009cfb21fcd"
+ integrity sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==
+
+"@rollup/rollup-linux-arm64-gnu@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz#426fce7b8b242ac5abd48a10a5020f5a468c6cb4"
+ integrity sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==
+
+"@rollup/rollup-linux-arm64-musl@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz#65bf944530d759b50d7ffd00dfbdf4125a43406f"
+ integrity sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==
+
+"@rollup/rollup-linux-powerpc64le-gnu@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz#494ba3b31095e9a45df9c3f646d21400fb631a95"
+ integrity sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==
+
+"@rollup/rollup-linux-riscv64-gnu@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz#8b88ed0a40724cce04aa15374ebe5ba4092d679f"
+ integrity sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==
+
+"@rollup/rollup-linux-s390x-gnu@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz#09c9e5ec57a0f6ec3551272c860bb9a04b96d70f"
+ integrity sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==
+
+"@rollup/rollup-linux-x64-gnu@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz#197f27fd481ad9c861021d5cbbf21793922a631c"
+ integrity sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==
+
+"@rollup/rollup-linux-x64-musl@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz#5cc0522f4942f2df625e9bfb6fb02c6580ffbce6"
+ integrity sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==
+
+"@rollup/rollup-win32-arm64-msvc@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz#a648122389d23a7543b261fba082e65fefefe4f6"
+ integrity sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==
+
+"@rollup/rollup-win32-ia32-msvc@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz#34727b5c7953c35fc6e1ae4f770ad3a2025f8e03"
+ integrity sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==
+
+"@rollup/rollup-win32-x64-msvc@4.14.3":
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz#5b2fb4d8cd44c05deef8a7b0e6deb9ccb8939d18"
+ integrity sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==
+
+"@swc/core-darwin-arm64@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.16.tgz#2cd45d709ce76d448d96bf8d0006849541436611"
+ integrity sha512-UOCcH1GvjRnnM/LWT6VCGpIk0OhHRq6v1U6QXuPt5wVsgXnXQwnf5k3sG5Cm56hQHDvhRPY6HCsHi/p0oek8oQ==
+
+"@swc/core-darwin-x64@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.4.16.tgz#a5bc7d8b1dd850adb0bb95c6b5c742b92201fd01"
+ integrity sha512-t3bgqFoYLWvyVtVL6KkFNCINEoOrIlyggT/kJRgi1y0aXSr0oVgcrQ4ezJpdeahZZ4N+Q6vT3ffM30yIunELNA==
+
+"@swc/core-linux-arm-gnueabihf@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.16.tgz#961744908ee5cbb79bc009dcf58cc8b831111f38"
+ integrity sha512-DvHuwvEF86YvSd0lwnzVcjOTZ0jcxewIbsN0vc/0fqm9qBdMMjr9ox6VCam1n3yYeRtj4VFgrjeNFksqbUejdQ==
+
+"@swc/core-linux-arm64-gnu@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.16.tgz#43713be3f26757d82d2745dc25f8b63400e0a3d0"
+ integrity sha512-9Uu5YlPbyCvbidjKtYEsPpyZlu16roOZ5c2tP1vHfnU9bgf5Tz5q5VovSduNxPHx+ed2iC1b1URODHvDzbbDuQ==
+
+"@swc/core-linux-arm64-musl@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.16.tgz#394a7d030f3a61902bd3947bb9d70d26d42f3c81"
+ integrity sha512-/YZq/qB1CHpeoL0eMzyqK5/tYZn/rzKoCYDviFU4uduSUIJsDJQuQA/skdqUzqbheOXKAd4mnJ1hT04RbJ8FPQ==
+
+"@swc/core-linux-x64-gnu@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.16.tgz#71eb108b784f9d551ee8a35ebcdaed972f567981"
+ integrity sha512-UUjaW5VTngZYDcA8yQlrFmqs1tLi1TxbKlnaJwoNhel9zRQ0yG1YEVGrzTvv4YApSuIiDK18t+Ip927bwucuVQ==
+
+"@swc/core-linux-x64-musl@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.16.tgz#10dbaedb4e3dfc7268e3a9a66ad3431471ef035b"
+ integrity sha512-aFhxPifevDTwEDKPi4eRYWzC0p/WYJeiFkkpNU5Uc7a7M5iMWPAbPFUbHesdlb9Jfqs5c07oyz86u+/HySBNPQ==
+
+"@swc/core-win32-arm64-msvc@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.16.tgz#80247adff6c245ff32b44d773c1a148858cd655f"
+ integrity sha512-bTD43MbhIHL2s5QgCwyleaGwl96Gk/scF2TaVKdUe4QlJCDV/YK9h5oIBAp63ckHtE8GHlH4c8dZNBiAXn4Org==
+
+"@swc/core-win32-ia32-msvc@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.16.tgz#e540afc3ccf3224267b4ddfb408f9d9737984686"
+ integrity sha512-/lmZeAN/qV5XbK2SEvi8e2RkIg8FQNYiSA8y2/Zb4gTUMKVO5JMLH0BSWMiIKMstKDPDSxMWgwJaQHF8UMyPmQ==
+
+"@swc/core-win32-x64-msvc@1.4.16":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.16.tgz#f880939fca32c181adfe7e3abd2b6b7857bd3489"
+ integrity sha512-BPAfFfODWXtUu6SwaTTftDHvcbDyWBSI/oanUeRbQR5vVWkXoQ3cxLTsDluc3H74IqXS5z1Uyoe0vNo2hB1opA==
+
+"@swc/core@^1.3.107":
+ version "1.4.16"
+ resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.4.16.tgz#d175bae2acfecd53bcbd4293f1fba5ec316634a0"
+ integrity sha512-Xaf+UBvW6JNuV131uvSNyMXHn+bh6LyKN4tbv7tOUFQpXyz/t9YWRE04emtlUW9Y0qrm/GKFCbY8n3z6BpZbTA==
+ dependencies:
+ "@swc/counter" "^0.1.2"
+ "@swc/types" "^0.1.5"
+ optionalDependencies:
+ "@swc/core-darwin-arm64" "1.4.16"
+ "@swc/core-darwin-x64" "1.4.16"
+ "@swc/core-linux-arm-gnueabihf" "1.4.16"
+ "@swc/core-linux-arm64-gnu" "1.4.16"
+ "@swc/core-linux-arm64-musl" "1.4.16"
+ "@swc/core-linux-x64-gnu" "1.4.16"
+ "@swc/core-linux-x64-musl" "1.4.16"
+ "@swc/core-win32-arm64-msvc" "1.4.16"
+ "@swc/core-win32-ia32-msvc" "1.4.16"
+ "@swc/core-win32-x64-msvc" "1.4.16"
+
+"@swc/counter@^0.1.2", "@swc/counter@^0.1.3":
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
+ integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
+
+"@swc/types@^0.1.5":
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.6.tgz#2f13f748995b247d146de2784d3eb7195410faba"
+ integrity sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==
+ dependencies:
+ "@swc/counter" "^0.1.3"
+
+"@types/estree@1.0.5":
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
+ integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
+
+"@types/lodash.mergewith@4.6.7":
+ version "4.6.7"
+ resolved "https://registry.yarnpkg.com/@types/lodash.mergewith/-/lodash.mergewith-4.6.7.tgz#eaa65aa5872abdd282f271eae447b115b2757212"
+ integrity sha512-3m+lkO5CLRRYU0fhGRp7zbsGi6+BZj0uTVSwvcKU+nSlhjA9/QRNfuSGnD2mX6hQA7ZbmcCkzk5h4ZYGOtk14A==
+ dependencies:
+ "@types/lodash" "*"
+
+"@types/lodash@*":
+ version "4.17.0"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.0.tgz#d774355e41f372d5350a4d0714abb48194a489c3"
+ integrity sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==
+
+"@types/parse-json@^4.0.0":
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
+ integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
+
+"@types/prop-types@*":
+ version "15.7.12"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
+ integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
+
+"@types/quill@^1.3.10":
+ version "1.3.10"
+ resolved "https://registry.yarnpkg.com/@types/quill/-/quill-1.3.10.tgz#dc1f7b6587f7ee94bdf5291bc92289f6f0497613"
+ integrity sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw==
+ dependencies:
+ parchment "^1.1.2"
+
+"@types/react-dom@^18.2.22":
+ version "18.2.25"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.25.tgz#2946a30081f53e7c8d585eb138277245caedc521"
+ integrity sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==
+ dependencies:
+ "@types/react" "*"
+
+"@types/react@*", "@types/react@^18.2.66":
+ version "18.2.79"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.79.tgz#c40efb4f255711f554d47b449f796d1c7756d865"
+ integrity sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==
+ dependencies:
+ "@types/prop-types" "*"
+ csstype "^3.0.2"
+
+"@types/use-sync-external-store@^0.0.3":
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz#b6725d5f4af24ace33b36fafd295136e75509f43"
+ integrity sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==
+
+"@ungap/structured-clone@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
+ integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
+
+"@vitejs/plugin-react-swc@^3.5.0":
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz#dc9cd1363baf3780f3ad3e0a12a46a3ffe0c7526"
+ integrity sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==
+ dependencies:
+ "@swc/core" "^1.3.107"
+
+"@zag-js/dom-query@0.16.0":
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/@zag-js/dom-query/-/dom-query-0.16.0.tgz#bca46bcd78f78c900064478646d95f9781ed098e"
+ integrity sha512-Oqhd6+biWyKnhKwFFuZrrf6lxBz2tX2pRQe6grUnYwO6HJ8BcbqZomy2lpOdr+3itlaUqx+Ywj5E5ZZDr/LBfQ==
+
+"@zag-js/element-size@0.10.5":
+ version "0.10.5"
+ resolved "https://registry.yarnpkg.com/@zag-js/element-size/-/element-size-0.10.5.tgz#a24bad2eeb7e2c8709e32be5336e158e1a1a174f"
+ integrity sha512-uQre5IidULANvVkNOBQ1tfgwTQcGl4hliPSe69Fct1VfYb2Fd0jdAcGzqQgPhfrXFpR62MxLPB7erxJ/ngtL8w==
+
+"@zag-js/focus-visible@0.16.0":
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/@zag-js/focus-visible/-/focus-visible-0.16.0.tgz#c9e53e3dbab0f2649d04a489bb379f5800f4f069"
+ integrity sha512-a7U/HSopvQbrDU4GLerpqiMcHKEkQkNPeDZJWz38cw/6Upunh41GjHetq5TB84hxyCaDzJ6q2nEdNoBQfC0FKA==
+ dependencies:
+ "@zag-js/dom-query" "0.16.0"
+
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
+
+acorn@^8.9.0:
+ version "8.11.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
+ integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
+
+ajv@^6.12.4:
+ version "6.12.6"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
+ integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ fast-json-stable-stringify "^2.0.0"
+ json-schema-traverse "^0.4.1"
+ uri-js "^4.2.2"
+
+ansi-regex@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
+ integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-styles@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
+ integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
+ dependencies:
+ color-convert "^2.0.1"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
+aria-hidden@^1.2.3:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522"
+ integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==
+ dependencies:
+ tslib "^2.0.0"
+
+array-buffer-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f"
+ integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==
+ dependencies:
+ call-bind "^1.0.5"
+ is-array-buffer "^3.0.4"
+
+array-includes@^3.1.6, array-includes@^3.1.7:
+ version "3.1.8"
+ resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d"
+ integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+ get-intrinsic "^1.2.4"
+ is-string "^1.0.7"
+
+array.prototype.findlast@^1.2.4:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz#3e4fbcb30a15a7f5bf64cf2faae22d139c2e4904"
+ integrity sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-shim-unscopables "^1.0.2"
+
+array.prototype.flat@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18"
+ integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.flatmap@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527"
+ integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.toreversed@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz#b989a6bf35c4c5051e1dc0325151bf8088954eba"
+ integrity sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ es-shim-unscopables "^1.0.0"
+
+array.prototype.tosorted@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz#c8c89348337e51b8a3c48a9227f9ce93ceedcba8"
+ integrity sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.1.0"
+ es-shim-unscopables "^1.0.2"
+
+arraybuffer.prototype.slice@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz#097972f4255e41bc3425e37dc3f6421cf9aefde6"
+ integrity sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ es-abstract "^1.22.3"
+ es-errors "^1.2.1"
+ get-intrinsic "^1.2.3"
+ is-array-buffer "^3.0.4"
+ is-shared-array-buffer "^1.0.2"
+
+available-typed-arrays@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
+ integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
+ dependencies:
+ possible-typed-array-names "^1.0.0"
+
+babel-plugin-macros@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
+ integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cosmiconfig "^7.0.0"
+ resolve "^1.19.0"
+
+balanced-match@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
+ integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+
+bootstrap@5.3.3:
+ version "5.3.3"
+ resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.3.tgz#de35e1a765c897ac940021900fcbb831602bac38"
+ integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+ integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ set-function-length "^1.2.1"
+
+callsites@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
+ integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+
+chalk@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
+ integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
+
+color-convert@^1.9.0:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-convert@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
+ integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
+ dependencies:
+ color-name "~1.1.4"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
+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==
+
+color2k@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/color2k/-/color2k-2.0.3.tgz#a771244f6b6285541c82aa65ff0a0c624046e533"
+ integrity sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==
+
+compute-scroll-into-view@3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-3.0.3.tgz#c418900a5c56e2b04b885b54995df164535962b1"
+ integrity sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+
+convert-source-map@^1.5.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
+ integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
+
+copy-to-clipboard@3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0"
+ integrity sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==
+ dependencies:
+ toggle-selection "^1.0.6"
+
+cosmiconfig@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+ integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.2.1"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.10.0"
+
+cross-spawn@^7.0.2:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
+crypto-js@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631"
+ integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==
+
+css-box-model@1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/css-box-model/-/css-box-model-1.2.1.tgz#59951d3b81fd6b2074a62d49444415b0d2b4d7c1"
+ integrity sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==
+ dependencies:
+ tiny-invariant "^1.0.6"
+
+csstype@^3.0.2, csstype@^3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
+ integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
+
+data-view-buffer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2"
+ integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2"
+ integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+data-view-byte-offset@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a"
+ integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-data-view "^1.0.1"
+
+debug@^4.3.1, debug@^4.3.2:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
+deep-equal@^1.0.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.2.tgz#78a561b7830eef3134c7f6f3a3d6af272a678761"
+ integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
+ dependencies:
+ is-arguments "^1.1.1"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ regexp.prototype.flags "^1.5.1"
+
+deep-is@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
+ integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
+
+define-data-property@^1.0.1, define-data-property@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+ integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+ dependencies:
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ gopd "^1.0.1"
+
+define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
+ integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
+ dependencies:
+ define-data-property "^1.0.1"
+ has-property-descriptors "^1.0.0"
+ object-keys "^1.1.1"
+
+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==
+
+doctrine@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
+ integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==
+ dependencies:
+ esutils "^2.0.2"
+
+doctrine@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
+ integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
+ dependencies:
+ esutils "^2.0.2"
+
+dotenv@^16.4.5:
+ version "16.4.5"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
+ integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
+
+error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2:
+ version "1.23.3"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0"
+ integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
+ dependencies:
+ array-buffer-byte-length "^1.0.1"
+ arraybuffer.prototype.slice "^1.0.3"
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ data-view-buffer "^1.0.1"
+ data-view-byte-length "^1.0.1"
+ data-view-byte-offset "^1.0.0"
+ es-define-property "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ es-set-tostringtag "^2.0.3"
+ es-to-primitive "^1.2.1"
+ function.prototype.name "^1.1.6"
+ get-intrinsic "^1.2.4"
+ get-symbol-description "^1.0.2"
+ globalthis "^1.0.3"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ hasown "^2.0.2"
+ internal-slot "^1.0.7"
+ is-array-buffer "^3.0.4"
+ is-callable "^1.2.7"
+ is-data-view "^1.0.1"
+ is-negative-zero "^2.0.3"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.3"
+ is-string "^1.0.7"
+ is-typed-array "^1.1.13"
+ is-weakref "^1.0.2"
+ object-inspect "^1.13.1"
+ object-keys "^1.1.1"
+ object.assign "^4.1.5"
+ regexp.prototype.flags "^1.5.2"
+ safe-array-concat "^1.1.2"
+ safe-regex-test "^1.0.3"
+ string.prototype.trim "^1.2.9"
+ string.prototype.trimend "^1.0.8"
+ string.prototype.trimstart "^1.0.8"
+ typed-array-buffer "^1.0.2"
+ typed-array-byte-length "^1.0.1"
+ typed-array-byte-offset "^1.0.2"
+ typed-array-length "^1.0.6"
+ unbox-primitive "^1.0.2"
+ which-typed-array "^1.1.15"
+
+es-define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+ integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+
+es-errors@^1.1.0, es-errors@^1.2.1, es-errors@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+ integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
+es-iterator-helpers@^1.0.17:
+ version "1.0.18"
+ resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz#4d3424f46b24df38d064af6fbbc89274e29ea69d"
+ integrity sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.0"
+ es-errors "^1.3.0"
+ es-set-tostringtag "^2.0.3"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ globalthis "^1.0.3"
+ has-property-descriptors "^1.0.2"
+ has-proto "^1.0.3"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.7"
+ iterator.prototype "^1.1.2"
+ safe-array-concat "^1.1.2"
+
+es-object-atoms@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941"
+ integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==
+ dependencies:
+ es-errors "^1.3.0"
+
+es-set-tostringtag@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777"
+ integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==
+ dependencies:
+ get-intrinsic "^1.2.4"
+ has-tostringtag "^1.0.2"
+ hasown "^2.0.1"
+
+es-shim-unscopables@^1.0.0, es-shim-unscopables@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763"
+ integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==
+ dependencies:
+ hasown "^2.0.0"
+
+es-to-primitive@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a"
+ integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+esbuild@^0.20.1:
+ version "0.20.2"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1"
+ integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.20.2"
+ "@esbuild/android-arm" "0.20.2"
+ "@esbuild/android-arm64" "0.20.2"
+ "@esbuild/android-x64" "0.20.2"
+ "@esbuild/darwin-arm64" "0.20.2"
+ "@esbuild/darwin-x64" "0.20.2"
+ "@esbuild/freebsd-arm64" "0.20.2"
+ "@esbuild/freebsd-x64" "0.20.2"
+ "@esbuild/linux-arm" "0.20.2"
+ "@esbuild/linux-arm64" "0.20.2"
+ "@esbuild/linux-ia32" "0.20.2"
+ "@esbuild/linux-loong64" "0.20.2"
+ "@esbuild/linux-mips64el" "0.20.2"
+ "@esbuild/linux-ppc64" "0.20.2"
+ "@esbuild/linux-riscv64" "0.20.2"
+ "@esbuild/linux-s390x" "0.20.2"
+ "@esbuild/linux-x64" "0.20.2"
+ "@esbuild/netbsd-x64" "0.20.2"
+ "@esbuild/openbsd-x64" "0.20.2"
+ "@esbuild/sunos-x64" "0.20.2"
+ "@esbuild/win32-arm64" "0.20.2"
+ "@esbuild/win32-ia32" "0.20.2"
+ "@esbuild/win32-x64" "0.20.2"
+
+escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
+
+escape-string-regexp@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
+ integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
+
+eslint-plugin-react-hooks@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
+ integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
+
+eslint-plugin-react-refresh@^0.4.6:
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.6.tgz#e8e8accab681861baed00c5c12da70267db0936f"
+ integrity sha512-NjGXdm7zgcKRkKMua34qVO9doI7VOxZ6ancSvBELJSSoX97jyndXcSoa8XBh69JoB31dNz3EEzlMcizZl7LaMA==
+
+eslint-plugin-react@^7.34.1:
+ version "7.34.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz#6806b70c97796f5bbfb235a5d3379ece5f4da997"
+ integrity sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==
+ dependencies:
+ array-includes "^3.1.7"
+ array.prototype.findlast "^1.2.4"
+ array.prototype.flatmap "^1.3.2"
+ array.prototype.toreversed "^1.1.2"
+ array.prototype.tosorted "^1.1.3"
+ doctrine "^2.1.0"
+ es-iterator-helpers "^1.0.17"
+ estraverse "^5.3.0"
+ jsx-ast-utils "^2.4.1 || ^3.0.0"
+ minimatch "^3.1.2"
+ object.entries "^1.1.7"
+ object.fromentries "^2.0.7"
+ object.hasown "^1.1.3"
+ object.values "^1.1.7"
+ prop-types "^15.8.1"
+ resolve "^2.0.0-next.5"
+ semver "^6.3.1"
+ string.prototype.matchall "^4.0.10"
+
+eslint-scope@^7.2.2:
+ version "7.2.2"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
+ integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
+
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
+ version "3.4.3"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
+ integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
+
+eslint@^8.57.0:
+ version "8.57.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
+ integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
+ "@eslint-community/regexpp" "^4.6.1"
+ "@eslint/eslintrc" "^2.1.4"
+ "@eslint/js" "8.57.0"
+ "@humanwhocodes/config-array" "^0.11.14"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
+ "@ungap/structured-clone" "^1.2.0"
+ ajv "^6.12.4"
+ chalk "^4.0.0"
+ cross-spawn "^7.0.2"
+ debug "^4.3.2"
+ doctrine "^3.0.0"
+ escape-string-regexp "^4.0.0"
+ eslint-scope "^7.2.2"
+ eslint-visitor-keys "^3.4.3"
+ espree "^9.6.1"
+ esquery "^1.4.2"
+ esutils "^2.0.2"
+ fast-deep-equal "^3.1.3"
+ file-entry-cache "^6.0.1"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
+ imurmurhash "^0.1.4"
+ is-glob "^4.0.0"
+ is-path-inside "^3.0.3"
+ js-yaml "^4.1.0"
+ json-stable-stringify-without-jsonify "^1.0.1"
+ levn "^0.4.1"
+ lodash.merge "^4.6.2"
+ minimatch "^3.1.2"
+ natural-compare "^1.4.0"
+ optionator "^0.9.3"
+ strip-ansi "^6.0.1"
+ text-table "^0.2.0"
+
+espree@^9.6.0, espree@^9.6.1:
+ version "9.6.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
+ integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
+ dependencies:
+ acorn "^8.9.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.4.1"
+
+esquery@^1.4.2:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
+ dependencies:
+ estraverse "^5.1.0"
+
+esrecurse@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
+ integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
+ dependencies:
+ estraverse "^5.2.0"
+
+estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
+ integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
+
+esutils@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
+ integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+
+eventemitter3@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba"
+ integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==
+
+extend@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
+ integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
+
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
+ integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+
+fast-diff@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154"
+ integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==
+
+fast-json-stable-stringify@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
+fast-levenshtein@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+
+fastq@^1.6.0:
+ version "1.17.1"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47"
+ integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==
+ dependencies:
+ reusify "^1.0.4"
+
+file-entry-cache@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
+ integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
+ dependencies:
+ flat-cache "^3.0.4"
+
+find-root@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
+ integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
+
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
+flat-cache@^3.0.4:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
+ integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
+ dependencies:
+ flatted "^3.2.9"
+ keyv "^4.5.3"
+ rimraf "^3.0.2"
+
+flatted@^3.2.9:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
+ integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
+
+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"
+
+for-each@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
+ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+ dependencies:
+ is-callable "^1.1.3"
+
+framer-motion@^11.1.5:
+ version "11.1.5"
+ resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.1.5.tgz#2238e9ee45d05c87753caea96614fce8b8093f69"
+ integrity sha512-ogK5fc0GBUT3AjzMXPx7f74m5V1ByRqkKQARBVHpdkYTNDxb/WriANYD+5JBo1wklQQJ1HayDZtmofQLqZFcbw==
+ dependencies:
+ tslib "^2.4.0"
+
+framesync@6.1.2:
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/framesync/-/framesync-6.1.2.tgz#755eff2fb5b8f3b4d2b266dd18121b300aefea27"
+ integrity sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==
+ dependencies:
+ tslib "2.4.0"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
+
+fsevents@~2.3.2, fsevents@~2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
+function-bind@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
+ integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
+
+function.prototype.name@^1.1.5, function.prototype.name@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
+ integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
+ dependencies:
+ call-bind "^1.0.2"
+ define-properties "^1.2.0"
+ es-abstract "^1.22.1"
+ functions-have-names "^1.2.3"
+
+functions-have-names@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
+ integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
+
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+ integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
+ dependencies:
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ has-proto "^1.0.1"
+ has-symbols "^1.0.3"
+ hasown "^2.0.0"
+
+get-nonce@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3"
+ integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
+
+get-symbol-description@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.2.tgz#533744d5aa20aca4e079c8e5daf7fd44202821f5"
+ integrity sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==
+ dependencies:
+ call-bind "^1.0.5"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
+glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^13.19.0:
+ version "13.24.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
+ integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
+ dependencies:
+ type-fest "^0.20.2"
+
+globalthis@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
+ integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+ dependencies:
+ define-properties "^1.1.3"
+
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+graphemer@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6"
+ integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+has-bigints@^1.0.1, has-bigints@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
+ integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
+ integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+ integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+ dependencies:
+ es-define-property "^1.0.0"
+
+has-proto@^1.0.1, has-proto@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
+ integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
+
+has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0, has-tostringtag@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+ integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
+ dependencies:
+ has-symbols "^1.0.3"
+
+hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
+ integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
+ dependencies:
+ function-bind "^1.1.2"
+
+hoist-non-react-statics@^3.3.1:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
+ integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
+ dependencies:
+ react-is "^16.7.0"
+
+ignore@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
+ integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
+
+immer@^10.0.3:
+ version "10.0.4"
+ resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.4.tgz#09af41477236b99449f9d705369a4daaf780362b"
+ integrity sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw==
+
+import-fresh@^3.2.1:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
+imurmurhash@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
+ integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
+ integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
+
+internal-slot@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802"
+ integrity sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==
+ dependencies:
+ es-errors "^1.3.0"
+ hasown "^2.0.0"
+ side-channel "^1.0.4"
+
+invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-arguments@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-array-buffer@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.4.tgz#7a1f92b3d61edd2bc65d24f130530ea93d7fae98"
+ integrity sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.1"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-async-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646"
+ integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-bigint@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3"
+ integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==
+ dependencies:
+ has-bigints "^1.0.1"
+
+is-boolean-object@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719"
+ integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
+is-core-module@^2.13.0:
+ version "2.13.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
+ integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
+ dependencies:
+ hasown "^2.0.0"
+
+is-data-view@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.1.tgz#4b4d3a511b70f3dc26d42c03ca9ca515d847759f"
+ integrity sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==
+ dependencies:
+ is-typed-array "^1.1.13"
+
+is-date-object@^1.0.1, is-date-object@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
+ integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
+
+is-finalizationregistry@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6"
+ integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-generator-function@^1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
+ integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-glob@^4.0.0, is-glob@^4.0.3:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
+ integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-map@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
+ integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
+
+is-negative-zero@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
+ integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
+
+is-number-object@^1.0.4:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc"
+ integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
+is-regex@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
+ integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
+is-set@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
+ integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
+
+is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz#1237f1cba059cdb62431d378dcc37d9680181688"
+ integrity sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==
+ dependencies:
+ call-bind "^1.0.7"
+
+is-string@^1.0.5, is-string@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
+ integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
+is-symbol@^1.0.2, is-symbol@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c"
+ integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==
+ dependencies:
+ has-symbols "^1.0.2"
+
+is-typed-array@^1.1.13:
+ version "1.1.13"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229"
+ integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==
+ dependencies:
+ which-typed-array "^1.1.14"
+
+is-weakmap@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
+ integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==
+
+is-weakref@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
+ integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
+ dependencies:
+ call-bind "^1.0.2"
+
+is-weakset@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007"
+ integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+
+isarray@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
+ integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+iterator.prototype@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0"
+ integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==
+ dependencies:
+ define-properties "^1.2.1"
+ get-intrinsic "^1.2.1"
+ has-symbols "^1.0.3"
+ reflect.getprototypeof "^1.0.4"
+ set-function-name "^2.0.1"
+
+js-cookie@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
+ integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
+json-buffer@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
+ integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
+
+json-parse-even-better-errors@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
+ integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
+
+json-schema-traverse@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
+ integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+
+json-stable-stringify-without-jsonify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
+ integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
+
+json-stringify-safe@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+ integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
+
+"jsx-ast-utils@^2.4.1 || ^3.0.0":
+ version "3.3.5"
+ resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a"
+ integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==
+ dependencies:
+ array-includes "^3.1.6"
+ array.prototype.flat "^1.3.1"
+ object.assign "^4.1.4"
+ object.values "^1.1.6"
+
+keyv@^4.5.3:
+ version "4.5.4"
+ resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
+ integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
+ dependencies:
+ json-buffer "3.0.1"
+
+levn@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
+ integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
+ dependencies:
+ prelude-ls "^1.2.1"
+ type-check "~0.4.0"
+
+lines-and-columns@^1.1.6:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
+ integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
+lodash.mergewith@4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55"
+ integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==
+
+lodash@^4.17.4:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
+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"
+ integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
+
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
+object-inspect@^1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
+ integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+
+object-is@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
+ integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+
+object-keys@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
+ integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
+
+object.assign@^4.1.4, object.assign@^4.1.5:
+ version "4.1.5"
+ resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.5.tgz#3a833f9ab7fdb80fc9e8d2300c803d216d8fdbb0"
+ integrity sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==
+ dependencies:
+ call-bind "^1.0.5"
+ define-properties "^1.2.1"
+ has-symbols "^1.0.3"
+ object-keys "^1.1.1"
+
+object.entries@^1.1.7:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41"
+ integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+object.fromentries@^2.0.7:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65"
+ integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+
+object.hasown@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.4.tgz#e270ae377e4c120cdcb7656ce66884a6218283dc"
+ integrity sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==
+ dependencies:
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+
+object.values@^1.1.6, object.values@^1.1.7:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b"
+ integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
+ dependencies:
+ wrappy "1"
+
+optionator@^0.9.3:
+ version "0.9.3"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
+ integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
+ dependencies:
+ "@aashutoshrathi/word-wrap" "^1.2.3"
+ deep-is "^0.1.3"
+ fast-levenshtein "^2.0.6"
+ levn "^0.4.1"
+ prelude-ls "^1.2.1"
+ type-check "^0.4.0"
+
+p-limit@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
+ integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
+ dependencies:
+ yocto-queue "^0.1.0"
+
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
+parchment@^1.1.2, parchment@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5"
+ integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==
+
+parent-module@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
+ integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
+ dependencies:
+ callsites "^3.0.0"
+
+parse-json@^5.0.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
+ integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ error-ex "^1.3.1"
+ json-parse-even-better-errors "^2.3.0"
+ lines-and-columns "^1.1.6"
+
+path-exists@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
+ integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
+
+path-key@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
+ integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
+
+path-parse@^1.0.7:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
+
+path-type@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
+ integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+
+picocolors@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
+ integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
+
+possible-typed-array-names@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f"
+ integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
+
+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"
+
+prelude-ls@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
+ integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prop-types@^15.6.2, prop-types@^15.8.1:
+ version "15.8.1"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
+ integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
+ dependencies:
+ loose-envify "^1.4.0"
+ object-assign "^4.1.1"
+ react-is "^16.13.1"
+
+property-expr@^2.0.5:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.6.tgz#f77bc00d5928a6c748414ad12882e83f24aec1e8"
+ integrity sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==
+
+punycode@^2.1.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
+ integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quill-delta@^3.6.2:
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032"
+ integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==
+ dependencies:
+ deep-equal "^1.0.1"
+ extend "^3.0.2"
+ fast-diff "1.1.2"
+
+quill@^1.3.7:
+ version "1.3.7"
+ resolved "https://registry.yarnpkg.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8"
+ integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==
+ dependencies:
+ clone "^2.1.1"
+ deep-equal "^1.0.1"
+ eventemitter3 "^2.0.3"
+ extend "^3.0.2"
+ parchment "^1.1.4"
+ quill-delta "^3.6.2"
+
+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-dom@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
+ integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==
+ dependencies:
+ loose-envify "^1.1.0"
+ scheduler "^0.23.0"
+
+react-fast-compare@3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49"
+ integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==
+
+react-focus-lock@^2.9.4:
+ version "2.11.3"
+ resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.11.3.tgz#a7c98b4ab11fd270d78f90a7c9a9e69352c2af6d"
+ integrity sha512-CfWYS86y6KvAIGxYzO1/HlWI2zGON9Fa3L2xfREDGMNFAtYj3m/ZRvnsMH4H75dj5FpgDy2LWA1Vyx+twV80vw==
+ 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-hook-form@^7.51.3:
+ version "7.51.3"
+ resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.51.3.tgz#7486dd2d52280b6b28048c099a98d2545931cab3"
+ integrity sha512-cvJ/wbHdhYx8aviSWh28w9ImjmVsb5Y05n1+FW786vEZQJV5STNM0pW6ujS+oiBecb0ARBxJFyAnXj9+GHXACQ==
+
+react-icons@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.1.0.tgz#9e7533cc256571a610c2a1ec8a7a143fb1222943"
+ integrity sha512-D3zug1270S4hbSlIRJ0CUS97QE1yNNKDjzQe3HqY0aefp2CBn9VgzgES27sRR2gOvFK+0CNx/BW0ggOESp6fqQ==
+
+react-is@^16.13.1, react-is@^16.7.0:
+ version "16.13.1"
+ resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
+react-quill@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/react-quill/-/react-quill-2.0.0.tgz#67a0100f58f96a246af240c9fa6841b363b3e017"
+ integrity sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg==
+ dependencies:
+ "@types/quill" "^1.3.10"
+ lodash "^4.17.4"
+ quill "^1.3.7"
+
+react-redux@^9.1.1:
+ version "9.1.1"
+ resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-9.1.1.tgz#852ec13084bd7375e26db697d2fc9027ffada204"
+ integrity sha512-5ynfGDzxxsoV73+4czQM56qF43vsmgJsO22rmAvU5tZT2z5Xow/A2uhhxwXuGTxgdReF3zcp7A80gma2onRs1A==
+ dependencies:
+ "@types/use-sync-external-store" "^0.0.3"
+ use-sync-external-store "^1.0.0"
+
+react-remove-scroll-bar@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c"
+ integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==
+ dependencies:
+ react-style-singleton "^2.2.1"
+ tslib "^2.0.0"
+
+react-remove-scroll@^2.5.6:
+ version "2.5.9"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.9.tgz#6a38e7d46043abc2c6b0fb39db650b9f2e38be3e"
+ integrity sha512-bvHCLBrFfM2OgcrpPY2YW84sPdS2o2HKWJUf1xGyGLnSoEnOTOBpahIarjRuYtN0ryahCeP242yf+5TrBX/pZA==
+ dependencies:
+ react-remove-scroll-bar "^2.3.6"
+ react-style-singleton "^2.2.1"
+ tslib "^2.1.0"
+ use-callback-ref "^1.3.0"
+ use-sidecar "^1.1.2"
+
+react-router-dom@^6.22.3:
+ version "6.22.3"
+ resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.22.3.tgz#9781415667fd1361a475146c5826d9f16752a691"
+ integrity sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==
+ dependencies:
+ "@remix-run/router" "1.15.3"
+ react-router "6.22.3"
+
+react-router@6.22.3:
+ version "6.22.3"
+ resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.22.3.tgz#9d9142f35e08be08c736a2082db5f0c9540a885e"
+ integrity sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==
+ dependencies:
+ "@remix-run/router" "1.15.3"
+
+react-style-singleton@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4"
+ integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==
+ dependencies:
+ get-nonce "^1.0.0"
+ invariant "^2.2.4"
+ tslib "^2.0.0"
+
+react@^18.2.0:
+ version "18.2.0"
+ resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
+ integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==
+ dependencies:
+ loose-envify "^1.1.0"
+
+redux-persist-transform-encrypt@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/redux-persist-transform-encrypt/-/redux-persist-transform-encrypt-5.1.1.tgz#fd167bdee0621aaed489f2ee059808450d4fb3c6"
+ integrity sha512-PN+yypR6fBVMEFBnwZmTN9rEovs+zmBojejIGF8WxP4Qt+Tt1MQtIUUkeUKoeG4QrMWoXtRYmbBkaWpKcdpXHg==
+ dependencies:
+ crypto-js "^4.2.0"
+ json-stringify-safe "^5.0.1"
+
+redux-persist@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8"
+ integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==
+
+redux-thunk@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-3.1.0.tgz#94aa6e04977c30e14e892eae84978c1af6058ff3"
+ integrity sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==
+
+redux@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b"
+ integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==
+
+reflect.getprototypeof@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz#3ab04c32a8390b770712b7a8633972702d278859"
+ integrity sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.1"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ globalthis "^1.0.3"
+ which-builtin-type "^1.1.3"
+
+regenerator-runtime@^0.14.0:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
+ integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
+
+regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
+ integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
+ dependencies:
+ call-bind "^1.0.6"
+ define-properties "^1.2.1"
+ es-errors "^1.3.0"
+ set-function-name "^2.0.1"
+
+reselect@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/reselect/-/reselect-5.1.0.tgz#c479139ab9dd91be4d9c764a7f3868210ef8cd21"
+ integrity sha512-aw7jcGLDpSgNDyWBQLv2cedml85qd95/iszJjN988zX1t7AVRJi19d9kto5+W7oCfQ94gyo40dVbT6g2k4/kXg==
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve@^1.19.0:
+ version "1.22.8"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
+ integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+resolve@^2.0.0-next.5:
+ version "2.0.0-next.5"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c"
+ integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==
+ dependencies:
+ is-core-module "^2.13.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
+rollup@^4.13.0:
+ version "4.14.3"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.14.3.tgz#bcbb7784b35826d3164346fa6d5aac95190d8ba9"
+ integrity sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==
+ dependencies:
+ "@types/estree" "1.0.5"
+ optionalDependencies:
+ "@rollup/rollup-android-arm-eabi" "4.14.3"
+ "@rollup/rollup-android-arm64" "4.14.3"
+ "@rollup/rollup-darwin-arm64" "4.14.3"
+ "@rollup/rollup-darwin-x64" "4.14.3"
+ "@rollup/rollup-linux-arm-gnueabihf" "4.14.3"
+ "@rollup/rollup-linux-arm-musleabihf" "4.14.3"
+ "@rollup/rollup-linux-arm64-gnu" "4.14.3"
+ "@rollup/rollup-linux-arm64-musl" "4.14.3"
+ "@rollup/rollup-linux-powerpc64le-gnu" "4.14.3"
+ "@rollup/rollup-linux-riscv64-gnu" "4.14.3"
+ "@rollup/rollup-linux-s390x-gnu" "4.14.3"
+ "@rollup/rollup-linux-x64-gnu" "4.14.3"
+ "@rollup/rollup-linux-x64-musl" "4.14.3"
+ "@rollup/rollup-win32-arm64-msvc" "4.14.3"
+ "@rollup/rollup-win32-ia32-msvc" "4.14.3"
+ "@rollup/rollup-win32-x64-msvc" "4.14.3"
+ fsevents "~2.3.2"
+
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
+safe-array-concat@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.2.tgz#81d77ee0c4e8b863635227c721278dd524c20edb"
+ integrity sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==
+ dependencies:
+ call-bind "^1.0.7"
+ get-intrinsic "^1.2.4"
+ has-symbols "^1.0.3"
+ isarray "^2.0.5"
+
+safe-regex-test@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
+ integrity sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==
+ dependencies:
+ call-bind "^1.0.6"
+ es-errors "^1.3.0"
+ is-regex "^1.1.4"
+
+scheduler@^0.23.0:
+ version "0.23.0"
+ resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe"
+ integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==
+ dependencies:
+ loose-envify "^1.1.0"
+
+semver@^6.3.1:
+ version "6.3.1"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+set-function-length@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+ integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ function-bind "^1.1.2"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-property-descriptors "^1.0.2"
+
+set-function-name@^2.0.1, set-function-name@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
+ integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
+ dependencies:
+ define-data-property "^1.1.4"
+ es-errors "^1.3.0"
+ functions-have-names "^1.2.3"
+ has-property-descriptors "^1.0.2"
+
+shebang-command@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
+ integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
+ dependencies:
+ shebang-regex "^3.0.0"
+
+shebang-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
+ integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+
+side-channel@^1.0.4, side-channel@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
+ integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ object-inspect "^1.13.1"
+
+source-map-js@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
+ integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
+
+source-map@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
+
+string.prototype.matchall@^4.0.10:
+ version "4.0.11"
+ resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a"
+ integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ get-intrinsic "^1.2.4"
+ gopd "^1.0.1"
+ has-symbols "^1.0.3"
+ internal-slot "^1.0.7"
+ regexp.prototype.flags "^1.5.2"
+ set-function-name "^2.0.2"
+ side-channel "^1.0.6"
+
+string.prototype.trim@^1.2.9:
+ version "1.2.9"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz#b6fa326d72d2c78b6df02f7759c73f8f6274faa4"
+ integrity sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.0"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimend@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz#3651b8513719e8a9f48de7f2f77640b26652b229"
+ integrity sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+string.prototype.trimstart@^1.0.8:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
+ integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-object-atoms "^1.0.0"
+
+strip-ansi@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-json-comments@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
+ integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+
+stylis@4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51"
+ integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==
+
+supports-color@^5.3.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+supports-color@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
+supports-preserve-symlinks-flag@^1.0.0:
+ version "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==
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+
+tiny-case@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03"
+ integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==
+
+tiny-invariant@^1.0.6:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127"
+ integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
+
+toggle-selection@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
+ integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
+
+toposort@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330"
+ integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==
+
+tslib@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
+ integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+
+tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+ integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
+type-check@^0.4.0, type-check@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
+ integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
+ dependencies:
+ prelude-ls "^1.2.1"
+
+type-fest@^0.20.2:
+ version "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@^2.19.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
+ integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
+
+typed-array-buffer@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz#1867c5d83b20fcb5ccf32649e5e2fc7424474ff3"
+ integrity sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-length@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz#d92972d3cff99a3fa2e765a28fcdc0f1d89dec67"
+ integrity sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-byte-offset@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz#f9ec1acb9259f395093e4567eb3c28a580d02063"
+ integrity sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+
+typed-array-length@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.6.tgz#57155207c76e64a3457482dfdc1c9d1d3c4c73a3"
+ integrity sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==
+ dependencies:
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-proto "^1.0.3"
+ is-typed-array "^1.1.13"
+ possible-typed-array-names "^1.0.0"
+
+unbox-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
+ integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==
+ dependencies:
+ call-bind "^1.0.2"
+ has-bigints "^1.0.2"
+ has-symbols "^1.0.3"
+ which-boxed-primitive "^1.0.2"
+
+uri-js@^4.2.2:
+ version "4.4.1"
+ resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
+ integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
+ dependencies:
+ punycode "^2.1.0"
+
+use-callback-ref@^1.3.0, 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"
+
+use-sync-external-store@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
+ integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
+
+uuid@^9.0.1:
+ version "9.0.1"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30"
+ integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
+
+vite@^5.2.0:
+ version "5.2.9"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.9.tgz#cd9a356c6ff5f7456c09c5ce74068ffa8df743d9"
+ integrity sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==
+ dependencies:
+ esbuild "^0.20.1"
+ postcss "^8.4.38"
+ rollup "^4.13.0"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
+which-boxed-primitive@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
+ integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
+ dependencies:
+ is-bigint "^1.0.1"
+ is-boolean-object "^1.1.0"
+ is-number-object "^1.0.4"
+ is-string "^1.0.5"
+ is-symbol "^1.0.3"
+
+which-builtin-type@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b"
+ integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==
+ dependencies:
+ function.prototype.name "^1.1.5"
+ has-tostringtag "^1.0.0"
+ is-async-function "^2.0.0"
+ is-date-object "^1.0.5"
+ is-finalizationregistry "^1.0.2"
+ is-generator-function "^1.0.10"
+ is-regex "^1.1.4"
+ is-weakref "^1.0.2"
+ isarray "^2.0.5"
+ which-boxed-primitive "^1.0.2"
+ which-collection "^1.0.1"
+ which-typed-array "^1.1.9"
+
+which-collection@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
+ integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
+ dependencies:
+ is-map "^2.0.3"
+ is-set "^2.0.3"
+ is-weakmap "^2.0.2"
+ is-weakset "^2.0.3"
+
+which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.9:
+ version "1.1.15"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
+ integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==
+ dependencies:
+ available-typed-arrays "^1.0.7"
+ call-bind "^1.0.7"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.2"
+
+which@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
+ integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
+ dependencies:
+ isexe "^2.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+
+yaml@^1.10.0:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yocto-queue@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
+ integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+
+yup@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/yup/-/yup-1.4.0.tgz#898dcd660f9fb97c41f181839d3d65c3ee15a43e"
+ integrity sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==
+ dependencies:
+ property-expr "^2.0.5"
+ tiny-case "^1.0.3"
+ toposort "^2.0.2"
+ type-fest "^2.19.0"