Adds live-class session scheduling on lessons (join link, date/time, timezone) with automatic 24h and 1h reminder emails plus a calendar invite (.ics), a time-change notification with an updated invite, a teacher-authored welcome email and session invite on enrollment, and a "Notify students" quiz nudge. LMS gets an upcoming live-sessions card and Join buttons, plus a reusable live-session card component (3 states) in @cio/ui with a Storybook story. The sidebar content tree now reflects sequential progression locking like the content list, and the course-completion confetti regression is fixed. Org-based emails no longer reference ClassroomIO by name. Docs add live-class, welcome-email, and course-progression guides, expand the certificates guide (design, signatures, corrected labels), move plan-required callouts to the top, flatten how-to-guides to the docs root with redirects, and add screenshots. Includes an add-docs-image skill.
117 lines
4.9 KiB
HTML
117 lines
4.9 KiB
HTML
<!doctype html>
|
||
<html lang="en" class="scroll-smooth">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||
<meta name="theme-color" content="#333333" />
|
||
|
||
<!-- Fonts as <link> (not @import in app.css) so Tailwind isn’t blocked on first paint -->
|
||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
<!-- Geist (site body font) — synchronous so first paint has the brand font. -->
|
||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Geist:wght@100..900&display=swap" />
|
||
|
||
<!-- JetBrains Mono (code blocks) — non-blocking. Preload as a stylesheet, then swap rel to apply. -->
|
||
<link
|
||
rel="preload"
|
||
as="style"
|
||
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap"
|
||
onload="this.onload=null;this.rel='stylesheet'"
|
||
/>
|
||
<noscript>
|
||
<link
|
||
rel="stylesheet"
|
||
href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap"
|
||
/>
|
||
</noscript>
|
||
|
||
<!-- <title>ClassroomIO – The Open Source Learning Management System for Companies</title>
|
||
<meta name="description" content="ClassroomIO" />
|
||
<meta name="application-name" content="ClassroomIO" />
|
||
<meta name="apple-mobile-web-app-title" content="ClassroomIO" />
|
||
<meta name="theme-color" content="#ffffff" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1" /> -->
|
||
|
||
<!-- Facebook Meta Tags -->
|
||
<!-- <meta property="og:url" content="https://www.classroomio.com/" />
|
||
<meta property="og:image" itemprop="image" content="https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg" />
|
||
<meta property="og:title" content="ClassroomIO – The Open Source Learning Management System for Companies" />
|
||
<meta property="og:description"
|
||
content="A flexible, user-friendly platform for creating, managing, and delivering trainings for companies and training organisations" />
|
||
|
||
<meta property="og:type" content="website" />
|
||
<meta property="og:image:type" content="image/jpeg" />
|
||
<meta property="og:image:width" content="1920" />
|
||
<meta property="og:image:height" content="1080" />
|
||
<meta property="og:image:secure_url" itemprop="image" content="https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg" />
|
||
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<meta property="twitter:domain" content="classroomio.com" />
|
||
<meta property="twitter:url" content="https://www.classroomio.com/" />
|
||
<meta name="twitter:title" content="ClassroomIO – The Open Source Learning Management System for Companies" />
|
||
<meta name="twitter:description"
|
||
content="Launch your bootcamp quickly with the open source online teaching platform." />
|
||
<meta name="twitter:image" content="https://brand.cdn.clsrio.com/og/classroomio-opengraph.jpg" /> -->
|
||
|
||
<!-- <link rel="stylesheet" href="global.css"> -->
|
||
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
|
||
<link rel="icon" type="image/png" href="/favicon.ico" />
|
||
<link rel="icon" type="image/png" sizes="32x32" href="/logo-32.png" />
|
||
|
||
<!-- <link rel="stylesheet" href="global.css"> -->
|
||
<link rel="manifest" href="/manifest.json" crossorigin="use-credentials" />
|
||
<link rel="icon" type="image/png" href="/favicon.ico" />
|
||
<link rel="icon" type="image/png" sizes="32x32" href="/logo-32.png" />
|
||
|
||
<script
|
||
defer
|
||
src="https://umami.hz.oncws.com/script.js"
|
||
data-website-id="5321d227-751a-4d43-8556-f516fba60891"
|
||
></script>
|
||
|
||
<script defer type="text/javascript">
|
||
(function (C, A, L) {
|
||
let p = function (a, ar) {
|
||
a.q.push(ar);
|
||
};
|
||
let d = C.document;
|
||
C.Cal =
|
||
C.Cal ||
|
||
function () {
|
||
let cal = C.Cal;
|
||
let ar = arguments;
|
||
if (!cal.loaded) {
|
||
cal.ns = {};
|
||
cal.q = cal.q || [];
|
||
d.head.appendChild(d.createElement('script')).src = A;
|
||
cal.loaded = true;
|
||
}
|
||
if (ar[0] === L) {
|
||
const api = function () {
|
||
p(api, arguments);
|
||
};
|
||
const namespace = ar[1];
|
||
api.q = api.q || [];
|
||
typeof namespace === 'string' ? (cal.ns[namespace] = api) && p(api, ar) : p(cal, ar);
|
||
return;
|
||
}
|
||
p(cal, ar);
|
||
};
|
||
})(window, 'https://app.cal.com/embed/embed.js', 'init');
|
||
Cal('init', { origin: 'https://cal.com' });
|
||
|
||
Cal('ui', {
|
||
theme: 'light',
|
||
styles: { branding: { brandColor: '#1D4EE2' } },
|
||
hideEventTypeDetails: false,
|
||
layout: 'month_view'
|
||
});
|
||
</script>
|
||
%sveltekit.head%
|
||
</head>
|
||
|
||
<body data-sveltekit-preload-data="hover">
|
||
<div style="display: contents">%sveltekit.body%</div>
|
||
</body>
|
||
</html>
|