feat: add profile, class unenroll, notify toggles, and keep sidebar width

Give admins a profile password page, class removal, and SMS/email/bot checkboxes, and stop the sidebar from shrinking on edit pages.
This commit is contained in:
2026-08-15 23:48:18 +03:30
parent 7b083d5dbc
commit 3f220dda52
13 changed files with 427 additions and 17 deletions
@@ -0,0 +1,44 @@
<!-- /src/components/common/NotifyChannelsField.vue -->
<template>
<fieldset class="notify-channels m-0 p-3 border-1 border-color border-round">
<legend class="font-semibold text-sm px-2">ارسال اطلاعرسانی</legend>
<div class="flex flex-column sm:flex-row flex-wrap gap-3">
<div class="flex align-items-center gap-2">
<Checkbox v-model="notify.sms" binary inputId="notify-sms" />
<label for="notify-sms" class="text-sm cursor-pointer">ارسال پیامک</label>
</div>
<div class="flex align-items-center gap-2">
<Checkbox v-model="notify.email" binary inputId="notify-email" />
<label for="notify-email" class="text-sm cursor-pointer">ارسال ایمیل</label>
</div>
<div class="flex align-items-center gap-2">
<Checkbox v-model="notify.bot" binary inputId="notify-bot" />
<label for="notify-bot" class="text-sm cursor-pointer">ارسال پیام ربات</label>
</div>
</div>
<p class="text-xs text-muted m-0 mt-2 line-height-3">
پیامک در صورت فعال بودن ارسال میشود. ارسال ایمیل و پیام ربات هنوز پیادهسازی نشده است.
</p>
</fieldset>
</template>
<script setup>
import Checkbox from 'primevue/checkbox';
defineProps({
notify: {
type: Object,
required: true
}
});
</script>
<style scoped>
.notify-channels {
background: var(--surface-ground, transparent);
}
.notify-channels legend {
color: var(--text-color);
}
</style>