course-kit
Version:
UI Kit for Course Management System
563 lines (554 loc) • 27.6 kB
JavaScript
;
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
Course: () => Course
});
module.exports = __toCommonJS(src_exports);
var import_prismjs2 = __toESM(require("prismjs"));
// src/components/Course.tsx
var import_react4 = __toESM(require("react"));
// src/components/HeaderSection.tsx
var import_react = require("react");
var import_react_markdown = __toESM(require("react-markdown"));
var import_rehype_raw = __toESM(require("rehype-raw"));
var import_jsx_runtime = require("react/jsx-runtime");
var HeaderSection = (props) => {
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "coursekit-px-2 md:coursekit-px-4", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "coursekit-flex coursekit-flex-col coursekit-items-center coursekit-pb-16", children: [
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "coursekit-text-5xl md:coursekit-text-6xl coursekit-font-bold coursekit-pt-32 coursekit-text-center", children: props.headline }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: "coursekit-mt-4 coursekit-text-xl md:coursekit-text-2xl coursekit-text-center", children: props.subheadline }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
"img",
{
className: "coursekit-pt-16 md:coursekit-max-w-7xl md:coursekit-px-8 coursekit-pb-8 coursekit-max-h-[600px]",
src: props.image.startsWith("http") ? props.image : `https://hungrimind.com/${props.image}`
}
),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "coursekit-w-full coursekit-max-w-4xl content-section ", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_markdown.default, { rehypePlugins: [import_rehype_raw.default], children: props.content }) }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "coursekit-flex coursekit-justify-center coursekit-p-2 coursekit-space-x-4", children: props.links.map((link, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
"a",
{
href: link.url,
target: "_blank",
className: "coursekit-py-2.5 coursekit-px-5 coursekit-mt-2 coursekit-font-medium coursekit-text-center coursekit-text-white coursekit-bg-black dark:coursekit-text-black dark:coursekit-bg-white coursekit-rounded",
children: (() => {
switch (link.type) {
case "github":
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: "Course Code" });
case "discord":
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: "Join Community" });
default:
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: "Error" });
}
})()
},
index
)) }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
"p",
{
id: "setup",
className: "coursekit-mt-16 coursekit-pb-8 coursekit-text-2xl",
children: "\u2B05 Click the check button to get started"
}
)
] }) });
};
var HeaderSection_default = HeaderSection;
// src/components/SlideSection.tsx
var import_prismjs = __toESM(require("prismjs"));
var import_prism_dart = require("prismjs/components/prism-dart");
var import_prism_markdown = require("prismjs/components/prism-markdown");
var import_prism_yaml = require("prismjs/components/prism-yaml");
var import_prism_line_highlight = require("prismjs/plugins/line-highlight/prism-line-highlight");
var import_react2 = require("react");
var import_react_markdown2 = __toESM(require("react-markdown"));
var import_rehype_raw2 = __toESM(require("rehype-raw"));
var import_lucide_react = require("lucide-react");
var import_jsx_runtime2 = require("react/jsx-runtime");
var SlideSection = (props) => {
(0, import_react2.useEffect)(() => {
console.log("highlighting in package");
import_prismjs.default.highlightAll();
});
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "coursekit-relative coursekit-flex coursekit-h-full coursekit-w-full", children: [
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"div",
{
className: `${props.previewOpen ? "coursekit-backdrop-blur" : "coursekit-opacity-0 coursekit-hidden"} coursekit-transition-opacity coursekit-absolute coursekit-w-full coursekit-h-full coursekit-z-10`
}
),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("section", { className: "coursekit-hidden sm:coursekit-flex coursekit-w-full", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
DesktopView,
{
content: props.content,
previewOpen: props.previewOpen,
setPreviewOpen: props.setPreviewOpen
}
) }),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("section", { className: "sm:coursekit-hidden coursekit-w-full", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
MobileView,
{
content: props.content,
previewOpen: props.previewOpen,
setPreviewOpen: props.setPreviewOpen
}
) })
] });
};
var DesktopView = ({
content,
previewOpen,
setPreviewOpen
}) => {
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "coursekit-flex coursekit-overflow-y-auto coursekit-h-full coursekit-w-full coursekit-items-center coursekit-relative", children: [
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "content-section coursekit-w-1/2 coursekit-my-auto coursekit-py-16", children: [
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("h2", { className: "coursekit-px-4 coursekit-text-4xl coursekit-font-bold", children: content.heading }),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: "coursekit-px-4", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_markdown2.default, { rehypePlugins: [import_rehype_raw2.default], children: content.content }) })
] }),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CodeImageThing, { content }),
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
"div",
{
className: `${previewOpen ? "coursekit-scale-100" : "coursekit-scale-0"} coursekit-absolute coursekit-left-0 coursekit-right-0 coursekit-bottom-0 coursekit-top-0 coursekit-flex coursekit-justify-center coursekit-items-center coursekit-z-20`,
children: [
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
import_lucide_react.X,
{
onClick: () => setPreviewOpen(!previewOpen),
className: "coursekit-z-20 coursekit-absolute coursekit-top-4 coursekit-right-4 hover:coursekit-cursor-pointer"
}
),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"img",
{
className: `${previewOpen ? "coursekit-scale-100" : "coursekit-scale-0"} coursekit-object-contain coursekit-shadow-2xl coursekit-mb-2 coursekit-rounded-xl coursekit-transition-transform coursekit-max-w-[90%] coursekit-max-h-[90%]`,
src: content?.previewImage?.startsWith("http") ?? "" ? content?.previewImage : `../../../${content?.previewImage}`,
alt: "Preview"
}
)
]
}
)
] });
};
var MobileView = ({
content,
previewOpen,
setPreviewOpen
}) => {
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "content-section coursekit-overflow-hidden coursekit-p-4", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { children: [
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"h2",
{
className: ` coursekit-text-4xl coursekit-font-bold sm:coursekit-transition-opacity coursekit-duration-500`,
children: content?.heading
}
),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"p",
{
className: ` coursekit-pb-16 sm:coursekit-transition-opacity coursekit-duration-500 `,
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_markdown2.default, { rehypePlugins: [import_rehype_raw2.default], children: content?.content })
}
),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "coursekit-h-16" })
] }) }),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(CodeImageThing, { content }),
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
"div",
{
className: `${previewOpen ? "coursekit-scale-100" : "coursekit-scale-0"} coursekit-absolute coursekit-left-0 coursekit-right-0 coursekit-bottom-0 coursekit-top-0 coursekit-flex coursekit-justify-center coursekit-items-center coursekit-z-20`,
children: [
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
import_lucide_react.X,
{
onClick: () => setPreviewOpen(!previewOpen),
className: "coursekit-z-20 coursekit-absolute coursekit-top-4 coursekit-right-4 hover:coursekit-cursor-pointer"
}
),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"img",
{
className: `${previewOpen ? "coursekit-scale-100" : "coursekit-scale-0"} coursekit-object-contain coursekit-shadow-2xl coursekit-mb-2 coursekit-rounded-xl coursekit-max-w-[90%] coursekit-max-h-[90%]`,
src: content?.previewImage?.startsWith("http") ?? "" ? content?.previewImage : `../../../${content?.previewImage}`,
alt: "Preview"
}
)
]
}
)
] });
};
function CodeImageThing({ content }) {
function highlightTranslator(type) {
if (type === "flutter") {
return "language-dart";
}
return `language-${type}`;
}
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "coursekit-sticky coursekit-top-0 coursekit-h-full sm:coursekit-block sm:coursekit-w-1/2 coursekit-pb-16 sm:coursekit-pb-0", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "coursekit-overflow-visible coursekit-relative coursekit-h-full coursekit-rounded-xl", children: (() => {
switch (content?.type) {
case "image":
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "coursekit-flex coursekit-h-full coursekit-justify-center coursekit-items-center coursekit-p-4 coursekit-mb-20 ", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"img",
{
className: "coursekit-object-contain coursekit-max-h-full coursekit-rounded-xl",
src: content.value.startsWith("http") ? content.value : `/${content.value}`,
alt: "Comment"
}
) });
case "text":
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "coursekit-flex coursekit-justify-start coursekit-items-center coursekit-p-4 coursekit-h-full coursekit-text-white", children: content.value });
case "md":
case "yaml":
case "flutter":
return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "coursekit-overflow-y-auto coursekit-h-full coursekit-text-white coursekit-flex coursekit-flex-col", children: [
content?.file !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: " coursekit-text-black dark:coursekit-text-white coursekit-px-4 coursekit-py-1", children: content.file }),
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"pre",
{
className: "line-numbers coursekit-pl-0 coursekit-flex-1",
"data-line": content.highlight ?? "",
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
"code",
{
className: `coursekit-pl-0 ${highlightTranslator(
content.type
)}`,
children: content.value
}
)
}
)
] });
default:
return null;
}
})() }) });
}
var SlideSection_default = SlideSection;
// src/components/Course.tsx
var import_lucide_react2 = require("lucide-react");
// src/components/MarkdownSection.tsx
var import_react3 = require("react");
var import_react_markdown3 = __toESM(require("react-markdown"));
var import_rehype_raw3 = __toESM(require("rehype-raw"));
var import_jsx_runtime3 = require("react/jsx-runtime");
var MarkdownSection = (props) => {
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "coursekit-flex coursekit-flex-col coursekit-p-4 coursekit-pb-16 coursekit-max-w-4xl coursekit-mx-auto", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "content-section", children: [
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { children: props.heading }),
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_markdown3.default, { rehypePlugins: [import_rehype_raw3.default], children: props.content })
] }) });
};
var MarkdownSection_default = MarkdownSection;
// src/components/Course.tsx
var import_jsx_runtime4 = require("react/jsx-runtime");
var Course = ({
id,
lessons,
canExit,
canScroll,
menuHoverColor,
menuSelectedColor,
onIndexChange
}) => {
const [previewOpen, setPreviewOpen] = import_react4.default.useState(false);
const [menuOpen, setMenuOpen] = import_react4.default.useState(false);
const listItemRef = (0, import_react4.useRef)(null);
const divRef = import_react4.default.useRef(null);
const [cookieArray, setCookieArray] = import_react4.default.useState(
void 0
);
import_react4.default.useEffect(() => {
const cookie = document.cookie.split(";").find((cookie2) => cookie2.includes(`current-position-for-${id}`));
if (cookie) {
const currentLessonId = cookie.split("=")[1];
console.log(lessons.findIndex((l) => l.id == currentLessonId));
setIndex(lessons.findIndex((l) => l.id == currentLessonId));
}
let cookieArray2 = document.cookie.split("; ").find((row) => row.startsWith(`progress-for-${id}`))?.split("=")[1].split(",");
setCookieArray(cookieArray2);
}, [lessons]);
const [currentIndex, setIndex] = import_react4.default.useState(0);
import_react4.default.useEffect(() => {
if (canScroll === false)
return;
if (menuOpen) {
listItemRef.current.scrollIntoView({
behavior: "smooth",
block: "center"
});
}
}, [menuOpen, listItemRef, currentIndex]);
import_react4.default.useEffect(() => {
if (onIndexChange) {
onIndexChange(currentIndex);
}
if (divRef.current) {
divRef.current.scrollTo({
top: 0
});
}
}, [currentIndex]);
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
"div",
{
id: "course-component",
className: "coursekit-bg-white dark:coursekit-bg-neutral-950 dark:coursekit-text-white coursekit-flex coursekit-h-full coursekit-w-full coursekit-relative",
children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
"div",
{
className: `sm:coursekit-basis-64 sm:coursekit-z-0 sm:coursekit-relative coursekit-border-r dark:coursekit-border-r-neutral-700 coursekit-overflow-y-auto coursekit-transition-opacity ${menuOpen ? "coursekit-opacity-100 coursekit-block" : "coursekit-opacity-0 coursekit-hidden"} coursekit-fixed coursekit-z-50 coursekit-h-full coursekit-w-full coursekit-bg-white dark:coursekit-bg-neutral-950 `,
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "side-menu-content", children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "coursekit-py-4 coursekit-pr-4 coursekit-pl-2 coursekit-sticky coursekit-top-0 coursekit-border-b dark:coursekit-border-b-neutral-700 coursekit-backdrop-blur", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "coursekit-flex coursekit-justify-between", children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("button", { onClick: () => setMenuOpen(false), className: "btn-ghost", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.PanelLeftClose, { size: 24 }) }),
canExit && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("a", { href: "/courses", className: "btn-ghost", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "coursekit-text-red-400", children: "Exit Course" }) })
] }) }),
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { className: "coursekit-py-4 coursekit-px-4", children: lessons.map((section, index) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
"button",
{
onClick: () => {
setIndex(index);
document.cookie = `current-position-for-${id}=${section.id}`;
setPreviewOpen(false);
if (window.innerWidth < 640) {
setMenuOpen(false);
}
},
ref: index === currentIndex ? listItemRef : void 0,
className: `coursekit-block coursekit-w-full coursekit-p-2 coursekit-text-left ${menuHoverColor != null ? menuHoverColor : "hover:coursekit-bg-neutral-100 dark:hover:coursekit-bg-neutral-800"} ${index === currentIndex ? `${menuSelectedColor != null ? menuSelectedColor : "coursekit-bg-neutral-200 dark:coursekit-bg-neutral-700"} coursekit-rounded` : ""} ${cookieArray?.includes(section.id.toString()) ? "dark:coursekit-text-green-300 coursekit-text-green-600" : ""}`,
children: (() => {
switch (section.sectionType) {
case "header":
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: "Introduction" });
default:
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { children: section.heading });
}
})()
}
) }, index)) })
] })
}
),
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
"div",
{
className: "coursekit-relative coursekit-transition-opacity coursekit-w-full coursekit-overflow-y-auto",
ref: divRef,
children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
BottomNavigation,
{
courseId: id,
currentIndex,
previewOpen,
setIndex,
contentLength: lessons.length,
setPreviewOpen,
content: lessons,
menuOpen,
setMenuOpen,
cookieArray,
setCookieArray
}
),
(() => {
switch (lessons[currentIndex].sectionType) {
case "slide":
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
SlideSection_default,
{
content: lessons[currentIndex],
previewOpen,
setPreviewOpen
}
);
case "md":
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
MarkdownSection_default,
{
...lessons[currentIndex]
}
);
case "header":
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
HeaderSection_default,
{
...lessons[currentIndex]
}
);
default:
return null;
}
})()
]
}
)
]
}
);
};
function BottomNavigation({
courseId,
currentIndex,
previewOpen,
contentLength,
setIndex,
setPreviewOpen,
content,
menuOpen,
setMenuOpen,
cookieArray,
setCookieArray
}) {
const completeRef = import_react4.default.useRef(null);
const hasPreview = content[currentIndex] !== void 0 && "previewImage" in content[currentIndex];
import_react4.default.useEffect(() => {
document.addEventListener("keydown", function(event) {
const keyPressed = event.key.toLowerCase();
if (keyPressed === "c" && !event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey) {
completeKeymap();
}
});
}, []);
function completeKeymap() {
const item = completeRef.current;
if (!item)
return;
item.classList.add("coursekit-scale-75");
setTimeout(() => {
item.classList.remove("coursekit-scale-75");
}, 100);
completeRef.current?.click();
completeRef.current?.focus();
}
function onClickComplete() {
if (!cookieArray) {
cookieArray = [];
}
if (!cookieArray.includes(content[currentIndex].id.toString())) {
cookieArray.push(content[currentIndex].id.toString());
setCookieArray(cookieArray);
}
document.cookie = `progress-for-${courseId}=${cookieArray}`;
if (currentIndex === contentLength - 1) {
return;
}
if (content[currentIndex + 1].sectionType !== "slide" || content[currentIndex + 1].previewImage === void 0) {
setPreviewOpen(false);
}
setIndex(currentIndex + 1);
console.log(content[currentIndex]);
document.cookie = `current-position-for-${courseId}=${content[currentIndex + 1].id}`;
}
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "coursekit-absolute coursekit-bottom-16 coursekit-left-8 coursekit-z-40", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "coursekit-fixed", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "coursekit-flex coursekit-h-full coursekit-items-center coursekit-justify-center coursekit-space-x-4 coursekit-rounded", children: [
!menuOpen && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
"button",
{
"data-tooltip-target": "tooltip-menu",
type: "button",
className: "btn-default",
onClick: () => setMenuOpen(!menuOpen),
children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "coursekit-w-full coursekit-h-full coursekit-flex coursekit-items-center coursekit-justify-center active:coursekit-scale-75 coursekit-transition-transform", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.PanelLeftOpen, { size: 28 }) }),
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "coursekit-sr-only", children: "Menu" })
]
}
),
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
"button",
{
"data-tooltip-target": "tooltip-complete",
type: "button",
className: "btn-default",
onClick: onClickComplete,
children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
"div",
{
ref: completeRef,
className: "coursekit-w-full coursekit-h-full coursekit-flex coursekit-items-center coursekit-justify-center active:coursekit-scale-75 coursekit-transition-transform",
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.CheckIcon, { size: 28 })
}
),
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "coursekit-sr-only", children: "Complete" })
]
}
),
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
"div",
{
id: "tooltip-complete",
role: "tooltip",
className: "coursekit-absolute coursekit-z-10 coursekit-invisible coursekit-inline-block coursekit-px-3 coursekit-py-2 coursekit-text-sm coursekit-font-medium coursekit-text-white coursekit-transition-opacity coursekit-duration-300 coursekit-bg-neutral-900 coursekit-rounded-lg coursekit-shadow-sm coursekit-opacity-0 tooltip dark:coursekit-bg-neutral-700",
children: [
"Complete",
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "tooltip-arrow", "data-popper-arrow": true })
]
}
),
hasPreview && /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
"button",
{
onClick: () => setPreviewOpen(!previewOpen),
"data-tooltip-target": "tooltip-preview",
type: "button",
className: "btn-default",
children: [
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "coursekit-w-full coursekit-h-full coursekit-flex coursekit-items-center coursekit-justify-center active:coursekit-scale-75 coursekit-transition-transform", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_lucide_react2.Smartphone, { size: 28 }) }),
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "coursekit-sr-only", children: "Preview" })
]
}
),
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
"div",
{
id: "tooltip-preview",
role: "tooltip",
className: "coursekit-absolute coursekit-z-10 coursekit-invisible coursekit-inline-block coursekit-px-3 coursekit-py-2 coursekit-text-sm coursekit-font-medium coursekit-text-white coursekit-transition-opacity coursekit-duration-300 coursekit-bg-neutral-900 coursekit-rounded-lg coursekit-shadow-sm coursekit-opacity-0 tooltip dark:coursekit-bg-neutral-700",
children: [
"Preview",
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "tooltip-arrow", "data-popper-arrow": true })
]
}
)
] })
] }) }) });
}
// src/index.ts
import_prismjs2.default.highlightAll();
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
Course
});