-
+
diff --git a/apps/web/components/StyledElements/Tooltip/Tooltip.tsx b/apps/web/components/StyledElements/Tooltip/Tooltip.tsx
index 7f64fbb8..200c8232 100644
--- a/apps/web/components/StyledElements/Tooltip/Tooltip.tsx
+++ b/apps/web/components/StyledElements/Tooltip/Tooltip.tsx
@@ -8,6 +8,7 @@ type TooltipProps = {
sideOffset?: number;
content: React.ReactNode;
children: React.ReactNode;
+ side?: 'top' | 'right' | 'bottom' | 'left'; // default is bottom
slateBlack?: boolean;
};
@@ -20,7 +21,7 @@ const ToolTip = (props: TooltipProps) => {
{props.children}
-
+
{props.content}
diff --git a/apps/web/package.json b/apps/web/package.json
index 5e2668af..a0c4879c 100644
--- a/apps/web/package.json
+++ b/apps/web/package.json
@@ -14,6 +14,7 @@
"@radix-ui/react-dialog": "^1.0.2",
"@radix-ui/react-form": "^0.0.2",
"@radix-ui/react-icons": "^1.1.1",
+ "@radix-ui/react-switch": "^1.0.3",
"@radix-ui/react-tooltip": "^1.0.5",
"@sentry/nextjs": "^7.47.0",
"@stitches/react": "^1.2.8",
@@ -38,6 +39,7 @@
"react-hot-toast": "^2.4.1",
"react-katex": "^3.0.1",
"react-spinners": "^0.13.8",
+ "react-transition-group": "^4.4.5",
"react-youtube": "^10.1.0",
"styled-components": "^6.0.0-beta.9",
"swr": "^2.2.4",
@@ -53,6 +55,7 @@
"@types/react-beautiful-dnd": "^13.1.2",
"@types/react-dom": "18.0.6",
"@types/react-katex": "^3.0.0",
+ "@types/react-transition-group": "^4.4.10",
"@types/styled-components": "^5.1.26",
"@types/uuid": "^9.0.0",
"autoprefixer": "^10.4.14",
diff --git a/apps/web/services/courses/chapters.ts b/apps/web/services/courses/chapters.ts
index 26c54c81..5305ab73 100644
--- a/apps/web/services/courses/chapters.ts
+++ b/apps/web/services/courses/chapters.ts
@@ -1,4 +1,4 @@
-import { OrderPayload } from "@components/Dashboard/EditCourseStructure/EditCourseStructure";
+import { OrderPayload } from "@components/DashboardPages/EditCourseStructure/EditCourseStructure";
import { getAPIUrl } from "@services/config/config";
import { RequestBody, RequestBodyWithAuthHeader, errorHandling } from "@services/utils/ts/requests";
diff --git a/apps/web/services/courses/courses.ts b/apps/web/services/courses/courses.ts
index f8f54068..e9ba32f4 100644
--- a/apps/web/services/courses/courses.ts
+++ b/apps/web/services/courses/courses.ts
@@ -25,7 +25,7 @@ export async function getCourseMetadataWithAuthHeader(course_uuid: any, next: an
}
export async function updateCourse(course_uuid: any, data: any) {
- const result: any = await fetch(`${getAPIUrl()}courses/course_${course_uuid}`, RequestBody("PUT", data, null));
+ const result: any = await fetch(`${getAPIUrl()}courses/${course_uuid}`, RequestBody("PUT", data, null));
const res = await errorHandling(result);
return res;
}
diff --git a/apps/web/styles/globals.css b/apps/web/styles/globals.css
index 9cedbb16..68135178 100644
--- a/apps/web/styles/globals.css
+++ b/apps/web/styles/globals.css
@@ -67,3 +67,26 @@ a {
user-select: none;
white-space: nowrap;
}
+
+
+.fade-enter {
+ opacity: 0;
+ transform: translateY(-20px);
+}
+
+.fade-enter-active {
+ opacity: 1;
+ transform: translateY(0);
+ transition: opacity 300ms, transform 300ms;
+}
+
+.fade-exit {
+ opacity: 1;
+ transform: translateY(0);
+}
+
+.fade-exit-active {
+ opacity: 0;
+ transform: translateY(-20px);
+ transition: opacity 300ms, transform 300ms;
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d1668b45..6faf2199 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -35,6 +35,9 @@ importers:
'@radix-ui/react-icons':
specifier: ^1.1.1
version: 1.3.0(react@18.2.0)
+ '@radix-ui/react-switch':
+ specifier: ^1.0.3
+ version: 1.0.3(@types/react-dom@18.0.6)(@types/react@18.2.8)(react-dom@18.2.0)(react@18.2.0)
'@radix-ui/react-tooltip':
specifier: ^1.0.5
version: 1.0.7(@types/react-dom@18.0.6)(@types/react@18.2.8)(react-dom@18.2.0)(react@18.2.0)
@@ -107,6 +110,9 @@ importers:
react-spinners:
specifier: ^0.13.8
version: 0.13.8(react-dom@18.2.0)(react@18.2.0)
+ react-transition-group:
+ specifier: ^4.4.5
+ version: 4.4.5(react-dom@18.2.0)(react@18.2.0)
react-youtube:
specifier: ^10.1.0
version: 10.1.0(react@18.2.0)
@@ -147,6 +153,9 @@ importers:
'@types/react-katex':
specifier: ^3.0.0
version: 3.0.1
+ '@types/react-transition-group':
+ specifier: ^4.4.10
+ version: 4.4.10
'@types/styled-components':
specifier: ^5.1.26
version: 5.1.28
@@ -2162,6 +2171,33 @@ packages:
react: 18.2.0
dev: false
+ /@radix-ui/react-switch@1.0.3(@types/react-dom@18.0.6)(@types/react@18.2.8)(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.2
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.8)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.8)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.0.6)(@types/react@18.2.8)(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.8)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.8)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.8)(react@18.2.0)
+ '@types/react': 18.2.8
+ '@types/react-dom': 18.0.6
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/@radix-ui/react-tooltip@1.0.7(@types/react-dom@18.0.6)(@types/react@18.2.8)(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==}
peerDependencies:
@@ -2261,6 +2297,20 @@ packages:
react: 18.2.0
dev: false
+ /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.8)(react@18.2.0):
+ resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ dependencies:
+ '@babel/runtime': 7.23.2
+ '@types/react': 18.2.8
+ react: 18.2.0
+ dev: false
+
/@radix-ui/react-use-rect@1.0.1(@types/react@18.2.8)(react@18.2.0):
resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==}
peerDependencies:
@@ -2923,6 +2973,12 @@ packages:
redux: 4.2.1
dev: false
+ /@types/react-transition-group@4.4.10:
+ resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==}
+ dependencies:
+ '@types/react': 18.2.8
+ dev: true
+
/@types/react@18.2.8:
resolution: {integrity: sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==}
dependencies:
@@ -3606,6 +3662,13 @@ packages:
esutils: 2.0.3
dev: true
+ /dom-helpers@5.2.1:
+ resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==}
+ dependencies:
+ '@babel/runtime': 7.23.2
+ csstype: 3.1.2
+ dev: false
+
/electron-to-chromium@1.4.553:
resolution: {integrity: sha512-HiRdtyKS2+VhiXvjhMvvxiMC33FJJqTA5EB2YHgFZW6v7HkK4Q9Ahv2V7O2ZPgAjw+MyCJVMQvigj13H8t+wvA==}
@@ -5561,6 +5624,20 @@ packages:
tslib: 2.6.2
dev: false
+ /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0):
+ resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+ dependencies:
+ '@babel/runtime': 7.23.2
+ dom-helpers: 5.2.1
+ loose-envify: 1.4.0
+ prop-types: 15.8.1
+ react: 18.2.0
+ react-dom: 18.2.0(react@18.2.0)
+ dev: false
+
/react-youtube@10.1.0(react@18.2.0):
resolution: {integrity: sha512-ZfGtcVpk0SSZtWCSTYOQKhfx5/1cfyEW1JN/mugGNfAxT3rmVJeMbGpA9+e78yG21ls5nc/5uZJETE3cm3knBg==}
engines: {node: '>= 14.x'}