From b4a95c7b6bb25726489c6fde2b28d04011cc2b84 Mon Sep 17 00:00:00 2001
From: Aswanth Vc
Date: Sun, 20 Oct 2024 16:06:48 +0530
Subject: [PATCH] feat: Learning Circle Pages
---
package-lock.json | 413 +++++++++++-------
package.json | 2 +
src/App.tsx | 15 +
.../Authentication/pages/Onboarding.tsx | 4 -
.../Onboarding/CollegePage/CollegePage.tsx | 1 -
.../pages/Onboarding/SignIn/SignIn.tsx | 2 -
.../Authentication/pages/ResetPassword.tsx | 1 -
.../Dashboard/layouts/DashboardRootLayout.tsx | 8 +-
.../pages/LcAdmin/LcAdmin.module.css | 0
.../LearningCircle/pages/LcAdmin/LcAdmin.tsx | 96 ++++
.../pages/LcDashboard/LcDashboard.module.css | 172 +++++++-
.../components/LcAttendeeReport.tsx | 276 ++++++++++++
.../LcDashboard/components/LcHistory.tsx | 89 +++-
.../pages/LcDashboard/components/LcHome.tsx | 161 +++++--
.../LcDashboard/components/LcMeetCreate.tsx | 23 +-
.../LcDashboard/components/LcMeetups.tsx | 21 +-
.../pages/LcDashboard/components/LcReport.tsx | 174 ++++++--
.../LcDashboard/components/YourMeetups.tsx | 108 +++++
.../pages/LearningCircle.module.css | 6 +-
.../pages/LearningCircleLandingPage.tsx | 17 +-
.../services/LearningCircleAPIs.ts | 109 ++++-
.../services/LearningCircleInterface.d.ts | 17 +-
src/services/endpoints.ts | 3 +-
src/services/urls.ts | 5 +
24 files changed, 1407 insertions(+), 316 deletions(-)
create mode 100644 src/modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin.module.css
create mode 100644 src/modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin.tsx
create mode 100644 src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcAttendeeReport.tsx
create mode 100644 src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/YourMeetups.tsx
diff --git a/package-lock.json b/package-lock.json
index 0d96f7edc..74c81fa67 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,7 @@
"@chakra-ui/react": "^2.6.1",
"@emotion/react": "^11.10.6",
"@emotion/styled": "^11.10.6",
+ "@types/react-star-ratings": "^2.3.3",
"@types/react-tabs": "^5.0.5",
"axios": "^1.3.4",
"file-saver": "^2.0.5",
@@ -32,6 +33,7 @@
"react-router-dom": "^6.9.0",
"react-select": "^5.7.7",
"react-spinners": "^0.13.8",
+ "react-star-ratings": "^2.3.0",
"react-tabs": "^6.0.1",
"react-tag-input-component": "^2.0.2",
"react-tooltip": "^5.18.1",
@@ -2102,16 +2104,21 @@
"dev": true
},
"node_modules/@babel/runtime": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
- "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
+ "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==",
"dependencies": {
- "regenerator-runtime": "^0.13.11"
+ "regenerator-runtime": "^0.14.0"
},
"engines": {
"node": ">=6.9.0"
}
},
+ "node_modules/@babel/runtime/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
"node_modules/@babel/template": {
"version": "7.22.15",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
@@ -3332,21 +3339,21 @@
}
},
"node_modules/@emotion/babel-plugin": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz",
- "integrity": "sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz",
+ "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==",
"dependencies": {
"@babel/helper-module-imports": "^7.16.7",
"@babel/runtime": "^7.18.3",
- "@emotion/hash": "^0.9.0",
- "@emotion/memoize": "^0.8.0",
- "@emotion/serialize": "^1.1.1",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.2.0",
"babel-plugin-macros": "^3.1.0",
"convert-source-map": "^1.5.0",
"escape-string-regexp": "^4.0.0",
"find-root": "^1.1.0",
"source-map": "^0.5.7",
- "stylis": "4.1.3"
+ "stylis": "4.2.0"
}
},
"node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
@@ -3361,47 +3368,47 @@
}
},
"node_modules/@emotion/cache": {
- "version": "11.10.5",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz",
- "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==",
+ "version": "11.13.1",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz",
+ "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
"dependencies": {
- "@emotion/memoize": "^0.8.0",
- "@emotion/sheet": "^1.2.1",
- "@emotion/utils": "^1.2.0",
- "@emotion/weak-memoize": "^0.3.0",
- "stylis": "4.1.3"
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
}
},
"node_modules/@emotion/hash": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
- "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
},
"node_modules/@emotion/is-prop-valid": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
- "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz",
+ "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==",
"dependencies": {
- "@emotion/memoize": "^0.8.0"
+ "@emotion/memoize": "^0.9.0"
}
},
"node_modules/@emotion/memoize": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
- "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
},
"node_modules/@emotion/react": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz",
- "integrity": "sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==",
+ "version": "11.13.3",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz",
+ "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==",
"dependencies": {
"@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.10.6",
- "@emotion/cache": "^11.10.5",
- "@emotion/serialize": "^1.1.1",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
- "@emotion/utils": "^1.2.0",
- "@emotion/weak-memoize": "^0.3.0",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/cache": "^11.13.0",
+ "@emotion/serialize": "^1.3.1",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
"hoist-non-react-statics": "^3.3.1"
},
"peerDependencies": {
@@ -3414,33 +3421,33 @@
}
},
"node_modules/@emotion/serialize": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz",
- "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz",
+ "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==",
"dependencies": {
- "@emotion/hash": "^0.9.0",
- "@emotion/memoize": "^0.8.0",
- "@emotion/unitless": "^0.8.0",
- "@emotion/utils": "^1.2.0",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.1",
"csstype": "^3.0.2"
}
},
"node_modules/@emotion/sheet": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz",
- "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA=="
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
},
"node_modules/@emotion/styled": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.6.tgz",
- "integrity": "sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==",
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz",
+ "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==",
"dependencies": {
"@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.10.6",
- "@emotion/is-prop-valid": "^1.2.0",
- "@emotion/serialize": "^1.1.1",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
- "@emotion/utils": "^1.2.0"
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/is-prop-valid": "^1.3.0",
+ "@emotion/serialize": "^1.3.0",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0"
},
"peerDependencies": {
"@emotion/react": "^11.0.0-rc.0",
@@ -3453,27 +3460,27 @@
}
},
"node_modules/@emotion/unitless": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
- "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
},
"node_modules/@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
- "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
+ "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
"peerDependencies": {
"react": ">=16.8.0"
}
},
"node_modules/@emotion/utils": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
- "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz",
+ "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA=="
},
"node_modules/@emotion/weak-memoize": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
- "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
},
"node_modules/@esbuild/android-arm": {
"version": "0.18.20",
@@ -4057,9 +4064,9 @@
}
},
"node_modules/@popperjs/core": {
- "version": "2.11.7",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
- "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==",
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
@@ -4410,9 +4417,9 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
"node_modules/@types/prop-types": {
- "version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA=="
},
"node_modules/@types/raf": {
"version": "3.4.3",
@@ -4448,6 +4455,14 @@
"@types/react": "*"
}
},
+ "node_modules/@types/react-star-ratings": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@types/react-star-ratings/-/react-star-ratings-2.3.3.tgz",
+ "integrity": "sha512-8vLqJG1uRA2SmYBBMPWpv6QWHLvZ/a3XmELCIf4xh4VFXT7QkkrcthiLSMjQ4ibDiUtYYpyLB0JoR1lBHSHA2A==",
+ "dependencies": {
+ "@types/react": "*"
+ }
+ },
"node_modules/@types/react-tabs": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@types/react-tabs/-/react-tabs-5.0.5.tgz",
@@ -4458,9 +4473,9 @@
}
},
"node_modules/@types/react-transition-group": {
- "version": "4.4.5",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
- "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+ "version": "4.4.11",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
+ "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
"dependencies": {
"@types/react": "*"
}
@@ -5578,9 +5593,9 @@
}
},
"node_modules/csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/d3-array": {
"version": "3.2.4",
@@ -8930,6 +8945,29 @@
"react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0"
}
},
+ "node_modules/react-star-ratings": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/react-star-ratings/-/react-star-ratings-2.3.0.tgz",
+ "integrity": "sha512-34Z/oFNDRRn4ZcX7F3t9ccnpo7SQ32gD/vsusQOBc6B6vlqaGR6tke1/Yx3jTDjemKRSmXqhKgpPTR7/JAXq6A==",
+ "dependencies": {
+ "classnames": "^2.2.1",
+ "prop-types": "^15.6.0",
+ "react": "^16.1.0"
+ }
+ },
+ "node_modules/react-star-ratings/node_modules/react": {
+ "version": "16.14.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
+ "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
+ "dependencies": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react-style-singleton": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
@@ -9092,7 +9130,8 @@
"node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "optional": true
},
"node_modules/regenerator-transform": {
"version": "0.15.2",
@@ -9721,9 +9760,9 @@
}
},
"node_modules/stylis": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
- "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
},
"node_modules/supports-color": {
"version": "5.5.0",
@@ -12011,11 +12050,18 @@
"dev": true
},
"@babel/runtime": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
- "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+ "version": "7.25.7",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
+ "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==",
"requires": {
- "regenerator-runtime": "^0.13.11"
+ "regenerator-runtime": "^0.14.0"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ }
}
},
"@babel/template": {
@@ -12943,21 +12989,21 @@
"requires": {}
},
"@emotion/babel-plugin": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.6.tgz",
- "integrity": "sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz",
+ "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==",
"requires": {
"@babel/helper-module-imports": "^7.16.7",
"@babel/runtime": "^7.18.3",
- "@emotion/hash": "^0.9.0",
- "@emotion/memoize": "^0.8.0",
- "@emotion/serialize": "^1.1.1",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/serialize": "^1.2.0",
"babel-plugin-macros": "^3.1.0",
"convert-source-map": "^1.5.0",
"escape-string-regexp": "^4.0.0",
"find-root": "^1.1.0",
"source-map": "^0.5.7",
- "stylis": "4.1.3"
+ "stylis": "4.2.0"
},
"dependencies": {
"escape-string-regexp": {
@@ -12968,100 +13014,100 @@
}
},
"@emotion/cache": {
- "version": "11.10.5",
- "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.10.5.tgz",
- "integrity": "sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==",
+ "version": "11.13.1",
+ "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz",
+ "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==",
"requires": {
- "@emotion/memoize": "^0.8.0",
- "@emotion/sheet": "^1.2.1",
- "@emotion/utils": "^1.2.0",
- "@emotion/weak-memoize": "^0.3.0",
- "stylis": "4.1.3"
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/sheet": "^1.4.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
+ "stylis": "4.2.0"
}
},
"@emotion/hash": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz",
- "integrity": "sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ=="
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz",
+ "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g=="
},
"@emotion/is-prop-valid": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz",
- "integrity": "sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz",
+ "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==",
"requires": {
- "@emotion/memoize": "^0.8.0"
+ "@emotion/memoize": "^0.9.0"
}
},
"@emotion/memoize": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz",
- "integrity": "sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA=="
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz",
+ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="
},
"@emotion/react": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.10.6.tgz",
- "integrity": "sha512-6HT8jBmcSkfzO7mc+N1L9uwvOnlcGoix8Zn7srt+9ga0MjREo6lRpuVX0kzo6Jp6oTqDhREOFsygN6Ew4fEQbw==",
+ "version": "11.13.3",
+ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz",
+ "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==",
"requires": {
"@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.10.6",
- "@emotion/cache": "^11.10.5",
- "@emotion/serialize": "^1.1.1",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
- "@emotion/utils": "^1.2.0",
- "@emotion/weak-memoize": "^0.3.0",
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/cache": "^11.13.0",
+ "@emotion/serialize": "^1.3.1",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0",
+ "@emotion/weak-memoize": "^0.4.0",
"hoist-non-react-statics": "^3.3.1"
}
},
"@emotion/serialize": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz",
- "integrity": "sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==",
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz",
+ "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==",
"requires": {
- "@emotion/hash": "^0.9.0",
- "@emotion/memoize": "^0.8.0",
- "@emotion/unitless": "^0.8.0",
- "@emotion/utils": "^1.2.0",
+ "@emotion/hash": "^0.9.2",
+ "@emotion/memoize": "^0.9.0",
+ "@emotion/unitless": "^0.10.0",
+ "@emotion/utils": "^1.4.1",
"csstype": "^3.0.2"
}
},
"@emotion/sheet": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.1.tgz",
- "integrity": "sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA=="
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz",
+ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="
},
"@emotion/styled": {
- "version": "11.10.6",
- "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.10.6.tgz",
- "integrity": "sha512-OXtBzOmDSJo5Q0AFemHCfl+bUueT8BIcPSxu0EGTpGk6DmI5dnhSzQANm1e1ze0YZL7TDyAyy6s/b/zmGOS3Og==",
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz",
+ "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==",
"requires": {
"@babel/runtime": "^7.18.3",
- "@emotion/babel-plugin": "^11.10.6",
- "@emotion/is-prop-valid": "^1.2.0",
- "@emotion/serialize": "^1.1.1",
- "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0",
- "@emotion/utils": "^1.2.0"
+ "@emotion/babel-plugin": "^11.12.0",
+ "@emotion/is-prop-valid": "^1.3.0",
+ "@emotion/serialize": "^1.3.0",
+ "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0",
+ "@emotion/utils": "^1.4.0"
}
},
"@emotion/unitless": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
- "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz",
+ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="
},
"@emotion/use-insertion-effect-with-fallbacks": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.0.tgz",
- "integrity": "sha512-1eEgUGmkaljiBnRMTdksDV1W4kUnmwgp7X9G8B++9GYwl1lUdqSndSriIrTJ0N7LQaoauY9JJ2yhiOYK5+NI4A==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz",
+ "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==",
"requires": {}
},
"@emotion/utils": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz",
- "integrity": "sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw=="
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz",
+ "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA=="
},
"@emotion/weak-memoize": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.0.tgz",
- "integrity": "sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg=="
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz",
+ "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg=="
},
"@esbuild/android-arm": {
"version": "0.18.20",
@@ -13384,9 +13430,9 @@
}
},
"@popperjs/core": {
- "version": "2.11.7",
- "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz",
- "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw=="
+ "version": "2.11.8",
+ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+ "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="
},
"@remix-run/router": {
"version": "1.10.0",
@@ -13727,9 +13773,9 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
},
"@types/prop-types": {
- "version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w=="
+ "version": "15.7.13",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz",
+ "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA=="
},
"@types/raf": {
"version": "3.4.3",
@@ -13765,6 +13811,14 @@
"@types/react": "*"
}
},
+ "@types/react-star-ratings": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/@types/react-star-ratings/-/react-star-ratings-2.3.3.tgz",
+ "integrity": "sha512-8vLqJG1uRA2SmYBBMPWpv6QWHLvZ/a3XmELCIf4xh4VFXT7QkkrcthiLSMjQ4ibDiUtYYpyLB0JoR1lBHSHA2A==",
+ "requires": {
+ "@types/react": "*"
+ }
+ },
"@types/react-tabs": {
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/@types/react-tabs/-/react-tabs-5.0.5.tgz",
@@ -13774,9 +13828,9 @@
}
},
"@types/react-transition-group": {
- "version": "4.4.5",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
- "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+ "version": "4.4.11",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz",
+ "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==",
"requires": {
"@types/react": "*"
}
@@ -14584,9 +14638,9 @@
"dev": true
},
"csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw=="
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"d3-array": {
"version": "3.2.4",
@@ -17034,6 +17088,28 @@
"integrity": "sha512-3e+k56lUkPj0vb5NDXPVFAOkPC//XyhKPJjvcGjyMNPWsBKpplfeyialP74G7H7+It7KzhtET+MvGqbKgAqpZA==",
"requires": {}
},
+ "react-star-ratings": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/react-star-ratings/-/react-star-ratings-2.3.0.tgz",
+ "integrity": "sha512-34Z/oFNDRRn4ZcX7F3t9ccnpo7SQ32gD/vsusQOBc6B6vlqaGR6tke1/Yx3jTDjemKRSmXqhKgpPTR7/JAXq6A==",
+ "requires": {
+ "classnames": "^2.2.1",
+ "prop-types": "^15.6.0",
+ "react": "^16.1.0"
+ },
+ "dependencies": {
+ "react": {
+ "version": "16.14.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
+ "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
+ "requires": {
+ "loose-envify": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "prop-types": "^15.6.2"
+ }
+ }
+ }
+ },
"react-style-singleton": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz",
@@ -17149,7 +17225,8 @@
"regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
- "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+ "optional": true
},
"regenerator-transform": {
"version": "0.15.2",
@@ -17585,9 +17662,9 @@
"dev": true
},
"stylis": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
- "integrity": "sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA=="
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
},
"supports-color": {
"version": "5.5.0",
diff --git a/package.json b/package.json
index 44c0dde72..f7a66458e 100644
--- a/package.json
+++ b/package.json
@@ -14,6 +14,7 @@
"@chakra-ui/react": "^2.6.1",
"@emotion/react": "^11.10.6",
"@emotion/styled": "^11.10.6",
+ "@types/react-star-ratings": "^2.3.3",
"@types/react-tabs": "^5.0.5",
"axios": "^1.3.4",
"file-saver": "^2.0.5",
@@ -35,6 +36,7 @@
"react-router-dom": "^6.9.0",
"react-select": "^5.7.7",
"react-spinners": "^0.13.8",
+ "react-star-ratings": "^2.3.0",
"react-tabs": "^6.0.1",
"react-tag-input-component": "^2.0.2",
"react-tooltip": "^5.18.1",
diff --git a/src/App.tsx b/src/App.tsx
index 8b9c6c752..bd297dce5 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -47,6 +47,8 @@ import UserInterest from "./modules/Common/Authentication/pages/Onboarding/UserI
import LcMeetupIfo from "./modules/Dashboard/modules/LearningCircle/pages/Meetup/LcMeetup";
import OrganizationSetting from "./modules/Dashboard/modules/Settings/pages/Organization/Organization";
import SettingsHome from "./modules/Dashboard/modules/Settings/pages/Settings/SettingsHome";
+import LcReportAttendee from "./modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcAttendeeReport";
+import LcAdmin from "./modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin";
const Profile = lazy(
() => import("./modules/Dashboard/modules/Profile/pages/Profile")
@@ -365,6 +367,15 @@ function App() {
/>
)
},
+ {
+ path: "lc-meetup-verification",
+ element: (
+ }
+ />
+ )
+ },
{
path: "campus-details",
element: (
@@ -704,6 +715,10 @@ function App() {
path: "learning-circle/meetup/:id",
element:
},
+ {
+ path: "learning-circle/meetup/:id/attendee-report",
+ element:
+ },
{
path: "learning-circle/details/:id",
element:
diff --git a/src/modules/Common/Authentication/pages/Onboarding.tsx b/src/modules/Common/Authentication/pages/Onboarding.tsx
index ce6c5d71a..4c515e9d5 100644
--- a/src/modules/Common/Authentication/pages/Onboarding.tsx
+++ b/src/modules/Common/Authentication/pages/Onboarding.tsx
@@ -433,7 +433,6 @@ const Onboarding = (props: Props) => {
setDefaultCommunity([
{ value: foundCommunity.id, label: foundCommunity.title }
]);
- console.log(defaultCommunity);
}
}
}, [communityAPI]);
@@ -1065,9 +1064,6 @@ const Onboarding = (props: Props) => {
: null
}
onChange={OnChangeValue => {
- console.log(
- OnChangeValue
- );
formik.setFieldValue(
"community",
OnChangeValue.map(
diff --git a/src/modules/Common/Authentication/pages/Onboarding/CollegePage/CollegePage.tsx b/src/modules/Common/Authentication/pages/Onboarding/CollegePage/CollegePage.tsx
index 54c7e4bf1..717600e19 100644
--- a/src/modules/Common/Authentication/pages/Onboarding/CollegePage/CollegePage.tsx
+++ b/src/modules/Common/Authentication/pages/Onboarding/CollegePage/CollegePage.tsx
@@ -113,7 +113,6 @@ export default function CollegePage() {
}
});
};
- // console.log(userData);
return (
{
- console.log(values);
-
if (!otpForm) {
login(
values.emailOrMuId,
diff --git a/src/modules/Common/Authentication/pages/ResetPassword.tsx b/src/modules/Common/Authentication/pages/ResetPassword.tsx
index f9a67cee7..c5e282cce 100644
--- a/src/modules/Common/Authentication/pages/ResetPassword.tsx
+++ b/src/modules/Common/Authentication/pages/ResetPassword.tsx
@@ -20,7 +20,6 @@ const ResetPassword = (props: Props) => {
useEffect(() => {
const paramToken = searchParams.get("token");
setToken(paramToken as string);
- console.log(token);
if (token.length > 0 && muid.length === 0) {
getMuid(token, navigate, setMuID);
}
diff --git a/src/modules/Dashboard/layouts/DashboardRootLayout.tsx b/src/modules/Dashboard/layouts/DashboardRootLayout.tsx
index a9f296452..628dea579 100644
--- a/src/modules/Dashboard/layouts/DashboardRootLayout.tsx
+++ b/src/modules/Dashboard/layouts/DashboardRootLayout.tsx
@@ -173,9 +173,15 @@ const DashboardRootLayout = (props: { component?: any }) => {
url: "/dashboard/interest-groups",
title: "Interest Groups",
hasView: true,
- roles: [roles.ADMIN]
+ roles: [roles.ADMIN, roles.FELLOW]
// icon:
},
+ {
+ url: "/dashboard/lc-meetup-verification",
+ title: "LC Meetup Verification",
+ hasView: true,
+ roles: [roles.ADMIN]
+ },
{
url: "/dashboard/college-levels",
title: "College Levels",
diff --git a/src/modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin.module.css b/src/modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin.module.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/src/modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin.tsx b/src/modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin.tsx
new file mode 100644
index 000000000..39b53d419
--- /dev/null
+++ b/src/modules/Dashboard/modules/LearningCircle/pages/LcAdmin/LcAdmin.tsx
@@ -0,0 +1,96 @@
+import Pagination from "@/MuLearnComponents/Pagination/Pagination";
+import Table, { Data } from "@/MuLearnComponents/Table/Table";
+import THead from "@/MuLearnComponents/Table/THead";
+import { dashboardRoutes } from "@/MuLearnServices/urls";
+import { ReactJSXElement } from "@emotion/react/types/jsx-namespace";
+import { ReactElement, useEffect, useState } from "react";
+import { getVerifiableMeetups } from "../../services/LearningCircleAPIs";
+
+const LcAdmin = () => {
+ const [isLoading, setIsLoading] = useState(false);
+ const [data, setData] = useState([]);
+ const [currentPage, setCurrentPage] = useState(1);
+ const [totalPages, setTotalPages] = useState(1);
+ const [perPage, setPerPage] = useState(20);
+ const [sort, setSort] = useState("");
+
+ useEffect(() => {
+ setIsLoading(true);
+ getVerifiableMeetups().then(res => {
+ console.log(res);
+ setData(res);
+ setIsLoading(false);
+ });
+ }, []);
+
+ const columnOrder: {
+ column: string;
+ Label: string;
+ isSortable: boolean;
+ wrap?: (
+ data: string | ReactElement,
+ id: string,
+ row: Data
+ ) => ReactJSXElement;
+ }[] = [
+ {
+ column: "learning_circle",
+ Label: "Learning Circle",
+ isSortable: false
+ },
+ { column: "title", Label: "Meetup Title", isSortable: false },
+ { column: "join_count", Label: "Join Count", isSortable: false },
+ {
+ column: "interested_count",
+ Label: "Interest Count",
+ isSortable: false
+ },
+ {
+ column: "report_submitted_attendees",
+ Label: "Report Submitted Attendees",
+ isSortable: false
+ },
+ {
+ column: "held_on",
+ Label: "Started At",
+ isSortable: false
+ }
+ ];
+ return (
+ <>
+ {}}
+ >
+ {}}
+ action={false}
+ />
+
+ {!isLoading && (
+
{}}
+ handlePreviousClick={() => {}}
+ onSearchText={() => {}}
+ onPerPageNumber={() => {}}
+ perPage={perPage}
+ setPerPage={setPerPage}
+ />
+ )}
+
+ {/*use when u don't need or cause needs atleast 2 children*/}
+
+ >
+ );
+};
+
+export default LcAdmin;
diff --git a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/LcDashboard.module.css b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/LcDashboard.module.css
index d55708f69..ec3342014 100644
--- a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/LcDashboard.module.css
+++ b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/LcDashboard.module.css
@@ -133,10 +133,11 @@
display: flex;
align-items: flex-start;
justify-content: space-between;
+ flex-direction: column;
width: 100%;
background-color: white;
padding: 5%;
- gap: 10px;
+ gap: 20px;
height: 100%;
}
.ReportWrapper .DetailSection {
@@ -146,6 +147,86 @@
justify-content: space-between;
gap: 20px;
width: 65%;
+
+ .tasks {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ width: 100%;
+ h4 {
+ text-align: start;
+ font-size: 18px;
+ font-weight: 500;
+ }
+ p {
+ font-size: 15px;
+ text-align: start;
+ font-weight: 400;
+ color: #3d5c9b;
+ margin-bottom: 10px;
+ }
+ .task {
+ width: 100%;
+ background: #fff;
+ box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.15);
+ border-radius: 10px;
+ padding: 10px 20px;
+ display: flex;
+ flex-direction: column;
+ align-items: start;
+ justify-content: center;
+ .taskTitle {
+ font-size: 18px;
+ font-weight: 600;
+ gap: 10px;
+ display: flex;
+ align-items: center;
+ }
+ .taskPow {
+ display: none;
+ width: 100%;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+ gap: 10px;
+ .choosenFile {
+ display: none;
+ align-items: center;
+ gap: 10px;
+ &.active {
+ display: flex;
+ }
+ .file {
+ font-size: 15px;
+ font-weight: 600;
+ color: #456ff6;
+ display: flex;
+ align-items: center;
+ gap: 5px;
+ .icon {
+ font-size: 20px;
+ }
+ }
+ .delete {
+ color: red;
+ font-size: 15px;
+ font-weight: 600;
+ cursor: pointer;
+ }
+ }
+ &.active {
+ display: flex;
+ }
+ .input {
+ width: 100%;
+ clip-path: none;
+ padding: 20px 10px;
+ border-radius: 5px;
+ }
+ }
+ }
+ }
}
.ReportWrapper .DetailSection .Sectionone {
display: flex;
@@ -242,6 +323,77 @@
width: 100%;
gap: 10px;
align-items: flex-start;
+
+ .attendees {
+ width: 100%;
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ .attendee {
+ width: 100%;
+ display: flex;
+ gap: 10px;
+ padding: 15px;
+ background-color: rgba(238, 242, 255, 1);
+ align-items: center;
+ justify-content: space-between;
+ border-radius: 10px;
+ font-size: 17px;
+ font-weight: 600;
+ cursor: pointer;
+ h4 {
+ font-size: 13px;
+ font-weight: 700;
+ }
+ .ratingHeading {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ .fullname {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ }
+ .rating {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #456ff6;
+ }
+ }
+ .proof {
+ display: none;
+ flex-direction: column;
+ align-items: start;
+ width: 100%;
+ background: #fff;
+ padding: 10px;
+ border-radius: 10px;
+ &.active {
+ display: flex;
+ }
+ .reportText {
+ font-size: 13px;
+ color: #22222290;
+ }
+ .task {
+ width: 100%;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ gap: 10px;
+ align-items: center;
+ padding: 10px;
+ background: #fff;
+ box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.15);
+ border-radius: 5px;
+ font-weight: 500;
+ }
+ }
+ }
+ }
}
.ReportWrapper .DetailSection .SectionThree > p {
color: black;
@@ -416,6 +568,21 @@
.HistoryDataWrapper .Headings {
width: 43%;
text-align: left;
+ .qrcode {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ flex-direction: column;
+ margin: 10px;
+ gap: 10px;
+ img {
+ padding: 20px;
+ background: white;
+ border-radius: 10px;
+ box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.15);
+ }
+ }
}
.HistoryDataWrapper .detailedSection {
width: 55%;
@@ -434,11 +601,12 @@
}
.meetupTags {
display: flex;
- flex-direction: row;
+ flex-direction: row !important;
flex-wrap: wrap;
width: 100%;
.meetupInfoTag {
+ font-size: 13px;
display: flex;
gap: 10px;
align-items: center;
diff --git a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcAttendeeReport.tsx b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcAttendeeReport.tsx
new file mode 100644
index 000000000..ff8f0d44d
--- /dev/null
+++ b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcAttendeeReport.tsx
@@ -0,0 +1,276 @@
+import { createRef, useEffect, useRef, useState } from "react";
+import styles from "../LcDashboard.module.css";
+import {
+ getMeetupInfo,
+ submitAttendeeReport,
+ submitAttendeeTaskImage
+} from "../../../services/LearningCircleAPIs";
+import toast from "react-hot-toast";
+import { useNavigate, useParams } from "react-router-dom";
+import { Checkbox, Input } from "@chakra-ui/react";
+import { PowerfulButton } from "@/MuLearnComponents/MuButtons/MuButton";
+
+const LcReportAttendee = () => {
+ const [reportText, setReportText] = useState("");
+ const [meetup, setMeetup] = useState();
+ const props = useParams<{ id: string }>();
+ const filePickerRefs = useRef>({}); // Object to store refs by task.id
+ const [completedTasks, setCompletedTasks] = useState([]);
+ const [taskImages, setTaskImages] = useState<{
+ [key: string]: File | null;
+ }>({});
+ const [taskUrls, setTaskUrls] = useState<{ [key: string]: string }>({});
+ const [submitedTasks, setSubmittedtasks] = useState([]);
+ const [isTaskPOWSubmitting, setIsTaskPOWSubmitting] =
+ useState(false);
+ const navigate = useNavigate();
+ useEffect(() => {
+ getMeetupInfo(setMeetup, props.id ?? "");
+ }, [props.id]);
+ useEffect(() => {
+ if (meetup?.is_attendee_report_submitted) {
+ toast.success("Report already submitted");
+ navigate("/dashboard/learning-circle");
+ return;
+ }
+ meetup?.tasks.forEach(task => {
+ if (task.is_completed) {
+ setSubmittedtasks([...submitedTasks, task.id ?? ""]);
+ }
+ });
+ }, [meetup]);
+ const handleTaskSubmit = (taskId: string) => {
+ const formData = new FormData();
+ formData.append("meet_task", taskId);
+ if (taskImages[taskId]) {
+ console.log(taskImages[taskId]);
+ formData.append("is_image", "1");
+ formData.append(
+ "image_url",
+ taskImages[taskId] as any,
+ (taskImages[taskId] as any).name
+ );
+ setIsTaskPOWSubmitting(true);
+ submitAttendeeTaskImage(props.id ?? "", taskId, formData).then(
+ res => {
+ if (res) {
+ setSubmittedtasks([...submitedTasks, taskId]);
+ setIsTaskPOWSubmitting(false);
+ }
+ }
+ );
+ } else if (taskUrls[taskId]) {
+ formData.append("proof_url", taskUrls[taskId]);
+ setIsTaskPOWSubmitting(true);
+ submitAttendeeTaskImage(props.id ?? "", taskId, formData).then(
+ res => {
+ if (res) {
+ setSubmittedtasks([...submitedTasks, taskId]);
+ }
+ setIsTaskPOWSubmitting(false);
+ }
+ );
+ } else {
+ toast.error("Please upload an image or provide a url");
+ }
+ };
+ const handleSubmit = (event: any) => {
+ event.preventDefault();
+ const formData = new FormData();
+ if (reportText.length > 0) {
+ formData.append("report", reportText);
+ if (submitedTasks.length === 0) {
+ toast.error(
+ "Hmmm, please submit proof of work for atleast one task you have done."
+ );
+ return;
+ }
+ submitAttendeeReport(props.id ?? "", formData).then(() => {
+ navigate("/dashboard/learning-circle");
+ });
+ } else {
+ toast.error("Please provide a brief description");
+ }
+ };
+ return (
+
+
+
+
Brief description *
+
+
+
+
Meeting Tasks
+
+ Please check which tasks you've done, and upload an
+ image or a link that shows the work you have done.
+
+ {meetup?.tasks.map((task, index) => (
+
+
+ {
+ e.target.checked
+ ? setCompletedTasks([
+ ...(completedTasks as any),
+ task.id
+ ])
+ : setCompletedTasks(
+ completedTasks.filter(
+ id => id !== task.id
+ )
+ );
+ }}
+ />
+
+ {task.title}
+
+
+
+
+
{
+ e.preventDefault();
+ filePickerRefs.current[
+ task.id ?? ""
+ ]?.click();
+ }}
+ disabled={isTaskPOWSubmitting}
+ >
+ Upload Image
+
+
+
+ {taskImages[task.id ?? ""]?.name ?? ""}
+
+
+
OR
+
{
+ setTaskUrls({
+ ...taskUrls,
+ [task.id ?? ""]: e.target.value
+ });
+ }}
+ className={styles.input}
+ disabled={isTaskPOWSubmitting}
+ placeholder="Enter URL"
+ />
+
+ (filePickerRefs.current[task.id ?? ""] =
+ el)
+ }
+ type="file"
+ onChange={e => {
+ if (e.target.files) {
+ if (
+ e.target.files[0].size > 5000000
+ ) {
+ toast.error(
+ "File size should not exceed 5MB"
+ );
+ return;
+ }
+ if (
+ e.target.files[0].type !=
+ "image/jpeg" &&
+ e.target.files[0].type !=
+ "image/png"
+ ) {
+ toast.error(
+ "Please upload png or jpeg image"
+ );
+ return;
+ }
+ setTaskImages({
+ ...taskImages,
+ [task.id ?? ""]:
+ e.target.files[0]
+ });
+ }
+ }}
+ style={{ display: "none" }}
+ className={styles.input}
+ placeholder="Upload File"
+ disabled={isTaskPOWSubmitting}
+ />
+
+ handleTaskSubmit(task.id ?? "")
+ }
+ >
+ Submit
+
+
+
+ ))}
+
+
+
+
+ );
+};
+
+export default LcReportAttendee;
diff --git a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHistory.tsx b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHistory.tsx
index 9a0b8292a..b41071d0e 100644
--- a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHistory.tsx
+++ b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHistory.tsx
@@ -1,5 +1,6 @@
import styles from "../LcDashboard.module.css";
import {
+ fetchURLQRCode,
interestedMeetup,
joinMeetup
} from "../../../services/LearningCircleAPIs";
@@ -12,6 +13,8 @@ import {
import MuLoader from "@/MuLearnComponents/MuLoader/MuLoader";
import { PowerfulButton } from "@/MuLearnComponents/MuButtons/MuButton";
import toast from "react-hot-toast";
+import { useNavigate, useSearchParams } from "react-router-dom";
+import { useEffect, useState } from "react";
type Props = {
id: string | undefined;
@@ -20,10 +23,33 @@ type Props = {
};
const LcHistory = (props: Props) => {
- console.log(props.lc);
+ const navigate = useNavigate();
+ const [blob, setBlob] = useState(null);
+ const [meetupCode, setMeetupCode] = useState("");
+ const [query, setQuery] = useSearchParams();
+ useEffect(() => {
+ fetchURLQRCode(
+ setBlob,
+ (window.location.href ?? "unknown") +
+ "/?code=" +
+ props.lc?.meet_code
+ );
+ }, [props.id]);
+
+ useEffect(() => {
+ if (query.get("code")) {
+ const code = query.get("code");
+ if (code) {
+ setMeetupCode(code);
+ }
+ }
+ }, [query]);
const handleInterested = (e: any) => {
e.preventDefault();
- if (props.lc?.is_lc_member) {
+ if (
+ (props.lc?.is_lc_member || (props.lc?.is_started && meetupCode)) &&
+ !props.lc?.joined_at
+ ) {
joinMeetup(props.lc?.id ?? "").then(res => {
props.setLc({
...props.lc,
@@ -82,8 +108,10 @@ const LcHistory = (props: Props) => {
className={styles.meetupInfoTag}
onClick={() => {
navigator.clipboard.writeText(
- window.location.href ??
- "NOTCOPIED"
+ (window.location.href ??
+ "NOTCOPIED") +
+ "/?code=" +
+ props.lc?.meet_code
);
toast.success("Link Copied");
}}
@@ -110,6 +138,18 @@ const LcHistory = (props: Props) => {
)}
+ {props.lc.is_started &&
+ props.lc.is_lc_member ? (
+
+
+
+ Share this QR Code for joining the
+ meet.
+
+
+ ) : (
+ <>>
+ )}
{
Venue:{" "}
@@ -132,12 +172,20 @@ const LcHistory = (props: Props) => {
Agenda
{props.lc.agenda}
+ {props.lc.pre_requirements ? (
+ <>
+
Prerequisites
+
{props.lc.pre_requirements}
+ >
+ ) : (
+ <>>
+ )}
Tasks
{props.lc.tasks.map((task, index) => (
{index + 1}
- {task}
+ {task.title}
))}
@@ -150,6 +198,23 @@ const LcHistory = (props: Props) => {
) : null}
+ {props.lc.joined_at ? (
+ {
+ e.preventDefault();
+ navigate(
+ "/dashboard/learning-circle/meetup/" +
+ props.lc?.id +
+ "/attendee-report"
+ );
+ }}
+ >
+ {props.lc.is_attendee_report_submitted
+ ? "Report Submitted"
+ : "Submit Report"}
+
+ ) : null}
{
}
disabled={props.lc.joined_at != null}
>
- {props.lc.is_lc_member
- ? props.lc.is_started
- ? "Join"
- : "Join & Start meetup"
- : props.lc.joined_at
+ {props.lc.joined_at
? "Joined"
+ : props.lc.is_started
+ ? props.lc.is_lc_member || meetupCode
+ ? "Join"
+ : "I'm Interested to Join"
+ : props.lc.is_lc_member
+ ? "Join & Start Meetup"
: props.lc.is_interested
- ? "Undo Interest"
+ ? "Undo Interested"
: "I'm Interested Join"}
>
diff --git a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHome.tsx b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHome.tsx
index b2af21824..a8b0af1dd 100644
--- a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHome.tsx
+++ b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcHome.tsx
@@ -23,6 +23,7 @@ type Props = {
const LcHome = (props: Props) => {
const [meetups, setMeetups] = useState([]);
const [pastMeetups, setPastMeetups] = useState([]);
+ const [reportPending, setReportPending] = useState([]);
const [selectedMeeting, setSelectedMeeting] = useState("");
useEffect(() => {
getLcMeetups(props.id ?? "").then(res => {
@@ -32,6 +33,7 @@ const LcHome = (props: Props) => {
} else {
setMeetups(res.meetups);
setPastMeetups(res.past);
+ setReportPending(res.report_pending);
}
}
});
@@ -257,55 +259,124 @@ const LcHome = (props: Props) => {
{!props.temp.isSchedule &&
!props.temp.isTeam &&
!props.temp.isReport ? (
-
- {props.lc?.previous_meetings &&
- props.lc?.previous_meetings.length > 0 && (
-
Your past meetings
- )}
-
- {pastMeetups.map((report, index) => (
-
{
- navigate(
- "/dashboard/learning-circle/meetup/" +
- report.id
- );
- }}
- >
-
-
{index + 1}.
-
- {convertToFormatedDate(
- report.meet_time
- )}
-
-
-
-
+ {(reportPending ?? []).length > 0 ? (
+
+
Pending Report Submissions
+
+ {reportPending.map((report, index) => (
+
- {convertToFormatedDate(
- report.meet_time
- )}{" "}
- {convert24to12(
- extract24hTimeFromDateTime(
+
+
{index + 1}.
+
+ {convertToFormatedDate(
+ report.meet_time
+ )}
+
+
+
+
+ {convertToFormatedDate(
+ report.meet_time
+ )}{" "}
+ {convert24to12(
+ extract24hTimeFromDateTime(
+ report.meet_time
+ )
+ )}
+
+
+
+
+ ))}
+
+
+ ) : (
+ <>>
+ )}
+
+ {props.lc?.previous_meetings &&
+ props.lc?.previous_meetings.length > 0 && (
+
Your past meetings
+ )}
+
+ {pastMeetups.map((report, index) => (
+
{
+ navigate(
+ "/dashboard/learning-circle/meetup/" +
+ report.id
+ );
+ }}
+ >
+
+
{index + 1}.
+
+ {convertToFormatedDate(
report.meet_time
- )
- )}
-
-
+ )}
+
+
+
+
+ {convertToFormatedDate(
+ report.meet_time
+ )}{" "}
+ {convert24to12(
+ extract24hTimeFromDateTime(
+ report.meet_time
+ )
+ )}
+
+
+
-
- ))}
+ ))}
+
-
+ >
) : (
<>>
)}
diff --git a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcMeetCreate.tsx b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcMeetCreate.tsx
index 5bce1ad11..49888b147 100644
--- a/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcMeetCreate.tsx
+++ b/src/modules/Dashboard/modules/LearningCircle/pages/LcDashboard/components/LcMeetCreate.tsx
@@ -16,7 +16,7 @@ type Props = {
};
const LcMeetCreate = (props: Props) => {
- const [tasks, setTasks] = useState
([]);
+ const [tasks, setTasks] = useState([]);
const taskInputRef = createRef();
const [isLoading, setIsLoading] = useState(false);
const formik = useFormik({
@@ -147,7 +147,7 @@ const LcMeetCreate = (props: Props) => {
{index + 1}.
-
{task}
+
{task.title}
{
{formik.values.need_pre_requirements && (