Compare commits

...

111 Commits

Author SHA1 Message Date
Jannat Patel 0e015c8b97 chore: Indonesian translations 2025-08-03 04:35:30 +05:30
Jannat Patel 36076068ec fix: text padding on card gradient 2025-07-30 12:30:12 +05:30
Frappe PR Bot c868354b5b chore(release): Bumped to Version 2.33.0 2025-07-30 06:14:36 +00:00
Jannat Patel db91f0b2a0 Merge pull request #1663 from pateljannat/issues-125
fix: show video statistics watch time in minutes
2025-07-30 11:43:01 +05:30
Jannat Patel d7e83bb78e fix: show video statistics watch time in minutes 2025-07-30 11:30:17 +05:30
Jannat Patel feb2a39e05 Merge pull request #1661 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-30 10:53:15 +05:30
Jannat Patel a6cf910d05 chore: Esperanto translations 2025-07-30 04:23:56 +05:30
Jannat Patel b891b44ac6 chore: Spanish translations 2025-07-30 04:23:54 +05:30
Jannat Patel 026a3ebb81 chore: Serbian (Latin) translations 2025-07-30 04:23:53 +05:30
Jannat Patel 71ba246011 chore: Bosnian translations 2025-07-30 04:23:51 +05:30
Jannat Patel a391204fa6 chore: Croatian translations 2025-07-30 04:23:49 +05:30
Jannat Patel 9c773399a8 chore: Thai translations 2025-07-30 04:23:48 +05:30
Jannat Patel 528b85352a chore: Persian translations 2025-07-30 04:23:47 +05:30
Jannat Patel 249c369c14 chore: Indonesian translations 2025-07-30 04:23:45 +05:30
Jannat Patel 9803fc1031 chore: Portuguese, Brazilian translations 2025-07-30 04:23:44 +05:30
Jannat Patel 299fde1c98 chore: Vietnamese translations 2025-07-30 04:23:43 +05:30
Jannat Patel 7f55734fbb chore: Chinese Simplified translations 2025-07-30 04:23:41 +05:30
Jannat Patel efe230865a chore: Turkish translations 2025-07-30 04:23:40 +05:30
Jannat Patel 6e52e684c8 chore: Swedish translations 2025-07-30 04:23:38 +05:30
Jannat Patel 99d880297a chore: Serbian (Cyrillic) translations 2025-07-30 04:23:36 +05:30
Jannat Patel dec706ae72 chore: Russian translations 2025-07-30 04:23:35 +05:30
Jannat Patel 2e60f0a0c2 chore: Portuguese translations 2025-07-30 04:23:34 +05:30
Jannat Patel ef612f86e5 chore: Polish translations 2025-07-30 04:23:32 +05:30
Jannat Patel 9c16e03ea7 chore: Dutch translations 2025-07-30 04:23:31 +05:30
Jannat Patel 7780c0310e chore: Italian translations 2025-07-30 04:23:29 +05:30
Jannat Patel b0a23c0d1a chore: Hungarian translations 2025-07-30 04:23:27 +05:30
Jannat Patel 05c85cea08 chore: German translations 2025-07-30 04:23:26 +05:30
Jannat Patel 1ffae0a1de chore: Czech translations 2025-07-30 04:23:24 +05:30
Jannat Patel 15cbccd15f chore: Arabic translations 2025-07-30 04:23:23 +05:30
Jannat Patel 266b2f2ac8 chore: French translations 2025-07-30 04:23:21 +05:30
Jannat Patel 26f9fb4199 Merge pull request #1658 from frappe/pot_develop_2025-07-25
chore: update POT file
2025-07-29 12:05:37 +05:30
frappe-pr-bot 67887fb6ef chore: update POT file 2025-07-25 16:04:39 +00:00
Jannat Patel 3d102e39ff Merge pull request #1657 from pateljannat/course-card-gradient
feat: course card gradient
2025-07-25 18:56:50 +05:30
Jannat Patel ddd9089130 fix: color swatch input style 2025-07-25 18:31:46 +05:30
Jannat Patel d8ce88ab57 fix: color swatch input style 2025-07-25 18:30:58 +05:30
Jannat Patel 01794a47c6 feat: set a random color is no color or image is present 2025-07-25 17:46:50 +05:30
Jannat Patel 17626dbbdb feat: course card gradient 2025-07-25 17:29:48 +05:30
Jannat Patel e5bd86658d Merge pull request #1655 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-24 10:41:13 +05:30
Jannat Patel e911dc1353 chore: Thai translations 2025-07-24 02:45:56 +05:30
Jannat Patel 27e3e5aa6a chore: Indonesian translations 2025-07-24 02:45:53 +05:30
Jannat Patel 5b65525bf1 chore: Portuguese translations 2025-07-24 02:45:46 +05:30
Jannat Patel 277804f8b1 chore: Hungarian translations 2025-07-24 02:45:42 +05:30
Jannat Patel 4c77802e3c Merge pull request #1653 from pateljannat/issues-124
fix: progress timer in lessons
2025-07-23 11:32:51 +05:30
Jannat Patel aacfea6ea5 fix: progress timer in lessons 2025-07-23 11:31:41 +05:30
Frappe PR Bot 6d55040e43 chore(release): Bumped to Version 2.32.2 2025-07-23 05:31:05 +00:00
Jannat Patel 290f785a47 Merge pull request #1651 from pateljannat/issues-123
fix: vimeo video embed with plyr
2025-07-23 11:00:03 +05:30
Jannat Patel 39ef187f6b fix: vimeo video embed with plyr 2025-07-23 10:44:53 +05:30
Frappe PR Bot a7a475e763 chore(release): Bumped to Version 2.32.1 2025-07-22 13:31:38 +00:00
Jannat Patel 6eb380ea38 Merge pull request #1648 from pateljannat/issues-122
fix: play embed videos on Lesson Form
2025-07-22 14:20:42 +05:30
Jannat Patel 4d150cb323 fix: play embed videos on Lesson Form 2025-07-22 14:11:29 +05:30
Jannat Patel 09d6d99b14 Merge pull request #1647 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-22 10:24:07 +05:30
Jannat Patel 5e7fd8baff chore: Esperanto translations 2025-07-22 02:06:41 +05:30
Jannat Patel 52c159e2e8 chore: French translations 2025-07-22 02:06:40 +05:30
Jannat Patel 67e8feb879 chore: Serbian (Latin) translations 2025-07-22 02:06:38 +05:30
Jannat Patel a5b61d5244 chore: Bosnian translations 2025-07-22 02:06:37 +05:30
Jannat Patel decc3a16ed chore: Croatian translations 2025-07-22 02:06:35 +05:30
Jannat Patel 7f39e9f0cc chore: Thai translations 2025-07-22 02:06:34 +05:30
Jannat Patel 95afa1a6ad chore: Persian translations 2025-07-22 02:06:32 +05:30
Jannat Patel 0d0bb5f9e2 chore: Portuguese, Brazilian translations 2025-07-22 02:06:31 +05:30
Jannat Patel 3dd5ce5035 chore: Vietnamese translations 2025-07-22 02:06:29 +05:30
Jannat Patel 549e56d551 chore: Chinese Simplified translations 2025-07-22 02:06:28 +05:30
Jannat Patel 50b6215d1e chore: Turkish translations 2025-07-22 02:06:27 +05:30
Jannat Patel ff69bfdce7 chore: Swedish translations 2025-07-22 02:06:25 +05:30
Jannat Patel c04cc8ec0f chore: Serbian (Cyrillic) translations 2025-07-22 02:06:24 +05:30
Jannat Patel f324de2254 chore: Russian translations 2025-07-22 02:06:22 +05:30
Jannat Patel 40af4e6f34 chore: Portuguese translations 2025-07-22 02:06:21 +05:30
Jannat Patel 5d9b66b5cb chore: Polish translations 2025-07-22 02:06:20 +05:30
Jannat Patel d2a8277c13 chore: Dutch translations 2025-07-22 02:06:18 +05:30
Jannat Patel ada85fc0f3 chore: Italian translations 2025-07-22 02:06:17 +05:30
Jannat Patel 505345eff7 chore: Hungarian translations 2025-07-22 02:06:15 +05:30
Jannat Patel 2911ade880 chore: German translations 2025-07-22 02:06:14 +05:30
Jannat Patel 8980dc8f9c chore: Czech translations 2025-07-22 02:06:12 +05:30
Jannat Patel d94a1c47c0 chore: Arabic translations 2025-07-22 02:06:11 +05:30
Jannat Patel 99c3e5182d chore: Spanish translations 2025-07-22 02:06:09 +05:30
Jannat Patel 70e39fee40 Merge pull request #1646 from frappe/pot_develop_2025-07-18
chore: update POT file
2025-07-21 19:30:03 +05:30
frappe-pr-bot 26d6bec8a0 chore: update POT file 2025-07-18 16:05:11 +00:00
Jannat Patel c9ac1a1402 Merge pull request #1645 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-18 10:38:18 +05:30
Jannat Patel 6949c1092c chore: Persian translations 2025-07-18 01:39:51 +05:30
Jannat Patel aae8a54481 Merge pull request #1644 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-17 10:26:39 +05:30
Jannat Patel e1d93bf670 chore: Serbian (Latin) translations 2025-07-17 01:24:47 +05:30
Jannat Patel fea0533cb1 chore: Chinese Simplified translations 2025-07-17 01:24:40 +05:30
Jannat Patel 5cd991f02a chore: Swedish translations 2025-07-17 01:24:37 +05:30
Jannat Patel 50a8a605d5 chore: Serbian (Cyrillic) translations 2025-07-17 01:24:36 +05:30
Jannat Patel 9ce7d8f5d6 Merge pull request #1641 from pateljannat/issues-121
chore: upgraded frappe-ui
2025-07-15 15:39:48 +05:30
Jannat Patel eae2587e4c chore: upgraded frappe-ui 2025-07-15 15:08:32 +05:30
Jannat Patel 323097f201 Merge pull request #1639 from frappe/l10n_develop2
chore: sync translations from crowdin
2025-07-15 09:44:54 +05:30
Jannat Patel 014499888a chore: Esperanto translations 2025-07-15 01:33:53 +05:30
Jannat Patel 5662de21ae chore: Serbian (Latin) translations 2025-07-15 01:33:52 +05:30
Jannat Patel 17c2eba455 chore: Bosnian translations 2025-07-15 01:33:50 +05:30
Jannat Patel 1f2c986e8f chore: Croatian translations 2025-07-15 01:33:49 +05:30
Jannat Patel 12040b5f6d chore: Thai translations 2025-07-15 01:33:47 +05:30
Jannat Patel 20a985848f chore: Portuguese, Brazilian translations 2025-07-15 01:33:46 +05:30
Jannat Patel c06c6169e5 chore: Vietnamese translations 2025-07-15 01:33:44 +05:30
Jannat Patel 917aeb79ef chore: Turkish translations 2025-07-15 01:33:43 +05:30
Jannat Patel c4f36a39fe chore: Swedish translations 2025-07-15 01:33:42 +05:30
Jannat Patel befedc30ad chore: Serbian (Cyrillic) translations 2025-07-15 01:33:40 +05:30
Jannat Patel d3bc67daa2 chore: Russian translations 2025-07-15 01:33:39 +05:30
Jannat Patel 5d7e211367 chore: Polish translations 2025-07-15 01:33:37 +05:30
Jannat Patel fa9daa01ec chore: Dutch translations 2025-07-15 01:33:36 +05:30
Jannat Patel 0ed9dc63b8 chore: Italian translations 2025-07-15 01:33:34 +05:30
Jannat Patel 5dd6b33eb2 chore: Hungarian translations 2025-07-15 01:33:33 +05:30
Jannat Patel 1210b823c7 chore: German translations 2025-07-15 01:33:32 +05:30
Jannat Patel 04240b4b3d chore: Czech translations 2025-07-15 01:33:30 +05:30
Jannat Patel 787f592a1a chore: Arabic translations 2025-07-15 01:33:29 +05:30
Jannat Patel e7363fbd40 chore: Spanish translations 2025-07-15 01:33:27 +05:30
Jannat Patel e2762825e5 chore: French translations 2025-07-15 01:33:25 +05:30
Jannat Patel bbbca70c71 chore: Chinese Simplified translations 2025-07-15 01:33:24 +05:30
Jannat Patel 8dde423866 chore: Persian translations 2025-07-15 01:33:23 +05:30
Jannat Patel fc4c1c2b7e chore: Portuguese translations 2025-07-15 01:33:21 +05:30
Jannat Patel bf02e2de3f Merge pull request #1637 from pateljannat/issues-120
fix: increase pageLength for evaluation schedule
2025-07-14 16:57:09 +05:30
Jannat Patel a26ba4dc6e fix: increase pageLength for evaluation schedule 2025-07-14 16:33:11 +05:30
52 changed files with 18349 additions and 3649 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
name: Create weekly release
on:
schedule:
- cron: '30 4 15 * *'
- cron: '30 3 * * 3'
workflow_dispatch:
jobs:
+1 -1
View File
@@ -107,7 +107,7 @@ describe("Course Creation", () => {
cy.get("div").contains(
"Test Course Short Introduction to test the UI"
);
cy.get(".course-image")
cy.get(".bg-cover")
.invoke("css", "background-image")
.should("include", "/files/profile");
});
+1
View File
@@ -40,6 +40,7 @@ declare module 'vue' {
Code: typeof import('./src/components/Controls/Code.vue')['default']
CodeEditor: typeof import('./src/components/Controls/CodeEditor.vue')['default']
CollapseSidebar: typeof import('./src/components/Icons/CollapseSidebar.vue')['default']
ColorSwatches: typeof import('./src/components/Controls/ColorSwatches.vue')['default']
CourseCard: typeof import('./src/components/CourseCard.vue')['default']
CourseCardOverlay: typeof import('./src/components/CourseCardOverlay.vue')['default']
CourseInstructors: typeof import('./src/components/CourseInstructors.vue')['default']
+1 -1
View File
@@ -31,7 +31,7 @@
"codemirror": "^6.0.1",
"dayjs": "^1.11.6",
"feather-icons": "^4.28.0",
"frappe-ui": "^0.1.163",
"frappe-ui": "^0.1.172",
"highlight.js": "^11.11.1",
"lucide-vue-next": "^0.383.0",
"markdown-it": "^14.0.0",
+17
View File
@@ -344,6 +344,22 @@ const addAssignments = () => {
}
}
const addProgrammingExercises = () => {
if (isInstructor.value || isModerator.value) {
sidebarLinks.value.splice(3, 0, {
label: 'Programming Exercises',
icon: 'Code',
to: 'ProgrammingExercises',
activeFor: [
'ProgrammingExercises',
'ProgrammingExerciseForm',
'ProgrammingExerciseSubmissions',
'ProgrammingExerciseSubmission',
],
})
}
}
const addPrograms = () => {
let activeFor = ['Programs', 'ProgramForm']
let index = 1
@@ -627,6 +643,7 @@ watch(userResource, () => {
isModerator.value = userResource.data.is_moderator
isInstructor.value = userResource.data.is_instructor
addPrograms()
addProgrammingExercises()
addQuizzes()
addAssignments()
setUpOnboarding()
@@ -0,0 +1,108 @@
<template>
<div>
<div class="text-xs text-ink-gray-5 mb-1">
{{ __(label) }}
</div>
<Popover placement="bottom" class="!block">
<template #target="{ togglePopover, isOpen }">
<div class="space-y-2">
<FormControl
type="text"
autocomplete="off"
class="w-full"
:placeholder="__('Set Color')"
@focus="togglePopover"
:modelValue="modelValue"
@update:modelValue="(val: string) => emit('update:modelValue', val)"
>
<template #prefix>
<div
class="size-4 rounded-full"
:style="
modelValue
? {
backgroundColor:
theme.backgroundColor[modelValue.toLowerCase()][400],
}
: {}
"
>
<Palette
v-if="!modelValue"
class="size-4 stroke-1.5 text-ink-gray-5"
/>
</div>
</template>
<template #suffix>
<Button variant="ghost">
<X
class="size-3 text-ink-gray-5"
@click="emit('update:modelValue', null)"
/>
</Button>
</template>
</FormControl>
</div>
</template>
<template #body="{ close }">
<div class="rounded-lg bg-surface-white p-3 border w-fit mt-2">
<div class="text-xs text-ink-gray-5 mb-1.5">
{{ __('Swatches') }}
</div>
<div class="grid grid-cols-7 gap-2">
<div
v-for="color in colors"
:key="color"
class="size-5 rounded-full cursor-pointer"
:style="{
backgroundColor:
theme.backgroundColor[color.toLowerCase()][400],
}"
@click="
(e) => {
emit('update:modelValue', color)
close()
emit('change', color)
}
"
></div>
</div>
</div>
</template>
</Popover>
<div class="text-sm text-ink-gray-5 mt-2">
{{ description }}
</div>
</div>
</template>
<script setup lang="ts">
import { Button, FormControl, Popover } from 'frappe-ui'
import { computed } from 'vue'
import { Palette, X } from 'lucide-vue-next'
import { theme } from '@/utils/theme'
const emit = defineEmits(['update:modelValue', 'change'])
const props = defineProps<{
modelValue: string
label: string
description?: string
}>()
const colors = computed(() => {
return [
'Red',
'Blue',
'Green',
'Amber',
'Purple',
'Cyan',
'Orange',
'Violet',
'Pink',
'Teal',
'Gray',
'Yellow',
]
})
</script>
+59 -57
View File
@@ -1,41 +1,51 @@
<template>
<div
v-if="course.title"
class="flex flex-col h-full rounded-md border-2 overflow-auto"
class="flex flex-col h-full rounded-md border-2 overflow-auto text-ink-gray-9"
style="min-height: 350px"
>
<div
class="course-image"
:class="{ 'default-image': !course.image }"
:style="{ backgroundImage: 'url(\'' + encodeURI(course.image) + '\')' }"
class="w-[100%] h-[168px] bg-cover bg-center bg-no-repeat"
:style="
course.image
? { backgroundImage: `url('${encodeURI(course.image)}')` }
: {
backgroundImage: getGradientColor(),
backgroundBlendMode: 'screen',
}
"
>
<div class="flex items-center flex-wrap relative top-4 px-2 w-fit">
<Badge
<div
v-if="course.featured"
variant="subtle"
theme="green"
size="md"
class="mb-1 mr-1"
class="flex items-center space-x-1 text-xs text-ink-amber-3 bg-surface-white border border-outline-amber-1 px-2 py-0.5 rounded-md mr-1 mb-1"
>
{{ __('Featured') }}
</Badge>
<Star class="size-3 stroke-2" />
<span>
{{ __('Featured') }}
</span>
</div>
<div
v-if="course.tags"
v-for="tag in course.tags?.split(', ')"
class="text-xs bg-white text-gray-800 px-2 py-0.5 rounded-md mb-1 mr-1"
class="text-xs border bg-surface-white text-ink-gray-9 px-2 py-0.5 rounded-md mb-1 mr-1"
>
{{ tag }}
</div>
</div>
<div v-if="!course.image" class="image-placeholder">
{{ course.title[0] }}
<div
v-if="!course.image"
class="flex items-center justify-center text-white flex-1 font-extrabold text-2xl my-auto px-5 text-center leading-6"
:class="course.tags ? 'h-[80%]' : 'h-full'"
>
{{ course.title }}
</div>
</div>
<div class="flex flex-col flex-auto p-4">
<div class="flex items-center justify-between mb-2">
<div v-if="course.lessons">
<Tooltip :text="__('Lessons')">
<span class="flex items-center text-ink-gray-7">
<span class="flex items-center">
<BookOpen class="h-4 w-4 stroke-1.5 mr-1" />
{{ course.lessons }}
</span>
@@ -44,8 +54,8 @@
<div v-if="course.enrollments">
<Tooltip :text="__('Enrolled Students')">
<span class="flex items-center text-ink-gray-7">
<Users class="h-4 w-4 stroke-1. mr-1" />
<span class="flex items-center">
<Users class="h-4 w-4 stroke-1.5 mr-1" />
{{ course.enrollments }}
</span>
</Tooltip>
@@ -53,14 +63,14 @@
<div v-if="course.rating">
<Tooltip :text="__('Average Rating')">
<span class="flex items-center text-ink-gray-7">
<span class="flex items-center">
<Star class="h-4 w-4 stroke-1.5 mr-1" />
{{ course.rating }}
</span>
</Tooltip>
</div>
<div v-if="course.status != 'Approved'">
<!-- <div v-if="course.status != 'Approved'">
<Badge
variant="subtle"
:theme="course.status === 'Under Review' ? 'orange' : 'blue'"
@@ -68,14 +78,14 @@
>
{{ course.status }}
</Badge>
</div>
</div> -->
</div>
<div class="text-xl font-semibold leading-6 text-ink-gray-9">
<div v-if="course.image" class="text-xl font-semibold leading-6">
{{ course.title }}
</div>
<div class="short-introduction text-ink-gray-7 text-sm">
<div class="short-introduction text-sm">
{{ course.short_introduction }}
</div>
@@ -84,11 +94,8 @@
:progress="course.membership.progress"
/>
<div
v-if="user && course.membership"
class="text-sm text-ink-gray-7 mt-2 mb-4"
>
{{ Math.ceil(course.membership.progress) }}% completed
<div v-if="user && course.membership" class="text-sm mt-2 mb-4">
{{ Math.ceil(course.membership.progress) }}% {{ __('completed') }}
</div>
<div class="flex items-center justify-between mt-auto">
@@ -108,21 +115,23 @@
<div v-if="course.paid_course" class="font-semibold">
{{ course.price }}
</div>
<div
<Tooltip
v-if="course.paid_certificate || course.enable_certification"
class="text-xs text-ink-blue-3 bg-surface-blue-1 py-0.5 px-1 rounded-md"
:text="__('Get Certified')"
>
{{ __('Certification') }}
</div>
<GraduationCap class="size-5 stroke-1.5 text-ink-gray-7" />
</Tooltip>
</div>
</div>
</div>
</template>
<script setup>
import { BookOpen, Users, Star } from 'lucide-vue-next'
import { BookOpen, GraduationCap, Star, Users } from 'lucide-vue-next'
import UserAvatar from '@/components/UserAvatar.vue'
import { sessionStore } from '@/stores/session'
import { Badge, Tooltip } from 'frappe-ui'
import { Tooltip } from 'frappe-ui'
import { theme } from '@/utils/theme'
import CourseInstructors from '@/components/CourseInstructors.vue'
import ProgressBar from '@/components/ProgressBar.vue'
@@ -134,16 +143,24 @@ const props = defineProps({
default: null,
},
})
const getGradientColor = () => {
let color = props.course.card_gradient?.toLowerCase() || 'blue'
let colorMap = theme.backgroundColor[color]
return `linear-gradient(to top right, black, ${colorMap[400]})`
/* return `bg-gradient-to-br from-${color}-100 via-${color}-200 to-${color}-400` */
/* return `linear-gradient(to bottom right, ${colorMap[100]}, ${colorMap[400]})` */
/* return `radial-gradient(ellipse at 80% 20%, black 20%, ${colorMap[500]} 100%)` */
/* return `radial-gradient(ellipse at 30% 70%, black 50%, ${colorMap[500]} 100%)` */
/* return `radial-gradient(ellipse at 80% 20%, ${colorMap[100]} 0%, ${colorMap[300]} 50%, ${colorMap[500]} 100%)` */
/* return `conic-gradient(from 180deg at 50% 50%, ${colorMap[100]} 0%, ${colorMap[200]} 50%, ${colorMap[400]} 100%)` */
/* return `linear-gradient(135deg, ${colorMap[100]}, ${colorMap[300]}), linear-gradient(120deg, rgba(255,255,255,0.4) 0%, transparent 60%) ` */
/* return `radial-gradient(circle at 20% 30%, ${colorMap[100]} 0%, transparent 40%),
radial-gradient(circle at 80% 40%, ${colorMap[200]} 0%, transparent 50%),
linear-gradient(135deg, ${colorMap[300]} 0%, ${colorMap[400]} 100%);` */
}
</script>
<style>
.course-image {
height: 168px;
width: 100%;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
.course-card-pills {
background: #ffffff;
margin-left: 0;
@@ -157,14 +174,6 @@ const props = defineProps({
width: fit-content;
}
.default-image {
display: flex;
flex-direction: column;
align-items: center;
background-color: theme('colors.green.100');
color: theme('colors.green.600');
}
.avatar-group {
display: inline-flex;
align-items: center;
@@ -173,14 +182,7 @@ const props = defineProps({
.avatar-group .avatar {
transition: margin 0.1s ease-in-out;
}
.image-placeholder {
display: flex;
align-items: center;
flex: 1;
font-size: 5rem;
color: theme('colors.gray.700');
font-weight: 600;
}
.avatar-group.overlap .avatar + .avatar {
margin-left: calc(-8px);
}
@@ -1,5 +1,5 @@
<template>
<div class="text-ink-gray-7">
<div class="">
<span v-if="instructors?.length == 1">
<router-link
:to="{
@@ -19,7 +19,7 @@
>
{{ instructors[0].first_name }}
</router-link>
and
{{ __('and') }}
<router-link
:to="{
name: 'Profile',
@@ -38,7 +38,7 @@
>
{{ instructors[0].first_name }}
</router-link>
and {{ instructors?.length - 1 }} others
{{ __('and') }} {{ instructors?.length - 1 }} {{ __('others') }}
</span>
</div>
</template>
@@ -15,7 +15,7 @@
</div> -->
<FormControl
v-model="searchFilter"
:placeholder="__('Search by Member Name')"
:placeholder="__('Search by Member')"
type="text"
class="w-full"
/>
@@ -149,6 +149,10 @@ import { theme } from '@/utils/theme'
const show = defineModel<boolean | undefined>()
const searchFilter = ref<string | null>(null)
type Filters = {
course: string | undefined
member_name?: string[]
}
const props = defineProps<{
courseName?: string
@@ -184,10 +188,6 @@ const progressList = createListResource({
watch([searchFilter], () => {
let filterApplied = false
type Filters = {
course: string | undefined
member_name?: string[]
}
let filters: Filters = {
course: props.courseName,
}
@@ -8,13 +8,20 @@
>
<template #body-content>
<div class="text-base">
<TabButtons
v-if="tabs.length > 1"
:buttons="tabs"
v-model="currentTab"
class="w-fit"
/>
<div v-if="currentTab" class="mt-8">
<div class="flex items-center justify-between">
<TabButtons
v-if="tabs.length > 1"
:buttons="tabs"
v-model="currentTab"
class="w-fit"
/>
<!-- <FormControl
v-model="searchText"
:placeholder="__('Search by Member')"
class="mt-2 mr-5 w-[25%]"
/> -->
</div>
<div v-if="currentTab" class="mt-4">
<div class="grid grid-cols-[55%,40%] gap-5">
<div class="space-y-5 border rounded-md p-2 pt-4">
<div class="grid grid-cols-[70%,30%] text-sm text-ink-gray-5">
@@ -52,7 +59,7 @@
</div>
</div>
<div class="text-center text-sm">
{{ parseFloat(row.watch_time).toFixed(2) }}
{{ convertToMinutes(row.watch_time) }}
</div>
</div>
</router-link>
@@ -62,7 +69,7 @@
<NumberChart
class="border rounded-md"
:config="{
title: __('Average Watch Time (seconds)'),
title: __('Average Watch Time (minutes)'),
value: averageWatchTime,
}"
/>
@@ -73,6 +80,9 @@
</div>
</div>
</div>
<div v-else class="text-sm text-ink-gray-5">
{{ __('No statistics available for this video.') }}
</div>
</div>
</template>
</Dialog>
@@ -82,15 +92,21 @@ import {
Avatar,
createListResource,
Dialog,
FormControl,
NumberChart,
TabButtons,
} from 'frappe-ui'
import { computed, ref, watch } from 'vue'
import { enablePlyr } from '@/utils'
import { enablePlyr, convertToMinutes } from '@/utils'
import VideoBlock from '@/components/VideoBlock.vue'
const show = defineModel<boolean | undefined>()
const currentTab = ref<string>('')
const searchText = ref<string>('')
type Filters = {
lesson: string | undefined
member_name?: string[]
}
const props = defineProps<{
lessonName?: string
@@ -127,6 +143,24 @@ watch(
}
)
watch(searchText, () => {
let filterApplied = false
let filters: Filters = {
lesson: props.lessonName,
}
if (searchText.value) {
filters.member_name = ['like', `%${searchText.value}%`]
filterApplied = true
}
statistics.update({
filters: filters,
})
statistics.reload({})
})
watch(show, () => {
if (show.value) {
enablePlyr()
@@ -151,7 +185,7 @@ const averageWatchTime = computed(() => {
totalWatchTime += parseFloat(item.watch_time)
})
return totalWatchTime / currentTabData.value.length
return convertToMinutes(totalWatchTime / currentTabData.value.length)
})
const currentTabData = computed(() => {
@@ -132,6 +132,7 @@ const participants = createListResource({
doctype: 'LMS Certificate',
url: 'lms.lms.api.get_certified_participants',
start: 0,
cache: ['certified_participants'],
pageLength: 100,
})
+32 -25
View File
@@ -47,9 +47,16 @@
:required="true"
/>
<div>
<div class="mb-1.5 text-xs text-ink-gray-5">
<div class="text-xs text-ink-gray-5">
{{ __('Tags') }}
</div>
<FormControl
v-model="newTag"
:placeholder="__('Add a keyword and then press enter')"
:class="['w-full', 'flex-1', 'my-1']"
@keyup.enter="updateTags()"
id="tags"
/>
<div>
<div class="flex items-center flex-wrap gap-2">
<div
@@ -64,37 +71,13 @@
/>
</div>
</div>
<FormControl
v-model="newTag"
:placeholder="__('Add a keyword and then press enter')"
:class="[
'w-full',
'flex-1',
{ 'mt-2': course.tags?.length },
]"
@keyup.enter="updateTags()"
id="tags"
/>
</div>
</div>
</div>
<div class="grid grid-cols-2 gap-5">
<FormControl
v-model="course.short_introduction"
type="textarea"
:rows="5"
:label="__('Short Introduction')"
:placeholder="
__(
'A one line introduction to the course that appears on the course card'
)
"
:required="true"
/>
<div class="mb-4">
<div class="text-xs text-ink-gray-5 mb-2">
{{ __('Course Image') }}
<span class="text-ink-red-3">*</span>
</div>
<FileUploader
v-if="!course.course_image"
@@ -144,6 +127,13 @@
</div>
</div>
</div>
<ColorSwatches
v-model="course.card_gradient"
:label="__('Color')"
:description="__('Choose a color for the course card')"
class="w-full"
/>
</div>
</div>
@@ -185,6 +175,21 @@
</div>
<div class="px-10 pb-5 mb-5 space-y-5 border-b">
<div class="text-lg font-semibold">
{{ __('About the Course') }}
</div>
<FormControl
v-model="course.short_introduction"
type="textarea"
:rows="5"
:label="__('Short Introduction')"
:placeholder="
__(
'A one line introduction to the course that appears on the course card'
)
"
:required="true"
/>
<div class="">
<div class="mb-1.5 text-sm text-ink-gray-5">
{{ __('Course Description') }}
@@ -342,6 +347,7 @@ import {
import Link from '@/components/Controls/Link.vue'
import CourseOutline from '@/components/CourseOutline.vue'
import MultiSelect from '@/components/Controls/MultiSelect.vue'
import ColorSwatches from '@/components/Controls/ColorSwatches.vue'
const user = inject('$user')
const newTag = ref('')
@@ -365,6 +371,7 @@ const course = reactive({
description: '',
video_link: '',
course_image: null,
card_gradient: '',
tags: '',
category: '',
published: false,
+1 -1
View File
@@ -57,7 +57,7 @@
</div>
<div
v-if="courses.data?.length"
class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-5"
class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-8"
>
<router-link
v-for="course in courses.data"
+1 -1
View File
@@ -604,7 +604,7 @@ const updateVideoTime = (video) => {
}
const startTimer = () => {
timerInterval = setInterval(() => {
let timerInterval = setInterval(() => {
timer.value++
if (timer.value == 30) {
clearInterval(timerInterval)
-11
View File
@@ -714,17 +714,6 @@ iframe {
width: 100%;
}
.cdx-block.embed-tool::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: transparent;
z-index: 1000;
}
:root {
--plyr-range-fill-background: white;
--plyr-video-control-background-hover: transparent;
@@ -77,7 +77,7 @@ const evaluations = createListResource({
],
auto: true,
orderBy: 'creation desc',
limit: 100,
pageLength: 500,
cache: ['schedule', user.data?.name],
transform(data) {
return data.map((d) => {
+7 -13
View File
@@ -420,17 +420,6 @@ export function getSidebarLinks() {
to: 'Batches',
activeFor: ['Batches', 'BatchDetail', 'Batch', 'BatchForm'],
},
{
label: 'Programming Exercises',
icon: 'Code',
to: 'ProgrammingExercises',
activeFor: [
'ProgrammingExercises',
'ProgrammingExerciseForm',
'ProgrammingExerciseSubmissions',
'ProgrammingExerciseSubmission',
],
},
{
label: 'Certified Members',
icon: 'GraduationCap',
@@ -551,11 +540,10 @@ export const enablePlyr = async () => {
const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
const setupPlyrForVideo = (video, players) => {
const src = video.getAttribute('src') || video.getAttribute('data-src')
const src = video.getAttribute('src')
if (src) {
const videoID = extractYouTubeId(src)
video.setAttribute('data-plyr-provider', 'youtube')
video.setAttribute('data-plyr-embed-id', videoID)
}
@@ -679,3 +667,9 @@ export const formatTimestamp = (seconds) => {
const secs = String(date.getUTCSeconds()).padStart(2, '0')
return `${minutes}:${secs}`
}
export const convertToMinutes = (seconds) => {
const minutes = Math.floor(seconds / 60)
const remainingSeconds = Math.round(seconds % 60)
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`
}
+1
View File
@@ -39,6 +39,7 @@ export default defineConfig({
'showdown',
'engine.io-client',
'tailwind.config.js',
'interactjs',
'highlight.js',
'plyr',
],
+336 -295
View File
@@ -38,9 +38,9 @@
"@babel/types" "^7.28.0"
"@babel/types@^7.28.0":
version "7.28.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.0.tgz#2fd0159a6dc7353933920c43136335a9b264d950"
integrity sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==
version "7.28.1"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9"
integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==
dependencies:
"@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1"
@@ -161,9 +161,9 @@
"@marijn/find-cluster-break" "^1.0.0"
"@codemirror/view@6.x", "@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0":
version "6.38.0"
resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.38.0.tgz#4486062b791a4247793e0953e05ae71a9e172217"
integrity sha512-yvSchUwHOdupXkd7xJ0ob36jdsSR/I+/C+VbY0ffBiL5NiSTEBDfB1ZGWbbIlDd5xgdUkody+lukAdOxYrOBeg==
version "6.38.1"
resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.38.1.tgz#74214434351719ec0710431363a85f7a01e80a73"
integrity sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==
dependencies:
"@codemirror/state" "^6.5.0"
crelt "^1.0.6"
@@ -386,7 +386,7 @@
dependencies:
"@floating-ui/utils" "^0.2.10"
"@floating-ui/dom@^1.6.13", "@floating-ui/dom@^1.6.7", "@floating-ui/dom@^1.7.2":
"@floating-ui/dom@^1.6.13", "@floating-ui/dom@^1.6.7", "@floating-ui/dom@^1.7.0", "@floating-ui/dom@^1.7.2":
version "1.7.2"
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.2.tgz#3540b051cf5ce0d4f4db5fb2507a76e8ea5b4a45"
integrity sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==
@@ -434,6 +434,11 @@
local-pkg "^1.0.0"
mlly "^1.7.4"
"@interactjs/types@1.10.27":
version "1.10.27"
resolved "https://registry.yarnpkg.com/@interactjs/types/-/types-1.10.27.tgz#10afd71cef2498e2b5192cf0d46f937d8ceb767f"
integrity sha512-BUdv0cvs4H5ODuwft2Xp4eL8Vmi3LcihK42z0Ft/FbVJZoRioBsxH+LlsBdK4tAie7PqlKGy+1oyOncu1nQ6eA==
"@internationalized/date@^3.5.0", "@internationalized/date@^3.5.4":
version "3.8.2"
resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.8.2.tgz#977620c1407cc6830fd44cb505679d23c599e119"
@@ -486,6 +491,11 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@juggle/resize-observer@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@juggle/resize-observer/-/resize-observer-3.4.0.tgz#08d6c5e20cf7e4cc02fd181c4b0c225cd31dbb60"
integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==
"@kurkle/color@^0.3.0":
version "0.3.4"
resolved "https://registry.yarnpkg.com/@kurkle/color/-/color-0.3.4.tgz#4d4ff677e1609214fc71c580125ddddd86abcabf"
@@ -497,9 +507,9 @@
integrity sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==
"@lezer/css@^1.1.0", "@lezer/css@^1.1.7":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.2.1.tgz#b35f6d0459e9be4de1cdf4d3132a59efd7cf2ba3"
integrity sha512-2F5tOqzKEKbCUNraIXc0f6HKeyKlmMWJnBB0i4XW6dJgssrZO/YlZ2pY5xgyqDleqqhiNJ3dQhbrV2aClZQMvg==
version "1.3.0"
resolved "https://registry.yarnpkg.com/@lezer/css/-/css-1.3.0.tgz#296f298814782c2fad42a936f3510042cdcd2034"
integrity sha512-pBL7hup88KbI7hXnZV3PQsn43DHy6TWyzuyk2AO9UyoXcDltvIdqWKE1dLL/45JVZ+YZkHe1WVHqO6wugZZWcw==
dependencies:
"@lezer/common" "^1.2.0"
"@lezer/highlight" "^1.0.0"
@@ -596,105 +606,105 @@
resolved "https://registry.yarnpkg.com/@remirror/core-constants/-/core-constants-3.0.0.tgz#96fdb89d25c62e7b6a5d08caf0ce5114370e3b8f"
integrity sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==
"@rollup/rollup-android-arm-eabi@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.44.1.tgz#f768e3b2b0e6b55c595d7a053652c06413713983"
integrity sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==
"@rollup/rollup-android-arm-eabi@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.0.tgz#0592252f7550bc0ea0474bb5a22430850f92bdbd"
integrity sha512-2o/FgACbji4tW1dzXOqAV15Eu7DdgbKsF2QKcxfG4xbh5iwU7yr5RRP5/U+0asQliSYv5M4o7BevlGIoSL0LXg==
"@rollup/rollup-android-arm64@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.44.1.tgz#40379fd5501cfdfd7d8f86dfa1d3ce8d3a609493"
integrity sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==
"@rollup/rollup-android-arm64@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.0.tgz#00a51d1d4380cc677da80ac9da1a19e7806bf57e"
integrity sha512-PSZ0SvMOjEAxwZeTx32eI/j5xSYtDCRxGu5k9zvzoY77xUNssZM+WV6HYBLROpY5CkXsbQjvz40fBb7WPwDqtQ==
"@rollup/rollup-darwin-arm64@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.44.1.tgz#972c227bc89fe8a38a3f0c493e1966900e4e1ff7"
integrity sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==
"@rollup/rollup-darwin-arm64@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.0.tgz#6638299dd282ebde1ebdf7dc5b0f150aa6e256e5"
integrity sha512-BA4yPIPssPB2aRAWzmqzQ3y2/KotkLyZukVB7j3psK/U3nVJdceo6qr9pLM2xN6iRP/wKfxEbOb1yrlZH6sYZg==
"@rollup/rollup-darwin-x64@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.44.1.tgz#96c919dcb87a5aa7dec5f7f77d90de881e578fdd"
integrity sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==
"@rollup/rollup-darwin-x64@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.0.tgz#33e61daa0a66890059648feda78e1075d4ea1bcb"
integrity sha512-Pr2o0lvTwsiG4HCr43Zy9xXrHspyMvsvEw4FwKYqhli4FuLE5FjcZzuQ4cfPe0iUFCvSQG6lACI0xj74FDZKRA==
"@rollup/rollup-freebsd-arm64@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.44.1.tgz#d199d8eaef830179c0c95b7a6e5455e893d1102c"
integrity sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==
"@rollup/rollup-freebsd-arm64@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.0.tgz#2cc4bd3ba7026cd5374e902285ce76e8fae0f6eb"
integrity sha512-lYE8LkE5h4a/+6VnnLiL14zWMPnx6wNbDG23GcYFpRW1V9hYWHAw9lBZ6ZUIrOaoK7NliF1sdwYGiVmziUF4vA==
"@rollup/rollup-freebsd-x64@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.44.1.tgz#cab01f9e06ca756c1fabe87d64825ae016af4713"
integrity sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==
"@rollup/rollup-freebsd-x64@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.0.tgz#64664ba3015deac473a5d6d6c60c068f274bf2d5"
integrity sha512-PVQWZK9sbzpvqC9Q0GlehNNSVHR+4m7+wET+7FgSnKG3ci5nAMgGmr9mGBXzAuE5SvguCKJ6mHL6vq1JaJ/gvw==
"@rollup/rollup-linux-arm-gnueabihf@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.44.1.tgz#f6f1c42036dba0e58dc2315305429beff0d02c78"
integrity sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==
"@rollup/rollup-linux-arm-gnueabihf@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.0.tgz#7ab16acae3bcae863e9a9bc32038cd05e794a0ff"
integrity sha512-hLrmRl53prCcD+YXTfNvXd776HTxNh8wPAMllusQ+amcQmtgo3V5i/nkhPN6FakW+QVLoUUr2AsbtIRPFU3xIA==
"@rollup/rollup-linux-arm-musleabihf@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.44.1.tgz#1157e98e740facf858993fb51431dce3a4a96239"
integrity sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==
"@rollup/rollup-linux-arm-musleabihf@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.0.tgz#bef91b1e924ab57e82e767dc2655264bbde7acc6"
integrity sha512-XBKGSYcrkdiRRjl+8XvrUR3AosXU0NvF7VuqMsm7s5nRy+nt58ZMB19Jdp1RdqewLcaYnpk8zeVs/4MlLZEJxw==
"@rollup/rollup-linux-arm64-gnu@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.44.1.tgz#b39db73f8a4c22e7db31a4f3fd45170105f33265"
integrity sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==
"@rollup/rollup-linux-arm64-gnu@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.0.tgz#0a811b16da334125f6e44570d0badf543876f49e"
integrity sha512-fRvZZPUiBz7NztBE/2QnCS5AtqLVhXmUOPj9IHlfGEXkapgImf4W9+FSkL8cWqoAjozyUzqFmSc4zh2ooaeF6g==
"@rollup/rollup-linux-arm64-musl@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.44.1.tgz#4043398049fe4449c1485312d1ae9ad8af4056dd"
integrity sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==
"@rollup/rollup-linux-arm64-musl@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.0.tgz#e8c166efe3cb963faaa924c7721eafbade63036f"
integrity sha512-Btv2WRZOcUGi8XU80XwIvzTg4U6+l6D0V6sZTrZx214nrwxw5nAi8hysaXj/mctyClWgesyuxbeLylCBNauimg==
"@rollup/rollup-linux-loongarch64-gnu@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.44.1.tgz#855a80e7e86490da15a85dcce247dbc25265bc08"
integrity sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==
"@rollup/rollup-linux-loongarch64-gnu@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.0.tgz#239feea00fa2a1e734bdff09b8d1c90def2abbf5"
integrity sha512-Li0emNnwtUZdLwHjQPBxn4VWztcrw/h7mgLyHiEI5Z0MhpeFGlzaiBHpSNVOMB/xucjXTTcO+dhv469Djr16KA==
"@rollup/rollup-linux-powerpc64le-gnu@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.44.1.tgz#8cf843cb7ab1d42e1dda680937cf0a2db6d59047"
integrity sha512-Rl3JKaRu0LHIx7ExBAAnf0JcOQetQffaw34T8vLlg9b1IhzcBgaIdnvEbbsZq9uZp3uAH+JkHd20Nwn0h9zPjA==
"@rollup/rollup-linux-powerpc64le-gnu@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.0.tgz#1de2f926bddbf7d689a089277c1284ea6df4b6d1"
integrity sha512-sB8+pfkYx2kvpDCfd63d5ScYT0Fz1LO6jIb2zLZvmK9ob2D8DeVqrmBDE0iDK8KlBVmsTNzrjr3G1xV4eUZhSw==
"@rollup/rollup-linux-riscv64-gnu@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.44.1.tgz#287c085472976c8711f16700326f736a527f2f38"
integrity sha512-j5akelU3snyL6K3N/iX7otLBIl347fGwmd95U5gS/7z6T4ftK288jKq3A5lcFKcx7wwzb5rgNvAg3ZbV4BqUSw==
"@rollup/rollup-linux-riscv64-gnu@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.0.tgz#28dbac643244e477a7b931feb9b475aa826f84c1"
integrity sha512-5GQ6PFhh7E6jQm70p1aW05G2cap5zMOvO0se5JMecHeAdj5ZhWEHbJ4hiKpfi1nnnEdTauDXxPgXae/mqjow9w==
"@rollup/rollup-linux-riscv64-musl@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.44.1.tgz#095ad5e53a54ba475979f1b3226b92440c95c892"
integrity sha512-ppn5llVGgrZw7yxbIm8TTvtj1EoPgYUAbfw0uDjIOzzoqlZlZrLJ/KuiE7uf5EpTpCTrNt1EdtzF0naMm0wGYg==
"@rollup/rollup-linux-riscv64-musl@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.0.tgz#5d05eeaedadec3625cd50e3ca5d35ef6f96a4bf0"
integrity sha512-N/euLsBd1rekWcuduakTo/dJw6U6sBP3eUq+RXM9RNfPuWTvG2w/WObDkIvJ2KChy6oxZmOSC08Ak2OJA0UiAA==
"@rollup/rollup-linux-s390x-gnu@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.44.1.tgz#a3dec8281d8f2aef1703e48ebc65d29fe847933c"
integrity sha512-Hu6hEdix0oxtUma99jSP7xbvjkUM/ycke/AQQ4EC5g7jNRLLIwjcNwaUy95ZKBJJwg1ZowsclNnjYqzN4zwkAw==
"@rollup/rollup-linux-s390x-gnu@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.0.tgz#55b0790f499fb7adc14eb074c4e46aef92915813"
integrity sha512-2l9sA7d7QdikL0xQwNMO3xURBUNEWyHVHfAsHsUdq+E/pgLTUcCE+gih5PCdmyHmfTDeXUWVhqL0WZzg0nua3g==
"@rollup/rollup-linux-x64-gnu@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.44.1.tgz#4b211e6fd57edd6a134740f4f8e8ea61972ff2c5"
integrity sha512-EtnsrmZGomz9WxK1bR5079zee3+7a+AdFlghyd6VbAjgRJDbTANJ9dcPIPAi76uG05micpEL+gPGmAKYTschQw==
"@rollup/rollup-linux-x64-gnu@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.0.tgz#e822632fe5b324b16bdc37149149c8c760b031fd"
integrity sha512-XZdD3fEEQcwG2KrJDdEQu7NrHonPxxaV0/w2HpvINBdcqebz1aL+0vM2WFJq4DeiAVT6F5SUQas65HY5JDqoPw==
"@rollup/rollup-linux-x64-musl@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.44.1.tgz#3ecbf8e21b4157e57bb15dc6837b6db851f9a336"
integrity sha512-iAS4p+J1az6Usn0f8xhgL4PaU878KEtutP4hqw52I4IO6AGoyOkHCxcc4bqufv1tQLdDWFx8lR9YlwxKuv3/3g==
"@rollup/rollup-linux-x64-musl@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.0.tgz#19a3602cb8fabd7eb3087f0a1e1e01adac31bbff"
integrity sha512-7ayfgvtmmWgKWBkCGg5+xTQ0r5V1owVm67zTrsEY1008L5ro7mCyGYORomARt/OquB9KY7LpxVBZes+oSniAAQ==
"@rollup/rollup-win32-arm64-msvc@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.44.1.tgz#d4aae38465b2ad200557b53c8c817266a3ddbfd0"
integrity sha512-NtSJVKcXwcqozOl+FwI41OH3OApDyLk3kqTJgx8+gp6On9ZEt5mYhIsKNPGuaZr3p9T6NWPKGU/03Vw4CNU9qg==
"@rollup/rollup-win32-arm64-msvc@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.0.tgz#42e08bf3ea4fc463fc9f199c4f0310a736f03eb1"
integrity sha512-B+IJgcBnE2bm93jEW5kHisqvPITs4ddLOROAcOc/diBgrEiQJJ6Qcjby75rFSmH5eMGrqJryUgJDhrfj942apQ==
"@rollup/rollup-win32-ia32-msvc@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.44.1.tgz#0258e8ca052abd48b23fd6113360fa0cd1ec3e23"
integrity sha512-JYA3qvCOLXSsnTR3oiyGws1Dm0YTuxAAeaYGVlGpUsHqloPcFjPg+X0Fj2qODGLNwQOAcCiQmHub/V007kiH5A==
"@rollup/rollup-win32-ia32-msvc@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.0.tgz#043d25557f59d7e28dfe38ee1f60ddcb95a08124"
integrity sha512-+CXwwG66g0/FpWOnP/v1HnrGVSOygK/osUbu3wPRy8ECXjoYKjRAyfxYpDQOfghC5qPJYLPH0oN4MCOjwgdMug==
"@rollup/rollup-win32-x64-msvc@4.44.1":
version "4.44.1"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.44.1.tgz#1c982f6a5044ffc2a35cd754a0951bdcb44d5ba0"
integrity sha512-J8o22LuF0kTe7m+8PvW9wk3/bRq5+mRo5Dqo6+vXb7otCm3TPhYOJqOaQtGU9YMWQSL3krMnoOxMr0+9E6F3Ug==
"@rollup/rollup-win32-x64-msvc@4.45.0":
version "4.45.0"
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.0.tgz#0a7eecae41f463d6591c8fecd7a5c5087345ee36"
integrity sha512-SRf1cytG7wqcHVLrBc9VtPK4pU5wxiB/lNIkNmW2ApKXIg+RpqwHfsaEK+e7eH4A1BpI6BX/aBWXxZCIrJg3uA==
"@socket.io/component-emitter@~3.1.0":
version "3.1.2"
@@ -764,191 +774,191 @@
dependencies:
"@tanstack/virtual-core" "3.13.12"
"@tiptap/core@^2.11.7", "@tiptap/core@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.24.0.tgz#aee1f945a2a60f90849a2c2c0912cb4e115deb6b"
integrity sha512-DDFd4jKN2xx7i7GL7FYVweQudXGhHDPErjnKNwaEh0togBVQtvNcGQGV0pW31oTUItzc29DgvEGjyb5z9zOZUQ==
"@tiptap/core@^2.11.7", "@tiptap/core@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/core/-/core-2.26.1.tgz#8f97c223629972221d4175e4779f6ee955c41a37"
integrity sha512-fymyd/XZvYiHjBoLt1gxs024xP/LY26d43R1vluYq7AHBL/7DE3ywzy+1GEsGyAv5Je2L0KBhNIR/izbq3Kaqg==
"@tiptap/extension-blockquote@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.24.0.tgz#4d28aa0ae55172dfb1e60b553217540d8be5384b"
integrity sha512-UNa1y1zFTmE2SSQ/3C0CDLUOnJZzGWH0rlOg0CIYA2FQlVg/Sl6L4hxXFLcp2m2E4ixCMTDXBvxKVxpmpvu0UQ==
"@tiptap/extension-blockquote@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-blockquote/-/extension-blockquote-2.26.1.tgz#8ad2b3c119ff22430432ef46c852c135c156d63b"
integrity sha512-viQ6AHRhjCYYipKK6ZepBzwZpkuMvO9yhRHeUZDvlSOAh8rvsUTSre0y74nu8QRYUt4a44lJJ6BpphJK7bEgYA==
"@tiptap/extension-bold@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.24.0.tgz#94d1726e547734fc727651bd2cf66c6bc10bf2fc"
integrity sha512-TZT9jZeJuhmVhylO8t5QFbqfgS0yK6d/Tx08UMB7QuGIcNQ83p/Ep2kGOx1N1KnrUKdKBRXTtOgVKSbVXDyLvQ==
"@tiptap/extension-bold@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bold/-/extension-bold-2.26.1.tgz#1218b847d360d69b6fc9e30596991bc53bc8fb98"
integrity sha512-zCce9PRuTNhadFir71luLo99HERDpGJ0EEflGm7RN8I1SnNi9gD5ooK42BOIQtejGCJqg3hTPZiYDJC2hXvckQ==
"@tiptap/extension-bubble-menu@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.24.0.tgz#dfcb476833f49771f70196bb6837e955615d7867"
integrity sha512-/YEayojvKC4571g/eQTkqJiXHlTpL3mRmg7E0ulnW8TuEVDbc+V64nit4xI4fgTUR5NppPEoSzVuy2XHORg6rg==
"@tiptap/extension-bubble-menu@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.26.1.tgz#7d78abb95bfc96468b40819ec00e2770ddcf63ad"
integrity sha512-oHevUcZbTMFOTpdCEo4YEDe044MB4P1ZrWyML8CGe5tnnKdlI9BN03AXpI1mEEa5CA3H1/eEckXx8EiCgYwQ3Q==
dependencies:
tippy.js "^6.3.7"
"@tiptap/extension-bullet-list@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.24.0.tgz#1c5e0e8ef6f9d55771ffa7b4254a19bd65ef3b92"
integrity sha512-p67EoSsvhys3D0a5jjnorEapV71nX6ZkhsNfrqsio3h3cc1YONA47wbx8bCnahMR8BtczzUNhdRHM5LHLjzPTA==
"@tiptap/extension-bullet-list@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-bullet-list/-/extension-bullet-list-2.26.1.tgz#b92170ca5d0b3404599799277fd73a124e81d093"
integrity sha512-HHakuV4ckYCDOnBbne088FvCEP4YICw+wgPBz/V2dfpiFYQ4WzT0LPK9s7OFMCN+ROraoug+1ryN1Z1KdIgujQ==
"@tiptap/extension-code-block-lowlight@^2.11.5":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.24.0.tgz#d88db01836d485f02bd62f68853142bb37339ecf"
integrity sha512-NXE6DG3uLdkchIJlnQGp45FNvaEJhE5CM9fgJ/4ylDgd9S2aXXP6BVPjti35L2DszNui+QeHa75ZjcBAQyG4YQ==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block-lowlight/-/extension-code-block-lowlight-2.26.1.tgz#42033f833906de3cf66263598dc4cad70fe3651d"
integrity sha512-yptuTPYAzVMKHUTwNKYveuu0rYHYyFknPz3O2++PWeeBGxkNB+T6LhwZ/JhXceHcZxzlGyka9r2mXR7pslhugw==
"@tiptap/extension-code-block@^2.11.9", "@tiptap/extension-code-block@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.24.0.tgz#bf8c6c21bad2e64134e0ecca9553984643f46e3f"
integrity sha512-1k2WhFpxd1Q/zGSYZn7YRhBAMLK3jAafIp0Rkf2iHs0vqbL+iHtrWAu5DFaWfNisTF7PrYXhjyIK9+UTQXCuaw==
"@tiptap/extension-code-block@^2.11.9", "@tiptap/extension-code-block@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code-block/-/extension-code-block-2.26.1.tgz#dd6f9ec59440844f8e0ab0b33a75ff8ab6b6669f"
integrity sha512-/TDDOwONl0qEUc4+B6V9NnWtSjz95eg7/8uCb8Y8iRbGvI9vT4/znRKofFxstvKmW4URu/H74/g0ywV57h0B+A==
"@tiptap/extension-code@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.24.0.tgz#b71a934110120987813cd445633960e3cc1ab883"
integrity sha512-2pYGdTSyzjJrxsMNGpm8+E+Z60iMdUn4AYhrTfSHKObvZbGEhqWpxBRIUjL6xulSjYxmXzQFrYzh0BWYuXYPeA==
"@tiptap/extension-code@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-code/-/extension-code-2.26.1.tgz#ed289955423da20faa6ef4c81472835ac5fe1574"
integrity sha512-GU9deB1A/Tr4FMPu71CvlcjGKwRhGYz60wQ8m4aM+ELZcVIcZRa1ebR8bExRIEWnvRztQuyRiCQzw2N0xQJ1QQ==
"@tiptap/extension-color@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-color/-/extension-color-2.24.0.tgz#a643a4dea7532a3bcc261465c8737f00d7ed29c6"
integrity sha512-I10tkIw0a4jD6Yu2AvUKZaPQVY83fx+DnC+Hd+eeQdT5JQy3c0K43N9HnPIPbtnpKFiJgOIJZhMy3LUXDPWSaA==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-color/-/extension-color-2.26.1.tgz#075386150a4457d03c85371a88205c838fc2bfae"
integrity sha512-lsPw3qpQNes1rHpxBtsV9XniN1dEjYd2nVTpQHGE4XLNwfE5+ejm6ySs8qVLM7+EXWcjANLLh4UA3zqkX6t6HA==
"@tiptap/extension-document@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.24.0.tgz#1c7e6d838b35ed5bad0ecd12712d7a0fa86f8378"
integrity sha512-KNcYFEwmbgtsP8lHAPGpzRpUsp0sWDxsUW6vrozR+OSjOogx96OKz22NvJEgUQrVekjM6tKFp81vuIKWDo0EsA==
"@tiptap/extension-document@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-document/-/extension-document-2.26.1.tgz#3e65e4833fee138e5afaed4be586d75db10cb8b6"
integrity sha512-2P2IZp1NRAE+21mRuFBiP3X2WKfZ6kUC23NJKpn8bcOamY3obYqCt0ltGPhE4eR8n8QAl2fI/3jIgjR07dC8ow==
"@tiptap/extension-dropcursor@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.24.0.tgz#9886f1d46a0dbdd518949373cdcfe10dff2c852b"
integrity sha512-Oi3aNppt23U2POjowV6/6XtQG9LrMFqqun8LAAx3DItgkK3eqaEH5C39kZ75XpWpbPcZ7G+0+1qNOqU1ZyOFgg==
"@tiptap/extension-dropcursor@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-dropcursor/-/extension-dropcursor-2.26.1.tgz#2eff232f3ab50816ba7182275f84f475a88b4443"
integrity sha512-JkDQU2ZYFOuT5mNYb8OiWGwD1HcjbtmX8tLNugQbToECmz9WvVPqJmn7V/q8VGpP81iEECz/IsyRmuf2kSD4uA==
"@tiptap/extension-floating-menu@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.24.0.tgz#87279b3e2356ed5f41878a73c74f92f0e68e435b"
integrity sha512-08T7cA6ILk9byvI0IMHv7MgINNx4fMUjn+1h4mX7k06rUR9P3nXEVQDQWcRZdqQ9orMdL44NtW8e+hGBZRHDQA==
"@tiptap/extension-floating-menu@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-floating-menu/-/extension-floating-menu-2.26.1.tgz#4be572fa98f356d44b1817cff5cd0db819f45c01"
integrity sha512-OJF+H6qhQogVTMedAGSWuoL1RPe3LZYXONuFCVyzHnvvMpK+BP1vm180E2zDNFnn/DVA+FOrzNGpZW7YjoFH1w==
dependencies:
tippy.js "^6.3.7"
"@tiptap/extension-gapcursor@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.24.0.tgz#7d28bdd9f8485a6fe10507795c95de549a95ae99"
integrity sha512-CG406JTLBFGyEQHKIygqIHtNrXz4TGy8bdlTDPihPrcstJMHC1oxE3TSYS34A73l0n0JvQCYioxppxIJLbGFVg==
"@tiptap/extension-gapcursor@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-gapcursor/-/extension-gapcursor-2.26.1.tgz#7a5ebd84d4495aa8403ececd1ace51d3ba9ab139"
integrity sha512-KOiMZc3PwJS3hR0nSq5d0TJi2jkNZkLZElcT6pCEnhRHzPH6dRMu9GM5Jj798ZRUy0T9UFcKJalFZaDxnmRnpg==
"@tiptap/extension-hard-break@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.24.0.tgz#a714ffd2a7565f4eb98186535463a6cbbaecae0d"
integrity sha512-Zh7ML2kHpKNrDdu+NLqra6gQQyNspRz4vSAR28x9q31MatuWExM9RWocwDrLOe88AuYqOu5gDyMVZTi8ikVd9A==
"@tiptap/extension-hard-break@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-hard-break/-/extension-hard-break-2.26.1.tgz#70226e2b63e2252a74f6e59b5c001a4c02e0c1e5"
integrity sha512-d6uStdNKi8kjPlHAyO59M6KGWATNwhLCD7dng0NXfwGndc22fthzIk/6j9F6ltQx30huy5qQram6j3JXwNACoA==
"@tiptap/extension-heading@^2.12.0", "@tiptap/extension-heading@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.24.0.tgz#e16eded5fa34bd20771ed1788ed46c01fd68c363"
integrity sha512-qfrcn6QlOFxd0T4VMDloxzv7YUlOX5Cc/S60+7aRLUNMrByQyk+C1OwSdX3Wx6fYWhCszzFblTGTCWu5QijK/w==
"@tiptap/extension-heading@^2.12.0", "@tiptap/extension-heading@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-heading/-/extension-heading-2.26.1.tgz#49d1e8f2d10eb1c06bf348d7cb9d131097d65f78"
integrity sha512-KSzL8WZV3pjJG9ke4RaU70+B5UlYR2S6olNt5UCAawM+fi11mobVztiBoC19xtpSVqIXC1AmXOqUgnuSvmE4ZA==
"@tiptap/extension-highlight@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.24.0.tgz#9bc3a7f0ffe99cb5d8f37ba49ead62d3932b2f7e"
integrity sha512-xRPcZR7ebHODvQobYJI5FDOd6UGguTHK7ez/wM7lKuVj5+VhmM/r5OBM68QZrZol5lYHcamfaIx4hmydCt4ecw==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-highlight/-/extension-highlight-2.26.1.tgz#9c5aca076d146332930882c0fad7cbe47026c681"
integrity sha512-9eW2UqDqeAKSDIiL6SqcPSDCQAdU5qQmRMsJlShOM7Fu1aU71b1ewhUP9YioUCanciR99tqNsk/n3LAe0w5XdA==
"@tiptap/extension-history@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.24.0.tgz#2de5390fd2609b8e308198b3e5ba0642b9fbfdf0"
integrity sha512-0FVeCm1O+W6PUFrcaHZ8wposZwSyrCOOPT894Mpam1hGdFr2V0RdqkgRYC94SSmZrkrDFJRklSVcpacjGFT6ig==
"@tiptap/extension-history@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-history/-/extension-history-2.26.1.tgz#de8e8a5ebf08cbbccb6dec11291128843a2d24e6"
integrity sha512-m6YR1gkkauIDo3PRl0gP+7Oc4n5OqDzcjVh6LvWREmZP8nmi94hfseYbqOXUb6RPHIc0JKF02eiRifT4MSd2nw==
"@tiptap/extension-horizontal-rule@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.24.0.tgz#b7ac8914c8bf044ec43e9a94a3378c239b84d345"
integrity sha512-RGEAHTALSvN+m0zqtj+kdECJJs4F9O146fDgLXBvEFPqSyGd5fku1dM5r2LK4ECastir+N5Y+5Nas0ZXSoozIw==
"@tiptap/extension-horizontal-rule@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.26.1.tgz#5c0c635d4444f38cb70e721d06fbe2d47a79982c"
integrity sha512-mT6baqOhs/NakgrAeDeed194E/ZJFGL692H0C7f1N7WDRaWxUu2oR0LrnRqSH5OyPjELkzu6nQnNy0+0tFGHHg==
"@tiptap/extension-image@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.24.0.tgz#eb75c849ba98f132d1b82e5bfe380a5c98bb06ba"
integrity sha512-kcuPkCJBk+X7rAtdsQ2JVjCUhEZToOIQ54l7jBta4wsyZVKW3HNN3gGxikfF/8jnn8uZNuXCp0cN6wtmbccVOA==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-image/-/extension-image-2.26.1.tgz#1b71633f31a7c53c4570f94e1068ceb46fe93224"
integrity sha512-96+MaYBJebQlR/ik5W72GLUfXdEoxFs+6jsoERxbM5qEdhb7TEnodBFtWZOwgDO27kFd6rSNZuW9r5KJNtljEg==
"@tiptap/extension-italic@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.24.0.tgz#ce928b98d45e1db26e45fe3c20256079a081175e"
integrity sha512-IW8TxvGTdi3FPDAdVkJCdMXUwwIagjrZO0qz0eTnM6nSX9hHXYrMQ3LyKHaXD5HTRBMLIqaokk8wQPkIMX4ruA==
"@tiptap/extension-italic@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-italic/-/extension-italic-2.26.1.tgz#cd798d5e410d112f70aaea2c7eb30716f4a483c6"
integrity sha512-pOs6oU4LyGO89IrYE4jbE8ZYsPwMMIiKkYfXcfeD9NtpGNBnjeVXXF5I9ndY2ANrCAgC8k58C3/powDRf0T2yA==
"@tiptap/extension-link@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.24.0.tgz#9f46589919c53fdff9c6405bfabdeff4dffa87c8"
integrity sha512-J8kQI7xfT0Qaki1DeFhvZD1hWxkXmNmVzGRRz9ComrqIevaoXvZjI9aXyK2NkqjJB2xUxxu9JgcJIxUXbbBzfw==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-link/-/extension-link-2.26.1.tgz#8e479556b08aa42e2ac9369d45c30c281051a45a"
integrity sha512-7yfum5Jymkue/uOSTQPt2SmkZIdZx7t3QhZLqBU7R9ettkdSCBgEGok6N+scJM1R1Zes+maSckLm0JZw5BKYNA==
dependencies:
linkifyjs "^4.2.0"
"@tiptap/extension-list-item@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.24.0.tgz#93ca5a22160d94f7cda38e4a7f04e1eaeef4d245"
integrity sha512-ZS5I53ii7jgWPI9tCZG5p1z9LVYlt0wZ5f45epXQpcG0/P2HYscNCR7aJs/OmdOOjU/7bdpIqKR0BL7IlQca9Q==
"@tiptap/extension-list-item@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-list-item/-/extension-list-item-2.26.1.tgz#932e041245d3a696c943e9d4a32cdf59cb386e88"
integrity sha512-quOXckC73Luc3x+Dcm88YAEBW+Crh3x5uvtQOQtn2GEG91AshrvbnhGRiYnfvEN7UhWIS+FYI5liHFcRKSUKrQ==
"@tiptap/extension-mention@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.24.0.tgz#1d0bcc2521012cc5c55d7e6efadb4b600c9bfcb3"
integrity sha512-532rfuN2fCnI4pWUTD94jBxzSF5TT61Afvq+ar5OKwcANf3G+PZm07ejUbVbHw+g/lKiEZLNLQbg07gIAAXpnA==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-mention/-/extension-mention-2.26.1.tgz#f61a77f8b3dd99b12b9aac0a9ee8041f098b3986"
integrity sha512-sBrlJ9nWjFx7oWCtt0hV192FgCBXva1zwImWbgXTCGPAjv0d5EoPymIfRgoeanAmuQjOHoKzzZnJ6bELTZhkGw==
"@tiptap/extension-ordered-list@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.24.0.tgz#8048418afdd48a4a1d4ece887fb1783fd2efdaf0"
integrity sha512-YxHDlkCI09Rb23weDEwmwLzXLhL30EW73brjHmFod9MCpDwDSkRWztsJRa6pVxcl0paiX7ftrM07ChbIgn84lw==
"@tiptap/extension-ordered-list@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-ordered-list/-/extension-ordered-list-2.26.1.tgz#81e60f4b679533b736ef0fbad4263a11e1c8465e"
integrity sha512-UHKNRxq6TBnXMGFSq91knD6QaHsyyOwLOsXMzupmKM5Su0s+CRXEjfav3qKlbb9e4m7D7S/a0aPm8nC9KIXNhQ==
"@tiptap/extension-paragraph@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.24.0.tgz#700af9e50f3bf01abba10461cebeecb5bc301440"
integrity sha512-es4HPZSlQneZOoZTE9aIXC7uWIZwkBh6EyC+dur7H23vtz3xECWW6/v1jJxhVZS+dVwuNaA04QGqsLeyRf1lnQ==
"@tiptap/extension-paragraph@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-paragraph/-/extension-paragraph-2.26.1.tgz#2e25f9e72fd5b4b34ca8e9e3c355303d86eae055"
integrity sha512-UezvM9VDRAVJlX1tykgHWSD1g3MKfVMWWZ+Tg+PE4+kizOwoYkRWznVPgCAxjmyHajxpCKRXgqTZkOxjJ9Kjzg==
"@tiptap/extension-placeholder@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.24.0.tgz#0cd238de49114dc4c04032ad72d3bdcdd0338342"
integrity sha512-/rfirea9xHh5d/uYSPFOzx/o909XrBNpunt3sYZNi4RWf/+79QEW54/O1cGLj/l8uhms3gL/Bn+Ksv5mvdSJlg==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-placeholder/-/extension-placeholder-2.26.1.tgz#a44280063978dfa86aad71dee6cad36c3a7862a0"
integrity sha512-MBlqbkd+63btY7Qu+SqrXvWjPwooGZDsLTtl7jp52BczBl61cq9yygglt9XpM11TFMBdySgdLHBrLtQ0B7fBlw==
"@tiptap/extension-strike@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.24.0.tgz#4a8e19ea1a23690a76b8620e9c46156c0d900cf0"
integrity sha512-nAhoy0korH+Vn0yOAdcKNJoDPzMAsyA7EgZYLQFCdWMnNBU6dTHJmRm6BI0Vhj3tqdXcnlavtPApBflW0eje3A==
"@tiptap/extension-strike@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-strike/-/extension-strike-2.26.1.tgz#d703acfa78455021082ccbac72b41ee9ab3f8c9b"
integrity sha512-CkoRH+pAi6MgdCh7K0cVZl4N2uR4pZdabXAnFSoLZRSg6imLvEUmWHfSi1dl3Z7JOvd3a4yZ4NxerQn5MWbJ7g==
"@tiptap/extension-table-cell@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-cell/-/extension-table-cell-2.24.0.tgz#1a4425252597c9cad62349f87760dc054229c146"
integrity sha512-RvHCKTqUzjeqOmqVqp9bdraQfGsDHGSazEgWdknsFi/0LGhkKSX9lsaqlUHQoSf1DRVNx4sq0B2qjrlyL9tB9w==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-cell/-/extension-table-cell-2.26.1.tgz#c204e9eef60f77063fc432faba4dd2ef2fe79ba3"
integrity sha512-0P5zY+WGFnULggJkX6+CevmFoBmVv1aUiBBXfcFuLG2mnUsS3QALQTowFtz/0/VbtbjzcOSStaGDHRJxPbk9XQ==
"@tiptap/extension-table-header@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-header/-/extension-table-header-2.24.0.tgz#ddd5066b30f5fa0d7d76c97dde12387ed1db6137"
integrity sha512-tI5m29locqOYN7w9XH96Zq9/O9jrp+PY0RurnSYotUErLvgnWMI++Fbm4aLpxA/wFqdMEZR3lrxR9zddli52Ew==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-header/-/extension-table-header-2.26.1.tgz#1d9f2d609777201725ccd5850445d5e277a427fc"
integrity sha512-SAwTW9H+sjVYjoeU5z8pVDMHn3r3FCi+zp2KAxsEsmujcd7qrQdY0cAjQtWjckCq6H3sQkbICa+xlCCd7C8ZAQ==
"@tiptap/extension-table-row@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-row/-/extension-table-row-2.24.0.tgz#f8174465433631d0e492a6ecd548b139275bee08"
integrity sha512-ERKnkoZLWmGYWTCV8EqH8zGTvxp+aj/ojyQVdaP5Em59+D0dDenKwe58Dp046zeXejele0awIVqOulOfyon6hQ==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table-row/-/extension-table-row-2.26.1.tgz#40c85b430b18b89363cb59459f1992ecdac93fcd"
integrity sha512-c4oLrUfj1EVVDpbfKX36v7nnaeI4NxML2KRTQXocvcY65VCe0bPQh8ujpPgPcnKEzdWYdIuAX9RbEAkiYWe8Ww==
"@tiptap/extension-table@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-2.24.0.tgz#da3157cb9f2387ea40d8c44aabde31910b7e407a"
integrity sha512-Ris3kuqUAsAkw8zqjUO8rMgDFFon3qVuXeHGJqNK3A2rEJzjM1DqgnqjL0Y06Gl7tbcOiVVrrzvHfELZ5Froiw==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-table/-/extension-table-2.26.1.tgz#26d45cd3f68def655c51c8ccbc6a3af507bdf49c"
integrity sha512-LQ63CK53qx2ZsbLTB4mUX0YCoGC0GbYQ82jS3kD+K7M/mb9MCkefvDk6rA8rXF8TjfGnv6o/Fseoot8uhH3qfg==
"@tiptap/extension-text-align@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.24.0.tgz#d808535fdc32c87e0a9dd434ba591af65a03cda6"
integrity sha512-EnSB2437YITtZ4rNZfXxkPsLHysTa6gCLxIkP3B9GM0bPE/tqeY8n6M/Pt+9Ppqh+lDyU6jeywCu9vBvWLnVkg==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text-align/-/extension-text-align-2.26.1.tgz#79add5084d2b9ff1c347686834f924613d6c98cb"
integrity sha512-x6mpNGELy2QtSPBoQqNgiXO9PjZoB+O2EAfXA9YRiBDSIRNOrw+7vOVpi+IgzswFmhMNgIYUVfQRud4FHUCNew==
"@tiptap/extension-text-style@^2.0.3", "@tiptap/extension-text-style@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.24.0.tgz#f5b498d2267a3a88fe40a4d26ec60b343fb2c453"
integrity sha512-SLMDatlJg421SLNGn4768WKXmTXWIiVCX2DWzzD+9XeoTFC2d6io1pveanQVsp3xVoUZtG9fi5uss0b9AWu6+w==
"@tiptap/extension-text-style@^2.0.3", "@tiptap/extension-text-style@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text-style/-/extension-text-style-2.26.1.tgz#a6be329ff881df9da37d9a8c353b2b2e7b8508b3"
integrity sha512-t9Nc/UkrbCfnSHEUi1gvUQ2ZPzvfdYFT5TExoV2DTiUCkhG6+mecT5bTVFGW3QkPmbToL+nFhGn4ZRMDD0SP3Q==
"@tiptap/extension-text@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.24.0.tgz#d5b6b50a9f5154d746062b21d7f807a4fbf4a6e2"
integrity sha512-GYZmZ5nOlNFIvJZWzjm0SwqwppqWUG65lPp3j7AI9QEGmxGXUmCywTx06FH2/mYkzRaZ2eKhftfsSY1dEMM9yQ==
"@tiptap/extension-text@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-text/-/extension-text-2.26.1.tgz#a51a11aa446d32b136851ce5173c89ad5ff0f57a"
integrity sha512-p2n8WVMd/2vckdJlol24acaTDIZAhI7qle5cM75bn01sOEZoFlSw6SwINOULrUCzNJsYb43qrLEibZb4j2LeQw==
"@tiptap/extension-typography@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/extension-typography/-/extension-typography-2.24.0.tgz#f9a65d41fe6cc0693ef3d3e812602d68a88c6405"
integrity sha512-r/Wm260Vcep/U3t3qiB2t5J/D6JrvXtzvbyEzLSPWA/gaA8q0UrSCWV8qGoSccPOlO+8BcFsAY7+dCcE1SApKQ==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/extension-typography/-/extension-typography-2.26.1.tgz#06ce74c0f3a5cf0a4b5ed3f8e1c00098a6d8dca1"
integrity sha512-1zwKWfy7Tjutert1Vn/unN+98E0JFr5C2jx1xuesAEf4X405cQMb/zNMI44ON3xBG+aXZoTRlJuXNoYodeVSAg==
"@tiptap/pm@^2.0.3", "@tiptap/pm@^2.24.0":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.24.0.tgz#414db0a5ab47d3e2decaa1a7dab6106b84e105a6"
integrity sha512-rjvy3LmNweyDU/ttqQd+fi4A29KbcqNiQ/oWvzv7JNPS9bh4WmuSeWvlNfivo39hHXe46OQhzRVJrSAvyKp+wQ==
"@tiptap/pm@^2.0.3", "@tiptap/pm@^2.26.1":
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/pm/-/pm-2.26.1.tgz#5e4bd79e60fe698fa12770b2845e5133b3333d06"
integrity sha512-8aF+mY/vSHbGFqyG663ds84b+vca5Lge3tHdTMTKazxCnhXR9dn2oQJMnZ78YZvdRbkPkMJJHti9h3K7u2UQvw==
dependencies:
prosemirror-changeset "^2.3.0"
prosemirror-collab "^1.3.1"
@@ -970,44 +980,44 @@
prosemirror-view "^1.37.0"
"@tiptap/starter-kit@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.24.0.tgz#9a0cac55588baebe505e6b599bcb7d920cb8a3f6"
integrity sha512-+JDcp/ao/oqWyVDVYCLXdx+3HjuL3Mh6uBXrfomj8z8XB+2vgigO9Plq1NG41Mfqk6QfzSRmjDB8yXhRVMF17Q==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/starter-kit/-/starter-kit-2.26.1.tgz#00a19c05491a51423aabe511f624567942bd2baa"
integrity sha512-oziMGCds8SVQ3s5dRpBxVdEKZAmO/O//BjZ69mhA3q4vJdR0rnfLb5fTxSeQvHiqB878HBNn76kNaJrHrV35GA==
dependencies:
"@tiptap/core" "^2.24.0"
"@tiptap/extension-blockquote" "^2.24.0"
"@tiptap/extension-bold" "^2.24.0"
"@tiptap/extension-bullet-list" "^2.24.0"
"@tiptap/extension-code" "^2.24.0"
"@tiptap/extension-code-block" "^2.24.0"
"@tiptap/extension-document" "^2.24.0"
"@tiptap/extension-dropcursor" "^2.24.0"
"@tiptap/extension-gapcursor" "^2.24.0"
"@tiptap/extension-hard-break" "^2.24.0"
"@tiptap/extension-heading" "^2.24.0"
"@tiptap/extension-history" "^2.24.0"
"@tiptap/extension-horizontal-rule" "^2.24.0"
"@tiptap/extension-italic" "^2.24.0"
"@tiptap/extension-list-item" "^2.24.0"
"@tiptap/extension-ordered-list" "^2.24.0"
"@tiptap/extension-paragraph" "^2.24.0"
"@tiptap/extension-strike" "^2.24.0"
"@tiptap/extension-text" "^2.24.0"
"@tiptap/extension-text-style" "^2.24.0"
"@tiptap/pm" "^2.24.0"
"@tiptap/core" "^2.26.1"
"@tiptap/extension-blockquote" "^2.26.1"
"@tiptap/extension-bold" "^2.26.1"
"@tiptap/extension-bullet-list" "^2.26.1"
"@tiptap/extension-code" "^2.26.1"
"@tiptap/extension-code-block" "^2.26.1"
"@tiptap/extension-document" "^2.26.1"
"@tiptap/extension-dropcursor" "^2.26.1"
"@tiptap/extension-gapcursor" "^2.26.1"
"@tiptap/extension-hard-break" "^2.26.1"
"@tiptap/extension-heading" "^2.26.1"
"@tiptap/extension-history" "^2.26.1"
"@tiptap/extension-horizontal-rule" "^2.26.1"
"@tiptap/extension-italic" "^2.26.1"
"@tiptap/extension-list-item" "^2.26.1"
"@tiptap/extension-ordered-list" "^2.26.1"
"@tiptap/extension-paragraph" "^2.26.1"
"@tiptap/extension-strike" "^2.26.1"
"@tiptap/extension-text" "^2.26.1"
"@tiptap/extension-text-style" "^2.26.1"
"@tiptap/pm" "^2.26.1"
"@tiptap/suggestion@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.24.0.tgz#c1c96c67c07ab37899960a13aa7c3fae82dd8e9b"
integrity sha512-N0i4DwhdgAj87PqwENwV6K1HBAJ/4DLC1YKCO/CGyiqztUzzxhjS0TU8rWCMZDNqFeSuOx8oFbA0xwrU1FTiFw==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/suggestion/-/suggestion-2.26.1.tgz#64b567443668ff9afb5533737f877e3604ab53ae"
integrity sha512-iNWJdQN7h01keNoVwyCsdI7ZX11YkrexZjCnutWK17Dd72s3NYVTmQXu7saftwddT4nDdlczNxAFosrt0zMhcg==
"@tiptap/vue-3@^2.0.3":
version "2.24.0"
resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.24.0.tgz#98bae2f8338bbda86f25eec7458ba7878d7381b7"
integrity sha512-2TnwAeEQR+EeduQQP4emY8y89KRzHbBQ/M0lTcjUseeAozmo5vfSI5XfwHYoXHQoKWZOlhYshCRrY93tENJwQA==
version "2.26.1"
resolved "https://registry.yarnpkg.com/@tiptap/vue-3/-/vue-3-2.26.1.tgz#6afb7aa4abfdad7432ead271c3448d23f233296e"
integrity sha512-GC0UP+v3KEb0nhgjIHYmWIn5ziTaRqSy8TESXOjG5aljJ8BdP+A0pbcpumB3u0QU+BLUANZqUV2r3l+V18AKYg==
dependencies:
"@tiptap/extension-bubble-menu" "^2.24.0"
"@tiptap/extension-floating-menu" "^2.24.0"
"@tiptap/extension-bubble-menu" "^2.26.1"
"@tiptap/extension-floating-menu" "^2.26.1"
"@types/estree@1.0.8":
version "1.0.8"
@@ -1059,6 +1069,20 @@
resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63"
integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==
"@vexip-ui/hooks@^2.8.0":
version "2.9.2"
resolved "https://registry.yarnpkg.com/@vexip-ui/hooks/-/hooks-2.9.2.tgz#3c6ba9670f1a4ac4211b05279e18657a3c1921ba"
integrity sha512-zdwcTZUHYD/5aqndmUulyia4tPMI3FB09PUn674hZiQlkslO1KiH56WAI8R75wbvzPSmmhl5IA3VcbBZeaFEcw==
dependencies:
"@floating-ui/dom" "^1.7.0"
"@juggle/resize-observer" "^3.4.0"
"@vexip-ui/utils" "2.16.4"
"@vexip-ui/utils@2.16.4", "@vexip-ui/utils@^2.16.1":
version "2.16.4"
resolved "https://registry.yarnpkg.com/@vexip-ui/utils/-/utils-2.16.4.tgz#3429376a8f9e88040e969c21f14e70fe25d36127"
integrity sha512-KX+Q4EsuwDp6ZlRJ7OAkiYxu52D5CVM8zpqQz/FXYV+JUtzl9T3dvxgtA8gQ0wm5Sh/xT6jp8Wo4X7tLAzRh/A==
"@vitejs/plugin-vue@^5.0.3":
version "5.2.4"
resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz#9e8a512eb174bfc2a333ba959bbf9de428d89ad8"
@@ -1207,9 +1231,9 @@
integrity sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==
ace-builds@^1.36.2:
version "1.43.1"
resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.43.1.tgz#96e7431e2ca821563c32f361298c7f899b6c516f"
integrity sha512-n9/n+zBhbbkEJjU0FJ4wWAZBDl5G8WYzg4+uIjSER/U3wSSSSVo52W4sco4Jryg11JAJvorExxMr3GDINqtjdA==
version "1.43.2"
resolved "https://registry.yarnpkg.com/ace-builds/-/ace-builds-1.43.2.tgz#86d7d2f40317a547b7dd13ae862821d6b1e63f3e"
integrity sha512-3wzJUJX0RpMc03jo0V8Q3bSb/cKPnS7Nqqw8fVHsCCHweKMiTIxT3fP46EhjmVy6MCuxwP801ere+RW245phGw==
acorn@^8.14.0, acorn@^8.14.1:
version "8.15.0"
@@ -1354,9 +1378,9 @@ camelcase-css@^2.0.1:
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726:
version "1.0.30001726"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz#a15bd87d5a4bf01f6b6f70ae7c97fdfd28b5ae47"
integrity sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==
version "1.0.30001727"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85"
integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==
chalk@^4.1.0:
version "4.1.2"
@@ -1451,9 +1475,9 @@ confbox@^0.2.2:
integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==
core-js@^3.1.3, core-js@^3.26.1:
version "3.43.0"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.43.0.tgz#f7258b156523208167df35dea0cfd6b6ecd4ee88"
integrity sha512-N6wEbTTZSYOY2rYAn85CuvWWkCK6QweMn7/4Nr3w+gDBeBhk/x4EJeY6FPo4QzDoJZxVTv8U7CMvgWk6pOHHqA==
version "3.44.0"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.44.0.tgz#db4fd4fa07933c1d6898c8b112a1119a9336e959"
integrity sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==
crelt@^1.0.0, crelt@^1.0.5, crelt@^1.0.6:
version "1.0.6"
@@ -1558,9 +1582,9 @@ echarts@^5.6.0:
zrender "5.6.1"
electron-to-chromium@^1.5.173:
version "1.5.179"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz#453d53f360014a2604d40ccd41c4ea0a6e31b99a"
integrity sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==
version "1.5.183"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.183.tgz#38c2e16910569b6c595bd16d1d39d1218bf0ffb6"
integrity sha512-vCrDBYjQCAEefWGjlK3EpoSKfKbT10pR4XXPdn65q7snuNOZnthoVpBfZPykmDapOKfoD+MMIPG8ZjKyyc9oHA==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -1698,10 +1722,10 @@ fraction.js@^4.3.7:
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
frappe-ui@^0.1.163:
version "0.1.166"
resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.166.tgz#2664d9373b4751a39144c283be67f219c5eb99e3"
integrity sha512-VSv2OE/JHa4ReOW0/9SafRzvQ6Dkxa1Bz6u58UU8FvagqpJVorQJlm2854LXuCk1IDV+uulPCr7uxiC8kwcjFw==
frappe-ui@^0.1.172:
version "0.1.173"
resolved "https://registry.yarnpkg.com/frappe-ui/-/frappe-ui-0.1.173.tgz#9d9bbfd841f776503a9e4d7614862cdaba6b5c4a"
integrity sha512-imzCgMnVuOu+kzJJr++A/LmyuTCxOQC9i4zqIW9RO9eyv9yVH3U9TNdOjUwLymhBuDP/9Jas4X1Gb3asrlkLtg==
dependencies:
"@floating-ui/vue" "^1.1.6"
"@headlessui/vue" "^1.7.14"
@@ -1734,6 +1758,7 @@ frappe-ui@^0.1.163:
dompurify "^3.2.6"
echarts "^5.6.0"
feather-icons "^4.28.0"
grid-layout-plus "^1.1.0"
highlight.js "^11.11.1"
idb-keyval "^6.2.0"
lowlight "^3.3.0"
@@ -1793,6 +1818,15 @@ globals@^15.14.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8"
integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==
grid-layout-plus@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/grid-layout-plus/-/grid-layout-plus-1.1.0.tgz#4c6610ff3aa39ddea2953861c224d1914bf5a33d"
integrity sha512-Q5uj0U5nx6xfHg8G1CDRJAEg+/40RVJl5jjRImcRwC78BxoJrEkTneT1pyxYMlbZ8fpGPT6QdHJQkD4+W6gt5A==
dependencies:
"@vexip-ui/hooks" "^2.8.0"
"@vexip-ui/utils" "^2.16.1"
interactjs "^1.10.27"
has-flag@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
@@ -1825,6 +1859,13 @@ inherits@^2.0.3, inherits@^2.0.4:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
interactjs@^1.10.27:
version "1.10.27"
resolved "https://registry.yarnpkg.com/interactjs/-/interactjs-1.10.27.tgz#16499aba4987a5ccfdaddca7d1ba7bb1118e14d0"
integrity sha512-y/8RcCftGAF24gSp76X2JS3XpHiUvDQyhF8i7ujemBz77hwiHDuJzftHx7thY8cxGogwGiPJ+o97kWB6eAXnsA==
dependencies:
"@interactjs/types" "1.10.27"
is-binary-path@~2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
@@ -2387,9 +2428,9 @@ prosemirror-menu@^1.2.4:
prosemirror-state "^1.0.0"
prosemirror-model@^1.0.0, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.23.0, prosemirror-model@^1.25.0, prosemirror-model@^1.25.1:
version "1.25.1"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.1.tgz#aeae9f1ec79fcaa76f6fc619800d91fbcf726870"
integrity sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==
version "1.25.2"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.25.2.tgz#39ca862f76f354237efb94441dbc9f79e81cb247"
integrity sha512-BVypCAJ4SL6jOiTsDffP3Wp6wD69lRhI4zg/iT8JXjp3ccZFiq5WyguxvMKmdKFC3prhaig7wSr8dneDToHE1Q==
dependencies:
orderedmap "^2.0.0"
@@ -2552,32 +2593,32 @@ reusify@^1.0.4:
integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
rollup@^4.20.0:
version "4.44.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.44.1.tgz#641723932894e7acbe6052aea34b8e72ef8b7c8f"
integrity sha512-x8H8aPvD+xbl0Do8oez5f5o8eMS3trfCghc4HhLAnCkj7Vl0d1JWGs0UF/D886zLW2rOj2QymV/JcSSsw+XDNg==
version "4.45.0"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.45.0.tgz#92d1b164eca1c6f2cb399ae7a1a8ee78967b6e33"
integrity sha512-WLjEcJRIo7i3WDDgOIJqVI2d+lAC3EwvOGy+Xfq6hs+GQuAA4Di/H72xmXkOhrIWFg2PFYSKZYfH0f4vfKXN4A==
dependencies:
"@types/estree" "1.0.8"
optionalDependencies:
"@rollup/rollup-android-arm-eabi" "4.44.1"
"@rollup/rollup-android-arm64" "4.44.1"
"@rollup/rollup-darwin-arm64" "4.44.1"
"@rollup/rollup-darwin-x64" "4.44.1"
"@rollup/rollup-freebsd-arm64" "4.44.1"
"@rollup/rollup-freebsd-x64" "4.44.1"
"@rollup/rollup-linux-arm-gnueabihf" "4.44.1"
"@rollup/rollup-linux-arm-musleabihf" "4.44.1"
"@rollup/rollup-linux-arm64-gnu" "4.44.1"
"@rollup/rollup-linux-arm64-musl" "4.44.1"
"@rollup/rollup-linux-loongarch64-gnu" "4.44.1"
"@rollup/rollup-linux-powerpc64le-gnu" "4.44.1"
"@rollup/rollup-linux-riscv64-gnu" "4.44.1"
"@rollup/rollup-linux-riscv64-musl" "4.44.1"
"@rollup/rollup-linux-s390x-gnu" "4.44.1"
"@rollup/rollup-linux-x64-gnu" "4.44.1"
"@rollup/rollup-linux-x64-musl" "4.44.1"
"@rollup/rollup-win32-arm64-msvc" "4.44.1"
"@rollup/rollup-win32-ia32-msvc" "4.44.1"
"@rollup/rollup-win32-x64-msvc" "4.44.1"
"@rollup/rollup-android-arm-eabi" "4.45.0"
"@rollup/rollup-android-arm64" "4.45.0"
"@rollup/rollup-darwin-arm64" "4.45.0"
"@rollup/rollup-darwin-x64" "4.45.0"
"@rollup/rollup-freebsd-arm64" "4.45.0"
"@rollup/rollup-freebsd-x64" "4.45.0"
"@rollup/rollup-linux-arm-gnueabihf" "4.45.0"
"@rollup/rollup-linux-arm-musleabihf" "4.45.0"
"@rollup/rollup-linux-arm64-gnu" "4.45.0"
"@rollup/rollup-linux-arm64-musl" "4.45.0"
"@rollup/rollup-linux-loongarch64-gnu" "4.45.0"
"@rollup/rollup-linux-powerpc64le-gnu" "4.45.0"
"@rollup/rollup-linux-riscv64-gnu" "4.45.0"
"@rollup/rollup-linux-riscv64-musl" "4.45.0"
"@rollup/rollup-linux-s390x-gnu" "4.45.0"
"@rollup/rollup-linux-x64-gnu" "4.45.0"
"@rollup/rollup-linux-x64-musl" "4.45.0"
"@rollup/rollup-win32-arm64-msvc" "4.45.0"
"@rollup/rollup-win32-ia32-msvc" "4.45.0"
"@rollup/rollup-win32-x64-msvc" "4.45.0"
fsevents "~2.3.2"
rope-sequence@^1.3.0:
+1 -1
View File
@@ -1 +1 @@
__version__ = "2.32.0"
__version__ = "2.33.0"
+13 -7
View File
@@ -16,13 +16,14 @@
"field_order": [
"title",
"video_link",
"tags",
"column_break_3",
"instructors",
"tags",
"column_break_htgn",
"image",
"category",
"status",
"column_break_htgn",
"image",
"card_gradient",
"section_break_7",
"published",
"published_on",
@@ -98,8 +99,7 @@
{
"fieldname": "image",
"fieldtype": "Attach Image",
"label": "Preview Image",
"reqd": 1
"label": "Preview Image"
},
{
"fieldname": "tags",
@@ -272,6 +272,12 @@
"fieldtype": "Link",
"label": "Evaluator",
"options": "Course Evaluator"
},
{
"fieldname": "card_gradient",
"fieldtype": "Select",
"label": "Color",
"options": "Red\nBlue\nGreen\nAmber\nCyan\nOrange\nPink\nPurple\nTeal\nViolet\nYellow\nGray"
}
],
"is_published_field": "published",
@@ -290,8 +296,8 @@
}
],
"make_attachments_public": 1,
"modified": "2025-05-29 12:38:01.002898",
"modified_by": "Administrator",
"modified": "2025-07-25 17:50:44.983391",
"modified_by": "sayali@frappe.io",
"module": "LMS",
"name": "LMS Course",
"owner": "Administrator",
+19
View File
@@ -21,6 +21,7 @@ class LMSCourse(Document):
self.validate_certification()
self.validate_amount_and_currency()
self.image = validate_image(self.image)
self.validate_card_gradient()
def validate_published(self):
if self.published and not self.published_on:
@@ -73,6 +74,24 @@ class LMSCourse(Document):
if self.paid_certificate and (cint(self.course_price) <= 0 or not self.currency):
frappe.throw(_("Amount and currency are required for paid certificates."))
def validate_card_gradient(self):
if not self.image and not self.card_gradient:
colors = [
"Red",
"Blue",
"Green",
"Yellow",
"Orange",
"Pink",
"Amber",
"Violet",
"Cyan",
"Teal",
"Gray",
"Purple",
]
self.card_gradient = random.choice(colors)
def on_update(self):
if not self.upcoming and self.has_value_changed("upcoming"):
self.send_email_to_interested_users()
+8 -4
View File
@@ -565,10 +565,13 @@ def get_courses_under_review():
def validate_image(path):
if path and "/private" in path:
file = frappe.get_doc("File", {"file_url": path})
file.is_private = 0
file.save()
return file.file_url
frappe.db.set_value(
"File",
{"file_url": path},
"is_private",
0,
)
return path.replace("/private", "")
return path
@@ -1097,6 +1100,7 @@ def get_course_fields():
"title",
"tags",
"image",
"card_gradient",
"short_introduction",
"published",
"upcoming",
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+386 -138
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+390 -142
View File
File diff suppressed because it is too large Load Diff
+7306
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+151 -59
View File
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Frappe LMS VERSION\n"
"Report-Msgid-Bugs-To: jannat@frappe.io\n"
"POT-Creation-Date: 2025-07-11 16:04+0000\n"
"PO-Revision-Date: 2025-07-11 16:04+0000\n"
"POT-Creation-Date: 2025-07-25 16:04+0000\n"
"PO-Revision-Date: 2025-07-25 16:04+0000\n"
"Last-Translator: jannat@frappe.io\n"
"Language-Team: jannat@frappe.io\n"
"MIME-Version: 1.0\n"
@@ -69,11 +69,11 @@ msgstr ""
msgid "<span style=\"font-size: 18px;\"><b>Statistics</b></span>"
msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:63
#: lms/lms/doctype/lms_course/lms_course.py:64
msgid "A course cannot have both paid certificate and certificate of completion."
msgstr ""
#: frontend/src/pages/CourseForm.vue:88
#: frontend/src/pages/CourseForm.vue:187
msgid "A one line introduction to the course that appears on the course card"
msgstr ""
@@ -81,6 +81,10 @@ msgstr ""
msgid "About"
msgstr ""
#: frontend/src/pages/CourseForm.vue:179
msgid "About the Course"
msgstr ""
#: frontend/src/pages/Batch.vue:101
msgid "About this batch"
msgstr ""
@@ -186,7 +190,7 @@ msgstr ""
msgid "Add a course"
msgstr ""
#: frontend/src/pages/CourseForm.vue:69
#: frontend/src/pages/CourseForm.vue:55
msgid "Add a keyword and then press enter"
msgstr ""
@@ -323,10 +327,15 @@ msgstr ""
msgid "Already Registered"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Amber"
msgstr ""
#. Label of the amount (Currency) field in DocType 'LMS Batch'
#. Label of the course_price (Currency) field in DocType 'LMS Course'
#. Label of the amount (Currency) field in DocType 'LMS Payment'
#: frontend/src/pages/BatchForm.vue:275 frontend/src/pages/CourseForm.vue:254
#: frontend/src/pages/BatchForm.vue:275 frontend/src/pages/CourseForm.vue:259
#: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_payment/lms_payment.json
@@ -344,11 +353,11 @@ msgstr ""
msgid "Amount and currency are required for paid batches."
msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:74
#: lms/lms/doctype/lms_course/lms_course.py:75
msgid "Amount and currency are required for paid certificates."
msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:71
#: lms/lms/doctype/lms_course/lms_course.py:72
msgid "Amount and currency are required for paid courses."
msgstr ""
@@ -380,7 +389,7 @@ msgstr ""
msgid "Answer"
msgstr ""
#: frontend/src/pages/CourseForm.vue:121 frontend/src/pages/CourseForm.vue:140
#: frontend/src/pages/CourseForm.vue:104 frontend/src/pages/CourseForm.vue:123
msgid "Appears on the course card in the course list"
msgstr ""
@@ -604,7 +613,7 @@ msgstr ""
msgid "Average Progress %"
msgstr ""
#: frontend/src/components/CourseCard.vue:55
#: frontend/src/components/CourseCard.vue:65
#: frontend/src/pages/CourseDetail.vue:20
msgid "Average Rating"
msgstr ""
@@ -715,6 +724,7 @@ msgstr ""
#. Name of a role
#: lms/lms/doctype/course_evaluator/course_evaluator.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
#: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_category/lms_category.json
#: lms/lms/doctype/lms_certificate_evaluation/lms_certificate_evaluation.json
@@ -822,6 +832,11 @@ msgstr ""
msgid "Bio"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Blue"
msgstr ""
#. Label of the body (Markdown Editor) field in DocType 'Course Lesson'
#: lms/lms/doctype/course_lesson/course_lesson.json
msgid "Body"
@@ -952,7 +967,6 @@ msgstr ""
#. Label of a Card Break in the LMS Workspace
#. Label of a Link in the LMS Workspace
#: frontend/src/components/AppSidebar.vue:589
#: frontend/src/components/CourseCard.vue:115
#: frontend/src/components/Modals/Event.vue:381
#: frontend/src/pages/BatchForm.vue:69 frontend/src/pages/Batches.vue:38
#: frontend/src/pages/CourseCertification.vue:10
@@ -1073,6 +1087,10 @@ msgstr ""
msgid "Choices"
msgstr ""
#: frontend/src/pages/CourseForm.vue:134
msgid "Choose a color for the course card"
msgstr ""
#: frontend/src/components/Quiz.vue:644 lms/templates/quiz/quiz.html:53
msgid "Choose all answers that apply"
msgstr ""
@@ -1210,12 +1228,15 @@ msgstr ""
msgid "College Name"
msgstr ""
#. Label of the card_gradient (Select) field in DocType 'LMS Course'
#. Label of the color (Color) field in DocType 'LMS Timetable Legend'
#: frontend/src/pages/CourseForm.vue:133
#: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_timetable_legend/lms_timetable_legend.json
msgid "Color"
msgstr ""
#: frontend/src/pages/BatchForm.vue:303 frontend/src/pages/CourseForm.vue:292
#: frontend/src/pages/BatchForm.vue:303 frontend/src/pages/CourseForm.vue:297
msgid "Comma separated keywords for SEO"
msgstr ""
@@ -1324,7 +1345,7 @@ msgid "Completed"
msgstr ""
#. Label of the enable_certification (Check) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:241
#: frontend/src/pages/CourseForm.vue:246
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Completion Certificate"
msgstr ""
@@ -1517,6 +1538,7 @@ msgstr ""
#: frontend/src/pages/ProfileRoles.vue:26
#: lms/lms/doctype/course_chapter/course_chapter.json
#: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
#: lms/lms/doctype/lms_category/lms_category.json
#: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_program/lms_program.json
@@ -1533,7 +1555,7 @@ msgstr ""
msgid "Course Data"
msgstr ""
#: frontend/src/pages/CourseForm.vue:190
#: frontend/src/pages/CourseForm.vue:195
msgid "Course Description"
msgstr ""
@@ -1551,7 +1573,7 @@ msgstr ""
msgid "Course Evaluator"
msgstr ""
#: frontend/src/pages/CourseForm.vue:96
#: frontend/src/pages/CourseForm.vue:80
msgid "Course Image"
msgstr ""
@@ -1573,7 +1595,7 @@ msgstr ""
msgid "Course Name"
msgstr ""
#: frontend/src/pages/CourseDetail.vue:78 frontend/src/pages/CourseForm.vue:302
#: frontend/src/pages/CourseDetail.vue:78 frontend/src/pages/CourseForm.vue:307
msgid "Course Outline"
msgstr ""
@@ -1610,11 +1632,11 @@ msgstr ""
msgid "Course added to program"
msgstr ""
#: frontend/src/pages/CourseForm.vue:537
#: frontend/src/pages/CourseForm.vue:544
msgid "Course created successfully"
msgstr ""
#: frontend/src/pages/CourseForm.vue:574
#: frontend/src/pages/CourseForm.vue:581
msgid "Course deleted successfully"
msgstr ""
@@ -1622,7 +1644,7 @@ msgstr ""
msgid "Course moved successfully"
msgstr ""
#: frontend/src/pages/CourseForm.vue:557
#: frontend/src/pages/CourseForm.vue:564
msgid "Course updated successfully"
msgstr ""
@@ -1740,7 +1762,7 @@ msgstr ""
#. Label of the currency (Link) field in DocType 'LMS Batch'
#. Label of the currency (Link) field in DocType 'LMS Course'
#. Label of the currency (Link) field in DocType 'LMS Payment'
#: frontend/src/pages/BatchForm.vue:282 frontend/src/pages/CourseForm.vue:271
#: frontend/src/pages/BatchForm.vue:282 frontend/src/pages/CourseForm.vue:276
#: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/lms_payment/lms_payment.json
@@ -1777,6 +1799,11 @@ msgstr ""
msgid "Customisations"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Cyan"
msgstr ""
#. Label of the show_dashboard (Check) field in DocType 'LMS Settings'
#: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Dashboard"
@@ -1847,7 +1874,7 @@ msgstr ""
#: frontend/src/components/CourseOutline.vue:283
#: frontend/src/components/CourseOutline.vue:349
#: frontend/src/components/Settings/Badges.vue:171
#: frontend/src/pages/BatchForm.vue:562 frontend/src/pages/CourseForm.vue:587
#: frontend/src/pages/BatchForm.vue:562 frontend/src/pages/CourseForm.vue:594
#: frontend/src/pages/ProgrammingExercises/ProgrammingExerciseForm.vue:67
msgid "Delete"
msgstr ""
@@ -1856,7 +1883,7 @@ msgstr ""
msgid "Delete Chapter"
msgstr ""
#: frontend/src/pages/CourseForm.vue:581
#: frontend/src/pages/CourseForm.vue:588
msgid "Delete Course"
msgstr ""
@@ -1868,7 +1895,7 @@ msgstr ""
msgid "Delete this lesson?"
msgstr ""
#: frontend/src/pages/CourseForm.vue:582
#: frontend/src/pages/CourseForm.vue:589
msgid "Deleting the course will also delete all its chapters and lessons. Are you sure you want to delete this course?"
msgstr ""
@@ -1923,7 +1950,7 @@ msgstr ""
msgid "Details"
msgstr ""
#: frontend/src/pages/CourseForm.vue:181
#: frontend/src/pages/CourseForm.vue:171
msgid "Disable Self Enrollment"
msgstr ""
@@ -2197,7 +2224,7 @@ msgstr ""
msgid "Enrolled"
msgstr ""
#: frontend/src/components/CourseCard.vue:46
#: frontend/src/components/CourseCard.vue:56
#: frontend/src/components/CourseCardOverlay.vue:138
#: frontend/src/pages/CourseDetail.vue:33
msgid "Enrolled Students"
@@ -2212,7 +2239,7 @@ msgstr ""
msgid "Enrollment Count"
msgstr ""
#: lms/lms/utils.py:1943
#: lms/lms/utils.py:1948
msgid "Enrollment Failed"
msgstr ""
@@ -2313,7 +2340,7 @@ msgstr ""
#. Label of the evaluator (Link) field in DocType 'LMS Course'
#: frontend/src/components/Modals/BatchCourseModal.vue:37
#: frontend/src/components/Modals/BulkCertificates.vue:22
#: frontend/src/pages/CourseForm.vue:260 frontend/src/pages/ProfileRoles.vue:32
#: frontend/src/pages/CourseForm.vue:265 frontend/src/pages/ProfileRoles.vue:32
#: lms/lms/doctype/batch_course/batch_course.json
#: lms/lms/doctype/course_evaluator/course_evaluator.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
@@ -2353,7 +2380,7 @@ msgstr ""
msgid "Evaluator does not exist."
msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:67
#: lms/lms/doctype/lms_course/lms_course.py:68
msgid "Evaluator is required for paid certificates."
msgstr ""
@@ -2479,13 +2506,13 @@ msgstr ""
msgid "Failed to update badge assignment: "
msgstr ""
#: frontend/src/utils/index.js:671
#: frontend/src/utils/index.js:670
msgid "Failed to update meta tags {0}"
msgstr ""
#. Label of the featured (Check) field in DocType 'LMS Course'
#: frontend/src/components/CourseCard.vue:20
#: frontend/src/pages/CourseForm.vue:176
#: frontend/src/components/CourseCard.vue:25
#: frontend/src/pages/CourseForm.vue:166
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Featured"
msgstr ""
@@ -2643,6 +2670,7 @@ msgstr ""
#: frontend/src/components/CertificationLinks.vue:34
#: frontend/src/components/CertificationLinks.vue:50
#: frontend/src/components/CourseCard.vue:121
#: frontend/src/pages/CertifiedParticipants.vue:11
msgid "Get Certified"
msgstr ""
@@ -2692,6 +2720,16 @@ msgstr ""
msgid "Grant only once"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Gray"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Green"
msgstr ""
#: lms/templates/signup-form.html:56
msgid "Have an account? Login"
msgstr ""
@@ -3510,7 +3548,7 @@ msgstr ""
#. Label of the lessons (Table) field in DocType 'Course Chapter'
#. Group in Course Chapter's connections
#. Label of the lessons (Int) field in DocType 'LMS Course'
#: frontend/src/components/CourseCard.vue:37
#: frontend/src/components/CourseCard.vue:47
#: frontend/src/components/CourseCardOverlay.vue:131
#: lms/lms/doctype/course_chapter/course_chapter.json
#: lms/lms/doctype/lms_course/lms_course.json
@@ -3938,7 +3976,7 @@ msgid "Mentor Request Status Update Template"
msgstr ""
#. Label of the meta_description (Small Text) field in DocType 'LMS Settings'
#: frontend/src/pages/BatchForm.vue:294 frontend/src/pages/CourseForm.vue:283
#: frontend/src/pages/BatchForm.vue:294 frontend/src/pages/CourseForm.vue:288
#: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Meta Description"
msgstr ""
@@ -3952,12 +3990,12 @@ msgid "Meta Image"
msgstr ""
#. Label of the meta_keywords (Small Text) field in DocType 'LMS Settings'
#: frontend/src/pages/BatchForm.vue:300 frontend/src/pages/CourseForm.vue:289
#: frontend/src/pages/BatchForm.vue:300 frontend/src/pages/CourseForm.vue:294
#: lms/lms/doctype/lms_settings/lms_settings.json
msgid "Meta Keywords"
msgstr ""
#: frontend/src/pages/BatchForm.vue:289 frontend/src/pages/CourseForm.vue:278
#: frontend/src/pages/BatchForm.vue:289 frontend/src/pages/CourseForm.vue:283
msgid "Meta Tags"
msgstr ""
@@ -3980,6 +4018,7 @@ msgstr ""
#: lms/lms/doctype/course_evaluator/course_evaluator.json
#: lms/lms/doctype/course_lesson/course_lesson.json
#: lms/lms/doctype/lms_assignment/lms_assignment.json
#: lms/lms/doctype/lms_assignment_submission/lms_assignment_submission.json
#: lms/lms/doctype/lms_badge_assignment/lms_badge_assignment.json
#: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_batch_enrollment/lms_batch_enrollment.json
@@ -4068,7 +4107,7 @@ msgstr ""
msgid "New Batch"
msgstr ""
#: frontend/src/pages/CourseForm.vue:668 lms/www/lms.py:95
#: frontend/src/pages/CourseForm.vue:675 lms/www/lms.py:95
msgid "New Course"
msgstr ""
@@ -4112,11 +4151,11 @@ msgstr ""
msgid "New Zoom Account"
msgstr ""
#: lms/lms/utils.py:609
#: lms/lms/utils.py:612
msgid "New comment in batch {0}"
msgstr ""
#: lms/lms/utils.py:602
#: lms/lms/utils.py:605
msgid "New reply on the topic {0} in course {1}"
msgstr ""
@@ -4383,6 +4422,11 @@ msgstr ""
msgid "Options"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Orange"
msgstr ""
#. Label of the order_id (Data) field in DocType 'LMS Payment'
#: lms/lms/doctype/lms_payment/lms_payment.json
msgid "Order ID"
@@ -4438,7 +4482,7 @@ msgid "Paid Batch"
msgstr ""
#. Label of the paid_certificate (Check) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:246
#: frontend/src/pages/CourseForm.vue:251
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Paid Certificate"
msgstr ""
@@ -4448,7 +4492,7 @@ msgid "Paid Certificate after Evaluation"
msgstr ""
#. Label of the paid_course (Check) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:236
#: frontend/src/pages/CourseForm.vue:241
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Paid Course"
msgstr ""
@@ -4500,7 +4544,7 @@ msgstr ""
msgid "Password"
msgstr ""
#: frontend/src/pages/CourseForm.vue:206
#: frontend/src/pages/CourseForm.vue:211
msgid "Paste the youtube link of a short video introducing the course"
msgstr ""
@@ -4614,6 +4658,11 @@ msgstr ""
msgid "Phone Number"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Pink"
msgstr ""
#: lms/lms/doctype/lms_settings/lms_settings.py:34
msgid "Please add <a href='{0}'>{1}</a> for <a href='{2}'>{3}</a> to send calendar invites for evaluations."
msgstr ""
@@ -4634,7 +4683,7 @@ msgstr ""
msgid "Please click on the following button to set your new password"
msgstr ""
#: lms/lms/utils.py:2077 lms/lms/utils.py:2081
#: lms/lms/utils.py:2082 lms/lms/utils.py:2086
msgid "Please complete the previous courses in the program to enroll in this course."
msgstr ""
@@ -4679,7 +4728,7 @@ msgstr ""
msgid "Please install the Payments App to create a paid batch. Refer to the documentation for more details. {0}"
msgstr ""
#: lms/lms/doctype/lms_course/lms_course.py:55
#: lms/lms/doctype/lms_course/lms_course.py:56
msgid "Please install the Payments App to create a paid course. Refer to the documentation for more details. {0}"
msgstr ""
@@ -4834,7 +4883,7 @@ msgstr ""
msgid "Preview Image"
msgstr ""
#: frontend/src/pages/CourseForm.vue:204
#: frontend/src/pages/CourseForm.vue:209
msgid "Preview Video"
msgstr ""
@@ -4849,7 +4898,7 @@ msgid "Pricing"
msgstr ""
#. Label of the pricing_tab (Tab Break) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:230
#: frontend/src/pages/CourseForm.vue:235
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Pricing and Certification"
msgstr ""
@@ -5002,7 +5051,7 @@ msgstr ""
#. Label of the published (Check) field in DocType 'LMS Course'
#: frontend/src/components/Modals/BulkCertificates.vue:51
#: frontend/src/components/Modals/Event.vue:108
#: frontend/src/pages/BatchForm.vue:59 frontend/src/pages/CourseForm.vue:159
#: frontend/src/pages/BatchForm.vue:59 frontend/src/pages/CourseForm.vue:149
#: lms/lms/doctype/lms_batch/lms_batch.json
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Published"
@@ -5015,7 +5064,7 @@ msgid "Published Courses"
msgstr ""
#. Label of the published_on (Date) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:163
#: frontend/src/pages/CourseForm.vue:153
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Published On"
msgstr ""
@@ -5025,6 +5074,11 @@ msgstr ""
msgid "Purchased Certificate"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Purple"
msgstr ""
#. Option for the 'Language' (Select) field in DocType 'LMS Programming
#. Exercise'
#: lms/lms/doctype/lms_programming_exercise/lms_programming_exercise.json
@@ -5182,6 +5236,11 @@ msgstr ""
msgid "Ready"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Red"
msgstr ""
#. Label of the reference_docname (Dynamic Link) field in DocType 'LMS Batch
#. Timetable'
#: lms/lms/doctype/lms_batch_timetable/lms_batch_timetable.json
@@ -5230,14 +5289,14 @@ msgstr ""
#. Label of the related_courses (Table) field in DocType 'LMS Course'
#. Name of a DocType
#: frontend/src/components/RelatedCourses.vue:5
#: frontend/src/pages/CourseForm.vue:215
#: frontend/src/pages/CourseForm.vue:220
#: lms/lms/doctype/lms_course/lms_course.json
#: lms/lms/doctype/related_courses/related_courses.json
msgid "Related Courses"
msgstr ""
#: frontend/src/components/Controls/Uploader.vue:34
#: frontend/src/pages/BatchForm.vue:246 frontend/src/pages/CourseForm.vue:136
#: frontend/src/pages/BatchForm.vue:246 frontend/src/pages/CourseForm.vue:119
msgid "Remove"
msgstr ""
@@ -5517,6 +5576,10 @@ msgstr ""
msgid "Sessions On Days"
msgstr ""
#: frontend/src/components/Controls/ColorSwatches.vue:13
msgid "Set Color"
msgstr ""
#: lms/templates/emails/community_course_membership.html:1
msgid "Set your Password"
msgstr ""
@@ -5531,7 +5594,7 @@ msgstr ""
#: frontend/src/components/AppSidebar.vue:610
#: frontend/src/components/Settings/Settings.vue:7
#: frontend/src/pages/BatchForm.vue:53 frontend/src/pages/CourseForm.vue:152
#: frontend/src/pages/BatchForm.vue:53 frontend/src/pages/CourseForm.vue:142
#: frontend/src/pages/ProfileRoles.vue:4
#: frontend/src/pages/ProgrammingExercises/ProgrammingExerciseSubmission.vue:19
#: frontend/src/pages/QuizForm.vue:86
@@ -5547,7 +5610,7 @@ msgid "Short Description"
msgstr ""
#. Label of the short_introduction (Small Text) field in DocType 'LMS Course'
#: frontend/src/pages/CourseForm.vue:86
#: frontend/src/pages/CourseForm.vue:185
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Short Introduction"
msgstr ""
@@ -5944,6 +6007,10 @@ msgstr ""
msgid "Suspicious pattern found in {0}: {1}"
msgstr ""
#: frontend/src/components/Controls/ColorSwatches.vue:50
msgid "Swatches"
msgstr ""
#. Name of a role
#: lms/job/doctype/job_opportunity/job_opportunity.json
#: lms/job/doctype/job_settings/job_settings.json
@@ -6006,6 +6073,11 @@ msgstr ""
msgid "Tags"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Teal"
msgstr ""
#: lms/templates/emails/community_course_membership.html:18
#: lms/templates/emails/mentor_request_creation_email.html:8
#: lms/templates/emails/mentor_request_status_update_email.html:7
@@ -6088,7 +6160,7 @@ msgstr ""
msgid "Thanks and Regards"
msgstr ""
#: lms/lms/utils.py:1975
#: lms/lms/utils.py:1980
msgid "The batch is full. Please contact the Administrator."
msgstr ""
@@ -6175,7 +6247,7 @@ msgstr ""
msgid "This course has:"
msgstr ""
#: lms/lms/utils.py:1818
#: lms/lms/utils.py:1823
msgid "This course is free."
msgstr ""
@@ -6358,7 +6430,7 @@ msgstr ""
msgid "To Date"
msgstr ""
#: lms/lms/utils.py:1829
#: lms/lms/utils.py:1834
msgid "To join this batch, please contact the Administrator."
msgstr ""
@@ -6495,7 +6567,7 @@ msgstr ""
#. Option for the 'Status' (Select) field in DocType 'Cohort'
#. Option for the 'Status' (Select) field in DocType 'LMS Certificate Request'
#. Label of the upcoming (Check) field in DocType 'LMS Course'
#: frontend/src/pages/Batches.vue:282 frontend/src/pages/CourseForm.vue:171
#: frontend/src/pages/Batches.vue:282 frontend/src/pages/CourseForm.vue:161
#: frontend/src/pages/Courses.vue:313 lms/lms/doctype/cohort/cohort.json
#: lms/lms/doctype/lms_certificate_request/lms_certificate_request.json
#: lms/lms/doctype/lms_course/lms_course.json
@@ -6522,7 +6594,7 @@ msgid "Update Password"
msgstr ""
#: frontend/src/components/Controls/Uploader.vue:20
#: frontend/src/pages/BatchForm.vue:227 frontend/src/pages/CourseForm.vue:117
#: frontend/src/pages/BatchForm.vue:227 frontend/src/pages/CourseForm.vue:100
msgid "Upload"
msgstr ""
@@ -6636,6 +6708,11 @@ msgstr ""
msgid "View all feedback"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Violet"
msgstr ""
#. Label of the visibility (Select) field in DocType 'LMS Batch Old'
#: lms/lms/doctype/lms_batch_old/lms_batch_old.json
msgid "Visibility"
@@ -6764,6 +6841,11 @@ msgstr ""
msgid "Write your answer here"
msgstr ""
#. Option for the 'Color' (Select) field in DocType 'LMS Course'
#: lms/lms/doctype/lms_course/lms_course.json
msgid "Yellow"
msgstr ""
#: lms/lms/doctype/lms_certificate_request/lms_certificate_request.py:95
msgid "You already have an evaluation on {0} at {1} for the course {2}."
msgstr ""
@@ -7000,6 +7082,11 @@ msgstr ""
msgid "activity"
msgstr ""
#: frontend/src/components/CourseInstructors.vue:22
#: frontend/src/components/CourseInstructors.vue:41
msgid "and"
msgstr ""
#: frontend/src/components/JobCard.vue:26 frontend/src/pages/JobDetail.vue:108
msgid "applicant"
msgstr ""
@@ -7032,7 +7119,8 @@ msgstr ""
msgid "certified members"
msgstr ""
#: frontend/src/pages/Lesson.vue:98 frontend/src/pages/Lesson.vue:234
#: frontend/src/components/CourseCard.vue:98 frontend/src/pages/Lesson.vue:98
#: frontend/src/pages/Lesson.vue:234
msgid "completed"
msgstr ""
@@ -7068,6 +7156,10 @@ msgstr ""
msgid "of"
msgstr ""
#: frontend/src/components/CourseInstructors.vue:41
msgid "others"
msgstr ""
#: lms/templates/quiz/quiz.js:141
msgid "out of"
msgstr ""
@@ -7164,7 +7256,7 @@ msgstr ""
msgid "{0} is your evaluator"
msgstr ""
#: lms/lms/utils.py:686
#: lms/lms/utils.py:689
msgid "{0} mentioned you in a comment"
msgstr ""
@@ -7172,7 +7264,7 @@ msgstr ""
msgid "{0} mentioned you in a comment in your batch."
msgstr ""
#: lms/lms/utils.py:639 lms/lms/utils.py:645
#: lms/lms/utils.py:642 lms/lms/utils.py:648
msgid "{0} mentioned you in a comment in {1}"
msgstr ""
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+385 -137
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+386 -138
View File
File diff suppressed because it is too large Load Diff
+386 -138
View File
File diff suppressed because it is too large Load Diff
+385 -137
View File
File diff suppressed because it is too large Load Diff
+389 -141
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+384 -136
View File
File diff suppressed because it is too large Load Diff
+386 -138
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -25,7 +25,7 @@
},
"homepage": "https://github.com/frappe/lms#readme",
"devDependencies": {
"cypress": "^13.9.0",
"cypress": "^14.5.2",
"cypress-file-upload": "^5.0.8",
"cypress-real-events": "^1.14.0"
},
+1 -1
View File
@@ -13,7 +13,7 @@ dependencies = [
"markdown~=3.5.1",
"beautifulsoup4~=4.12.2",
"lxml~=4.9.3",
"cairocffi~=1.6.1",
"cairocffi==1.5.1",
"razorpay~=1.4.1",
"fuzzywuzzy~=0.18.0",
]
+1374
View File
File diff suppressed because it is too large Load Diff