feat: certification rules, content sanitization, handle draft course updates and reset content, better redis logging

This commit is contained in:
Rotimi Best
2026-03-30 08:24:55 +01:00
parent ff2ad59377
commit 5a8f50f67b
131 changed files with 5643 additions and 2134 deletions
@@ -0,0 +1,38 @@
<script lang="ts">
import * as UnderlineTabs from '@cio/ui/custom/underline-tabs';
import { t } from '$lib/utils/functions/translations';
import { UpgradeBanner } from '$features/ui';
import CertificateDesign from './certificate-design.svelte';
import CertificateSettings from './certificate-settings.svelte';
type Props = {
errors: Record<string, string>;
};
let { errors }: Props = $props();
let activeTab = $state('design');
</script>
<UpgradeBanner>{$t('upgrade.certificate')}</UpgradeBanner>
<main class="px-2 md:-mr-3 md:-ml-3">
<UnderlineTabs.Root bind:value={activeTab} class="w-full">
<UnderlineTabs.List>
<UnderlineTabs.Trigger value="design">
{$t('course.navItem.certificates.tab_design')}
</UnderlineTabs.Trigger>
<UnderlineTabs.Trigger value="settings">
{$t('course.navItem.certificates.tab_settings')}
</UnderlineTabs.Trigger>
</UnderlineTabs.List>
<UnderlineTabs.Content value="design" class="mt-4">
<CertificateDesign {errors} />
</UnderlineTabs.Content>
<UnderlineTabs.Content value="settings" class="mt-4">
<CertificateSettings {errors} />
</UnderlineTabs.Content>
</UnderlineTabs.Root>
</main>