Training Course Builder
Run ID: 69ccc01d3e7fb09ff16a4c2b2026-04-01Education
PantheraHive BOS
BOS Dashboard

Build a complete training course with modules, lesson plans, quizzes, hands-on exercises, and certification criteria for any subject.

Training Course Builder: Research & Design Requirements

This document outlines the comprehensive research and design requirements for the "Training Course Builder" platform. The goal is to create an intuitive, powerful, and professional tool that enables users to easily build, manage, and deploy high-quality training courses on any subject. This output serves as a foundational deliverable, detailing the core functionalities, user experience, and aesthetic guidelines for the platform's development.


1. Project Overview & Core Objectives

The "Training Course Builder" is envisioned as a robust, user-friendly platform designed to empower individuals and organizations to create structured and engaging training content. It will facilitate the development of complete courses, from initial concept to certification, by providing dedicated tools for module creation, lesson planning, interactive quizzes, practical exercises, and defining certification criteria.

Core Objectives:

  • Ease of Use: Provide an intuitive drag-and-drop interface and rich-text editors to simplify course content creation.
  • Comprehensive Features: Offer a full suite of tools for all aspects of course development, including multimedia integration, varied assessment types, and practical application components.
  • Professional Output: Ensure that courses created using the builder look professional and are ready for deployment across various learning environments.
  • Flexibility & Customization: Allow for extensive customization of course structure, content, branding, and certification rules.
  • Scalability: Design a system that can accommodate a wide range of course sizes and complexities.

2. Detailed Design Specifications

This section defines the core modules and technical considerations for the Training Course Builder platform.

2.1. Core Platform Modules & Features

A. Course Management Dashboard:

  • Course Listing: Display all created courses with status (Draft, Published, Archived), creation date, and last modified date.
  • "Create New Course" Functionality: A clear call-to-action to start a new course.
  • Search & Filter: Ability to search courses by title, tags, or status.
  • Quick Stats: Overview of active courses, learners (if integrated with an LMS), and completion rates.

B. Course Settings & Overview:

  • General Information:

* Course Title & Short Description

* Detailed Course Description (rich-text editor)

* Target Audience & Prerequisites

* Learning Objectives (bulleted list input)

* Course Thumbnail/Cover Image Upload

* Course Tags/Keywords

  • Branding & Customization:

* Option to upload organizational logo.

* Customizable color palette for the learner-facing course interface.

* Font selection for course content.

C. Module & Lesson Builder:

  • Module Management:

* Add/Edit/Delete modules.

* Drag-and-drop reordering of modules.

* Module Title & Description.

  • Lesson Management within Modules:

* Add/Edit/Delete lessons.

* Drag-and-drop reordering of lessons within modules.

* Lesson Title & Type (e.g., Text, Video, Quiz, Exercise).

  • Rich Content Editor for Lessons:

* WYSIWYG editor for text, headings, lists, tables.

* Multimedia Integration:

* Image upload and embedding (with alt text).

* Video embedding (YouTube, Vimeo, or direct upload).

* Audio embedding.

* File attachments (PDFs, documents).

* Code snippets/blocks.

* Embed external content (e.g., Google Docs, interactive elements).

D. Quiz Builder:

  • Question Types:

* Multiple Choice (single correct answer)

* Multiple Select (multiple correct answers)

* True/False

* Short Answer (manual grading option)

* Fill-in-the-Blanks

  • Question Configuration:

* Question text (rich-text support).

* Options input (for MCQs, MSQs).

* Correct answer selection.

* Feedback for correct/incorrect answers.

* Point value per question.

* Randomize question order within a quiz.

* Time limit per quiz (optional).

* Number of attempts allowed.

E. Hands-on Exercise Creator:

  • Exercise Description: Rich-text editor for detailed instructions, context, and learning goals.
  • Submission Requirements:

* Text input field for open-ended responses.

* File upload capability (e.g., code files, documents, images).

* Checklist of required actions/deliverables.

  • Grading Criteria: Rubric builder for instructors (if manual grading is enabled).
  • Expected Outcomes/Solutions: Private section for course creators to define expected results or provide sample solutions.

F. Certification Criteria & Generator:

  • Completion Rules:

* Require completion of all modules/lessons.

* Minimum score on quizzes (e.g., 70% overall).

* Completion/approval of all hands-on exercises.

* Minimum time spent in course.

  • Certificate Template Customization:

* Upload custom logo.

* Editable text fields (e.g., "Certificate of Completion," "Awarded To," "For Successful Completion Of").

* Dynamic fields for learner name, course title, date of completion.

* Digital signature upload.

* Preview functionality.

G. Course Preview & Publishing:

  • Learner View Preview: A full preview of how the course will appear to learners, including navigation, content, quizzes, and exercises.
  • Publish Options:

* Generate SCORM/xAPI package for LMS integration.

* Direct link sharing (if hosted by the platform).

* Embed code for websites.

  • Version Control: Basic versioning for published courses.

2.2. Technical Requirements (High-Level)

  • Cloud-Based Architecture: Scalable and accessible from anywhere.
  • Responsive Design: Optimized for desktop, tablet, and mobile devices.
  • Robust Security: Data encryption, user authentication (OAuth 2.0/JWT), access control.
  • API Integrations (Future Scope): Potential integrations with popular LMS platforms, payment gateways, and analytics tools.
  • Performance Optimization: Fast loading times, efficient content rendering.
  • Data Storage: Secure and reliable storage for course content, user data, and media files.

3. Wireframe Descriptions (Key Screens)

The following descriptions outline the key elements and layout for essential screens within the Training Course Builder.

3.1. Dashboard / Course Overview

  • Layout: Two-column layout.

* Left Sidebar: Global navigation (Dashboard, Create Course, Settings, Help).

* Main Content Area:

* Header: "My Courses" with "Create New Course" button (primary action, top right).

* Course Cards: Grid or list view of courses. Each card displays:

* Course Title

* Thumbnail Image

* Status (Draft, Published)

* Last Modified Date

* Action buttons (Edit, Preview, Publish/Manage, Delete).

* Filters/Search Bar: Above course cards for easy navigation.

3.2. Course Editor (Module & Lesson Management)

  • Layout: Three-column layout, highly interactive.

* Left Sidebar (Course Structure):

* Collapsible list of Modules.

* Under each module, a collapsible list of Lessons.

* "Add Module" button at the top, "Add Lesson" button within each module section.

* Drag-and-drop functionality for reordering modules and lessons.

* Context menu (right-click or ellipsis icon) for Edit/Delete Module/Lesson.

* Middle Column (Content Editor):

* Header: Displays current Module > Lesson title.

* Toolbar: Rich-text editor controls (bold, italic, lists, links, media insert, code block, etc.).

* Main Content Area: WYSIWYG editor for lesson content. Dynamic based on lesson type (e.g., text editor for "Text Lesson," question fields for "Quiz").

* Contextual Tools: Buttons/panels to "Add Quiz," "Add Exercise," "Add Resource" (appearing when relevant).

* Right Sidebar (Lesson Settings / Preview):

* Lesson Settings: Visibility (Published/Draft), duration estimate, associated tags.

* Resource Panel: List of attached files, links for the current lesson.

* Quick Preview: Mini-preview of the current lesson's content.

* Save/Auto-Save Indicator: Persistent at the bottom.

3.3. Quiz Builder Interface

  • Layout: Two-column or modal-based.

* Left Panel (Question List):

* List of questions in the current quiz.

* "Add New Question" button.

* Drag-and-drop to reorder questions.

* Each item shows question type and a snippet of the question text.

* Right Panel (Question Editor):

* Question Type Selector: Dropdown (Multiple Choice, True/False, etc.).

* Question Text Area: Rich-text editor.

* Options Input: Dynamic based on question type (e.g., input fields for MCQ options with radio buttons for correct answer, checkbox for multiple correct).

* Feedback Fields: Text areas for "Correct Feedback" and "Incorrect Feedback."

* Point Value Input.

* Save Question / Cancel Buttons.

* Quiz Settings (at top): Title, description, time limit, attempts, randomize questions.

3.4. Certification Criteria Page

  • Layout: Single-column form-based.

* Header: "Certification Settings."

* Completion Rules Section:

* Checkboxes: "Require all lessons to be completed," "Require all quizzes to be passed."

* Input fields: "Minimum overall quiz score (%)", "Minimum time spent (hours/minutes)".

* Dropdown: "Require approval for all hands-on exercises."

* Certificate Design Section:

* Preview Area: Displays a live preview of the certificate.

* Customization Options:

* Logo Upload.

* Text fields for editable elements (e.g., "Awarded To," "Course Title").

* Signature upload.

* Date format selector.

* "Generate Sample Certificate" Button.

* Save Changes Button.


4. Color Palettes

The color palette aims for a professional, modern, and inviting aesthetic, promoting clarity and focus for the user.

  • Primary Brand Color (Accent):

* Purpose: Calls-to-action, active states, key highlights.

* Color: #007BFF (Vibrant Blue)

* Rationale: Evokes trust, professionalism, and innovation. Highly visible.

  • Secondary Brand Color:

* Purpose: Secondary actions, subtle branding elements, text links.

* Color: #6C757D (Medium Gray)

* Rationale: Provides a neutral yet sophisticated contrast to the primary blue, ensuring readability.

  • Neutral Palette (Backgrounds & Text):

* Backgrounds:

* Light Background: #F8F9FA (Off-white/Light Gray) - For main content areas.

* Darker Background: #E9ECEF (Slightly Darker Gray) - For sidebars, card backgrounds.

* White: #FFFFFF - For active editor areas, modals.

* Text:

* Primary Text: #212529 (Dark Gray/Black) - For headings, main body text.

* Secondary Text: #495057 (Medium-Dark Gray) - For descriptions, helper text.

* Disabled Text: #ADB5BD (Light Gray) - For inactive elements.

  • System Status Colors:

* Success: #28A745 (Green) - For successful operations, completion.

* Warning: #FFC107 (Amber) - For warnings, attention required.

* Error: #DC3545 (Red) - For errors, critical alerts.

* Information: #17A2B8 (Teal) - For informational messages.


5. UX Recommendations

These recommendations focus on creating a highly usable, efficient, and enjoyable experience for course creators.

  • Intuitive Navigation:

* Global Navigation: Persistent sidebar or header navigation for major sections (Dashboard, Courses, Settings).

* Contextual Navigation: Breadcrumbs for hierarchical navigation within a course (e.g., Course > Module > Lesson).

* Clear Labeling: Use concise and descriptive labels for all navigation items and buttons.

  • Visual Hierarchy & Consistency:

* Clear Distinction: Use variations in font size, weight, and color to differentiate headings, body text, and interactive elements.

* Consistent Elements: Maintain a uniform look and feel for buttons, input fields, icons, and modals across the platform.

* Whitespace: Utilize ample whitespace to reduce cognitive load and improve readability.

  • Direct Manipulation & Feedback:

* Drag-and-Drop: Implement drag-and-drop for reordering modules, lessons, and quiz questions.

* Instant Feedback: Provide immediate visual or textual feedback for user actions (e.g., "Saved successfully," highlighting active elements, error messages next to relevant fields).

* Progress Indicators: For lengthy processes (e.g., uploading large files, publishing a course), show clear progress bars.

  • Efficiency & Productivity:

* Auto-Save: Implement auto-save functionality for all content creation areas to prevent data loss.

* Keyboard Shortcuts: Offer common shortcuts for editing (e.g., bold, italic, undo/redo).

* Bulk Actions: Allow for selecting multiple items (e.g., lessons) for bulk editing or deletion

gemini Output

Training Course Builder: Detailed Design Specifications

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Training Course Builder" application. The goal is to create an intuitive, powerful, and professional tool that empowers users to build complete training courses with ease, incorporating modules, lesson plans, quizzes, hands-on exercises, and certification criteria for any subject.


1. Design Specifications & Core Functionality

The Training Course Builder will be a web-based application designed for instructors, content creators, and administrators. It will provide a robust set of tools for course creation, content management, assessment design, and certification definition.

1.1 Core Features

  • Course Management:

* Create, edit, duplicate, archive, and delete courses.

* Set course title, description, thumbnail image, target audience, and prerequisites.

* Define course visibility (draft, published, private).

  • Module Management:

* Add, reorder (drag-and-drop), edit, and delete modules within a course.

* Set module title and description.

* Option to mark modules as optional or mandatory.

  • Lesson Management:

* Add, reorder (drag-and-drop), edit, and delete lessons within a module.

* Support for various content types:

* Rich Text Editor (WYSIWYG) for text-based content.

* Embeddable media (YouTube, Vimeo, custom video/audio uploads).

* Image uploads with alt-text support.

* File attachments (PDF, PPT, DOCX, etc.).

* External links.

* Lesson progress tracking options (e.g., "Mark as Complete" button).

  • Quiz Builder:

* Create multiple-choice, true/false, short answer, and matching questions.

* Support for question banks and randomizing questions.

* Define correct answers, points per question, and instant feedback messages.

* Set passing scores and retake limits.

* Option to attach media (images, videos) to questions.

  • Hands-on Exercise Builder:

* Define exercise instructions, objectives, and submission requirements.

* Support for various submission types:

* Text submission (rich text editor).

* File upload (e.g., code, document, image).

* Code editor (syntax highlighting for common languages - optional but highly recommended).

* Define evaluation criteria (e.g., rubric, automated checks for code - advanced feature).

* Instructor review and feedback mechanism.

  • Certification Criteria:

* Define requirements for certification (e.g., complete all modules, achieve X% on quizzes, submit all exercises).

* Design customizable certificate templates (logo, course title, learner name, completion date, instructor signature).

* Automated certificate generation upon meeting criteria.

  • Preview Functionality:

* Live preview of the course content as a learner would experience it.

* Preview specific lessons, quizzes, or exercises.

  • Publishing Workflow:

* Drafting, publishing, and unpublishing courses.

* Pre-publish checklist (e.g., "all modules have at least one lesson").

* Version control for published courses (optional, but good for tracking changes).

  • Dashboard:

* Overview of all courses, their status, and quick actions.

* "Create New Course" prominent action.

1.2 Data Model (Conceptual)

  • Course: id, title, description, thumbnail_url, status (draft/published), created_by, created_at, updated_at, target_audience, prerequisites.
  • Module: id, course_id, title, description, order, is_mandatory.
  • Lesson: id, module_id, title, order, type (text/video/quiz/exercise), content_data (JSON blob based on type), attachments (array of file URLs).
  • Quiz: id, lesson_id (optional, can be standalone), title, description, passing_score, retake_limit.
  • Question: id, quiz_id, type (multiple_choice/true_false/short_answer/matching), question_text, options (for MC/TF), correct_answer, points, feedback.
  • Exercise: id, lesson_id (optional), title, description, instructions, submission_type, evaluation_criteria.
  • Certificate Template: id, course_id, template_html/json, requirements (JSON array of conditions).

2. Wireframe Descriptions

The following describes key screens and their layouts. These are conceptual layouts; specific pixel dimensions will be determined during the UI design phase.

2.1 Course Dashboard / Course List

  • Purpose: Provides an overview of all created courses and allows for quick navigation and management.
  • Layout:

* Header: Application logo, user profile/settings, "Help" link.

* Main Area:

* "Create New Course" Button: Prominently displayed, likely a primary CTA.

* Search/Filter Bar: To find courses by title, status, or creation date.

* Course Cards/List:

* Each card represents a course, displaying:

* Course Thumbnail/Image.

* Course Title.

* Short Description Snippet.

* Status (Draft, Published, Archived).

* Last Updated Date.

* Action Buttons: "Edit Course", "Preview", "Publish/Unpublish", "Duplicate", "Delete". (Hover or dropdown menu for less frequent actions).

* Sidebar (Optional): Could include categories or tags for courses if the list becomes very long.

2.2 Course Editor (High-Level / Outline View)

  • Purpose: To manage overall course settings and structure (modules and lessons). This is the primary entry point for building a course.
  • Layout:

* Header: Application logo, Course Title (editable), "Save" button (auto-save indicated), "Preview" button, "Publish" button, "Back to Dashboard" link.

* Left Sidebar (Course Navigation):

* Course Settings: Link to edit general course details (title, description, image).

* Modules & Lessons Tree View: Hierarchical list of modules and their lessons.

* Each item is drag-and-droppable for reordering.

* Hover actions: "Edit", "Add Lesson/Module", "Delete".

* Assessments: Link to manage quizzes/exercises (if standalone, not tied to a lesson).

* Certification: Link to define certification criteria.

* Main Content Area (Contextual):

* Course Overview: Displays course title, description, thumbnail. Provides "Edit Course Details" button.

* Module/Lesson List: When a module is selected in the sidebar, this area shows its lessons. When the top-level course is selected, it shows all modules.

* "Add New Module" Button.

* Each module row: Module Title, Description, "Add Lesson" button, "Edit Module" button, "Delete Module" button.

* Each lesson row: Lesson Title, Type (Text, Quiz, Exercise), "Edit Lesson" button, "Delete Lesson" button.

2.3 Lesson Editor (Rich Text / Media)

  • Purpose: To create and edit the content of individual lessons.
  • Layout:

* Header: Course Title > Module Title > Lesson Title (Breadcrumbs). "Save" (auto-save indicated), "Preview Lesson", "Back to Module".

* Main Content Area:

* Lesson Title Field: Editable text input.

* Rich Text Editor (WYSIWYG):

* Toolbar with standard formatting options (bold, italic, headings, lists, links, etc.).

* Buttons for "Insert Image", "Insert Video", "Insert Audio", "Attach File", "Embed Code".

* Full-width editing area.

* Media/Attachment Panel (Optional Sidebar/Collapsible):

* List of currently attached images, videos, files.

* Upload button.

* Drag-and-drop area for media.

* Lesson Settings (Collapsible Panel):

* Option to mark lesson as mandatory/optional.

* Estimated completion time.

* Tags/Keywords.

2.4 Quiz Builder

  • Purpose: To create and manage questions for a quiz.
  • Layout:

* Header: Course Title > Module Title > Lesson Title > Quiz Title (Breadcrumbs). "Save", "Preview Quiz", "Back to Lesson".

* Quiz Settings Panel (Left Sidebar/Collapsible):

* Quiz Title, Description.

* Passing Score (%).

* Time Limit (optional).

* Retake Limit (optional).

* Show Answers After Submission (Yes/No).

* Randomize Questions (Yes/No).

* Main Content Area:

* "Add New Question" Button: Prominently displayed.

* Question List:

* Each question card:

* Question Type (e.g., Multiple Choice).

* Question Text.

* Points.

* Action Buttons: "Edit Question", "Duplicate", "Delete".

* Drag-and-drop handle for reordering.

* Question Editor (Modal/Inline Expansion):

* Question Type Selector: Dropdown (MC, T/F, Short Answer, Matching).

* Question Text Area: Rich text editor.

* Options/Answers Section: (Changes based on Question Type)

Multiple Choice*: List of input fields for options, radio button to select correct answer.

True/False*: Radio buttons for True/False.

Short Answer*: Input field for correct answer(s), case sensitivity option.

Matching*: Two columns for items and their matches, drag-and-drop to pair.

* Points Field: Number input.

* Feedback Fields: For correct/incorrect answers (optional).

* "Save Question" / "Cancel".

2.5 Hands-on Exercise Builder

  • Purpose: To define the instructions, submission type, and evaluation criteria for a hands-on exercise.
  • Layout:

* Header: Course Title > Module Title > Lesson Title > Exercise Title (Breadcrumbs). "Save", "Preview Exercise", "Back to Lesson".

* Main Content Area:

* Exercise Title Field: Editable text input.

* Instructions Editor: Rich text editor for detailed instructions, objectives, and examples.

* Submission Type Selector:

* Radio buttons/Dropdown: "Text Submission", "File Upload", "Code Submission".

If "File Upload"*: Allowed file types (e.g., .zip, .pdf, .py).

If "Code Submission"*: Language selector (e.g., Python, Java, JavaScript), initial code template (optional).

* Evaluation Criteria Editor:

* Rich text editor for rubrics or guidelines for instructors.

* Option for "Automated Checks" (if code submission, advanced feature).

* Due Date (Optional): Date picker.

* Max Points: Number input.

2.6 Certification Editor

  • Purpose: To define the conditions for course certification and design the certificate template.
  • Layout:

* Header: Course Title > Certification (Breadcrumbs). "Save", "Preview Certificate", "Back to Course".

* Left Sidebar (Settings):

* Enable Certification: Toggle switch.

* Certificate Title: e.g., "Certificate of Completion".

* Issuer Name/Signature: Text input, image upload for signature.

* Main Content Area:

* Certification Requirements Section:

* "Add Requirement" Button.

* List of requirements (e.g., "Complete all lessons", "Achieve 80% on all quizzes", "Submit all exercises").

* Each requirement has configurable options (e.g., which quizzes, minimum score).

* Drag-and-drop to reorder if order matters.

* Certificate Design Section:

* Template Selector: Pre-designed templates or "Custom Design".

* WYSIWYG/Drag-and-Drop Designer:

* Canvas representing the certificate.

* Toolbox for elements: Text fields (course title, learner name, date, instructor name), Logo upload, Background image.

* Placeholders for dynamic data (e.g

gemini Output

This document outlines the finalized design assets and recommendations for the "Training Course Builder" platform. It provides detailed specifications for the user interface (UI) and user experience (UX), ensuring a professional, engaging, and highly functional learning environment.


Finalized Design Assets: Training Course Builder

I. Executive Summary

This deliverable details the comprehensive design specifications for the Training Course Builder platform. Our approach prioritizes clarity, engagement, and accessibility, creating an intuitive and visually appealing experience for both course creators and learners. The design focuses on a clean, modern aesthetic with robust functionality, ensuring seamless content delivery, interactive learning, and efficient progress tracking across all devices.

II. Design Philosophy & Goals

Our design philosophy for the Training Course Builder is rooted in the following principles:

  • Clarity & Simplicity: The interface should be easy to understand and navigate, minimizing cognitive load for users. Essential information and actions are prioritized.
  • Engagement & Motivation: Visual design and interactive elements are employed to keep learners engaged and motivated throughout their training journey.
  • Consistency & Predictability: A consistent visual language and interaction patterns are maintained across the entire platform, fostering familiarity and ease of use.
  • Accessibility: The design adheres to WCAG 2.1 guidelines, ensuring the platform is usable by individuals with diverse abilities.
  • Responsiveness & Performance: The platform is designed to perform optimally and look great on a wide range of devices, from desktops to mobile phones, with a focus on fast loading times.
  • Professionalism & Trust: The aesthetic conveys authority and reliability, building trust with learners and course providers.

III. Design Specifications

A. Overall Layout & Structure

  1. Responsive Grid System:

* Utilize a 12-column responsive grid (e.g., Bootstrap, Material Design grid) to ensure consistent spacing and alignment across various screen sizes.

* Breakpoints: Mobile (320px-767px), Tablet (768px-1023px), Desktop (1024px-1439px), Large Desktop (1440px+).

  1. Header:

* Fixed Top Bar: Contains logo (left), primary navigation (center/right), user avatar/profile menu (far right), and search bar (optional, or integrated into navigation).

* Height: Consistent height (e.g., 64px on desktop, 56px on mobile).

* Background: Solid primary or light neutral color.

  1. Sidebar Navigation (Left):

* Toggleable: Can be collapsed/expanded on desktop; drawer menu on mobile.

* Content: Course categories, enrolled courses, dashboard links, support, settings.

* Active State: Clearly highlighted current page/section.

* Width: Fixed width (e.g., 240px) when expanded.

  1. Main Content Area:

* Primary focus of the page, occupying the majority of the screen real estate.

* Padded appropriately from header, sidebar, and footer.

  1. Footer:

* Minimalist: Contains copyright information, privacy policy, terms of service links, and potentially social media icons.

* Background: Dark neutral color.

B. Typography

  1. Primary Font Family (Headings & UI Elements):

* Font: Montserrat (Google Fonts) - Modern, clean, and highly readable.

* Usage: H1, H2, H3, H4, buttons, navigation items.

  1. Secondary Font Family (Body Text & Long-form Content):

* Font: Open Sans (Google Fonts) - Highly legible, versatile, and excellent for extensive reading.

* Usage: Paragraphs, lesson content, descriptions, captions.

  1. Font Sizes & Weights (Desktop Base):

* H1 (Page Title): 36px / Montserrat / Bold

* H2 (Section Title): 28px / Montserrat / Semi-Bold

* H3 (Subsection Title): 22px / Montserrat / Medium

* H4 (Card/Module Title): 18px / Montserrat / Semi-Bold

* Body Text (Paragraph): 16px / Open Sans / Regular

* Small Text (Captions, Metadata): 14px / Open Sans / Regular

* Buttons: 16px / Montserrat / Semi-Bold

Responsive scaling for mobile devices will be implemented (e.g., H1 scales down to 28px).*

  1. Line Height:

* Headings: 1.2em

* Body Text: 1.5em (for optimal readability)

C. Iconography

  1. Icon Set:

* Library: Font Awesome 6 (Pro) or Material Symbols (Google Fonts) for a comprehensive, scalable, and consistent icon set.

* Style: Line-based (outlined) for a modern, lightweight feel; filled icons for active states or critical actions.

  1. Usage: Navigation, interactive elements, progress indicators, content types (e.g., video, quiz, document), social media.
  2. Color: Inherit text color or use a subtle accent color.

D. Imagery & Multimedia

  1. Placeholder Images:

* Course Thumbnails: 16:9 aspect ratio (e.g., 640x360px), high-quality, relevant to course topic, with a subtle overlay for text legibility.

* Instructor Photos: Circular or square (1:1 aspect ratio), professional headshots.

  1. Video Player:

* Embedded: Support for YouTube, Vimeo, or a custom HTML5 player.

* Controls: Standard play/pause, volume, fullscreen, progress bar, playback speed.

* Responsive: Auto-adjusts to container width.

  1. Image Galleries/Carousels:

* Clean, minimalistic design with clear navigation arrows and indicators.

E. Interactive Elements

  1. Buttons:

* Primary: Solid background (Primary Color), white text. Rounded corners (e.g., 4px radius). Hover: Slight darkening/lift. Active: Darker/depressed.

* Secondary: Outlined (Primary Color border, white background), Primary Color text. Hover: Solid Primary Color background, white text.

* Tertiary/Ghost: Transparent background, text in Primary Color. Hover: Subtle background fill.

* Sizes: Small, Medium, Large to accommodate different contexts.

  1. Form Fields:

* Input Fields: Light background, subtle border (Neutral 300), ample padding. Focus: Border color changes to Accent Color.

* Labels: Top-aligned for better scanability.

* Error States: Red border, error message text below field.

* Checkboxes/Radio Buttons: Custom-styled to match the overall aesthetic.

  1. Progress Indicators:

* Linear Progress Bars: Primary Color fill, light background. Text overlay for percentage.

* Circular Progress Indicators: Used for loading states.

  1. Tooltips & Modals:

* Tooltips: Lightweight, appear on hover, provide concise contextual help.

* Modals: Centralized, overlay darkens background, clear close button. Used for critical actions, forms, or detailed information.

IV. Wireframe Descriptions (Key Views)

A. Course Dashboard (Learner View)

  • Header: Logo, Search, Notifications, User Avatar.
  • Sidebar: "My Courses," "Browse Courses," "Certifications," "Account Settings," "Help."
  • Main Content:

* "Continue Learning" Section: Prominent cards for courses currently in progress, showing course title, progress bar, last accessed lesson, and a "Continue" button.

* "Upcoming Deadlines/Activities": Small widget showing quizzes, assignments, or live sessions.

* "Recommended Courses": Cards with course title, instructor, rating, and "Enroll" button.

* "Achievements/Badges": Visual display of earned certifications or badges.

* "Announcements": Latest platform updates or course-specific announcements.

B. Course Details/Overview Page

  • Header: Course Title, Instructor Name, Rating, Enrollment Status/Button.
  • Hero Section: Large banner image/video, course title, short description, "Enroll Now" / "Continue Course" CTA.
  • Main Content (Tabbed Interface):

* "Overview" Tab: Long description, learning objectives, prerequisites, target audience, course duration, certification info.

* "Curriculum" Tab: Collapsible list of modules. Each module shows lessons, quizzes, exercises. Progress indicators next to completed items.

* "Instructor" Tab: Instructor bio, photo, other courses taught.

* "Reviews" Tab: User reviews, star ratings, option to leave a review.

* "Resources" Tab: Downloadable materials, links.

  • Right Sidebar (Sticky): Course price, "Add to Cart," "Share," "What You'll Learn" bullet points.

C. Module/Lesson Page

  • Header: Course Title (breadcrumb link), Module Title, Lesson Title.
  • Left Sidebar (Contextual Navigation): Collapsible list of all modules and lessons within the current course. Highlights the current lesson.
  • Main Content:

* Lesson Content Area:

* Video Player: If video lesson, prominent video player.

* Text Editor: Rich text for lesson content, images, code blocks, embedded media.

* Downloadable Resources: Links to PDFs, supplementary files.

* Interactive Elements: Quizzes embedded within lessons, polls.

* Navigation: "Previous Lesson" and "Next Lesson" buttons at the bottom.

* "Mark as Complete" Button: Explicit action for learners to track progress.

* "Discussion/Comments" Section: Below content, allowing learners to ask questions or interact.

D. Quiz/Assessment Page

  • Header: Course Title, Module Title, Quiz Title.
  • Main Content:

* Instructions: Clear rules, time limit (if any), number of questions.

* Question Area:

* Question Text: Clearly displayed.

* Answer Options: Radio buttons (single choice), checkboxes (multiple choice), text input (short answer/essay).

* Media: Support for images/videos in questions.

* Timer: Prominently displayed (if applicable).

* Question Navigation: "Previous," "Next," "Submit Quiz" buttons.

* Progress Indicator: "Question X of Y."

  • Post-Submission:

* Results Page: Score, correct/incorrect answers, explanations (optional).

* "Retake Quiz" / "Review Answers" options.

E. Hands-on Exercise Page

  • Header: Course Title, Module Title, Exercise Title.
  • Main Content:

* Exercise Description: Detailed instructions, objectives, expected outcomes.

* Requirements/Materials: List of tools, software, or files needed.

* Submission Area:

* File Upload: For code files, documents, images.

* Text Input: For written responses, code snippets.

* Integrated Code Editor: (Advanced) For direct coding exercises with syntax highlighting.

* Rubric/Grading Criteria: Clearly displayed (if applicable).

* "Submit Exercise" Button.

* "Ask for Help" / "Discussion" section.

  • Post-Submission: Confirmation, expected grading time.

F. Certification Page

  • Header: User Name, Course Title.
  • Main Content:

* Certificate Display: High-resolution digital certificate with:

* Course Name

* Learner's Full Name

* Date of Completion

* Instructor/Institution Signature/Logo

* Unique Certificate ID/QR Code for verification.

* Actions: "Download PDF," "Share to LinkedIn," "Verify Certificate" link.

* Explanation: Brief text about the achievement and its value.

V. Color Palette

The chosen color palette balances professionalism with warmth and engagement, ensuring excellent readability and accessibility.

  • Primary Brand Color: Represents the core identity, used for key CTAs, active states, and branding elements.

* Name: Panthera Blue

* HEX: #0047AB

* RGB: rgb(0, 71, 171)

* Usage: Buttons, active navigation, progress bars, highlights.

  • Secondary Accent Color: Provides visual interest and supports the primary color without overpowering it.

* Name: Amber Gold

* HEX: #FFD700

* RGB: rgb(255, 215, 0)

* Usage: Accents, icons, subtle highlights, badges, warnings.

  • Neutral Palette: Essential for backgrounds, text, borders, and shadows, ensuring content readability.

* Dark Text/Primary Background:

* Name: Charcoal Black

* HEX: #212121

* RGB: rgb(33, 33, 33)

* Usage: Headings, body text, primary backgrounds (e.g., footer).

* Light Text/Secondary Background:

* Name: Off-White

* HEX: #F8F8F8

* RGB: rgb(248, 248, 248)

* Usage: Main content backgrounds, card backgrounds.

* Borders/Dividers:

* Name: Light Gray

* HEX: #E0E0E0

* RGB: rgb(224, 224, 224)

* Usage: Borders, dividers, subtle shadows.

  • Semantic Colors: For conveying specific states and feedback.

* Success:

* Name: Forest Green

* HEX: #28A745

* RGB: rgb(40, 167, 69)

* Usage: Completion messages, correct

training_course_builder.md
Download as Markdown
Copy all content
Full output as text
Download ZIP
IDE-ready project ZIP
Copy share link
Permanent URL for this run
Get Embed Code
Embed this result on any website
Print / Save PDF
Use browser print dialog
"); var hasSrcMain=Object.keys(extracted).some(function(k){return k.indexOf("src/main")>=0;}); if(!hasSrcMain) zip.file(folder+"src/main."+ext,"import React from 'react' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); var hasSrcApp=Object.keys(extracted).some(function(k){return k==="src/App."+ext||k==="App."+ext;}); if(!hasSrcApp) zip.file(folder+"src/App."+ext,"import React from 'react' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); zip.file(folder+"src/App.css",""); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/pages/.gitkeep",""); zip.file(folder+"src/hooks/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Vue (Vite + Composition API + TypeScript) --- */ function buildVue(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); var hasMain=Object.keys(extracted).some(function(k){return k==="src/main.ts"||k==="main.ts";}); if(!hasMain) zip.file(folder+"src/main.ts","import { createApp } from 'vue' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); zip.file(folder+"src/assets/main.css","*{margin:0;padding:0;box-sizing:border-box}body{font-family:system-ui,sans-serif;background:#fff;color:#213547} "); zip.file(folder+"src/components/.gitkeep",""); zip.file(folder+"src/views/.gitkeep",""); zip.file(folder+"src/stores/.gitkeep",""); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- Angular (v19 standalone) --- */ function buildAngular(zip,folder,app,code,panelTxt){ var pn=pkgName(app); var C=cc(pn); var sel=pn.replace(/_/g,"-"); var extracted=extractCode(panelTxt); zip.file(folder+"package.json",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "compilerOptions": {"baseUrl":"./","outDir":"./dist/out-tsc","forceConsistentCasingInFileNames":true,"strict":true,"noImplicitOverride":true,"noPropertyAccessFromIndexSignature":true,"noImplicitReturns":true,"noFallthroughCasesInSwitch":true,"paths":{"@/*":["src/*"]},"skipLibCheck":true,"esModuleInterop":true,"sourceMap":true,"declaration":false,"experimentalDecorators":true,"moduleResolution":"bundler","importHelpers":true,"target":"ES2022","module":"ES2022","useDefineForClassFields":false,"lib":["ES2022","dom"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); var hasComp=Object.keys(extracted).some(function(k){return k.indexOf("app.component")>=0;}); if(!hasComp){ zip.file(folder+"src/app/app.component.ts","import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); zip.file(folder+"src/app/app.component.css",".app-header{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px}h1{font-size:2.5rem;font-weight:700;color:#6366f1} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); Object.keys(extracted).forEach(function(p){ var fp=p.startsWith("src/")?p:"src/"+p; zip.file(folder+fp,extracted[p]); }); zip.file(folder+"README.md","# "+slugTitle(pn)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var reqMap={"numpy":"numpy","pandas":"pandas","sklearn":"scikit-learn","tensorflow":"tensorflow","torch":"torch","flask":"flask","fastapi":"fastapi","uvicorn":"uvicorn","requests":"requests","sqlalchemy":"sqlalchemy","pydantic":"pydantic","dotenv":"python-dotenv","PIL":"Pillow","cv2":"opencv-python","matplotlib":"matplotlib","seaborn":"seaborn","scipy":"scipy"}; var reqs=[]; Object.keys(reqMap).forEach(function(k){if(src.indexOf("import "+k)>=0||src.indexOf("from "+k)>=0)reqs.push(reqMap[k]);}); var reqsTxt=reqs.length?reqs.join(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/m,"").trim(); var depMap={"mongoose":"^8.0.0","dotenv":"^16.4.5","axios":"^1.7.9","cors":"^2.8.5","bcryptjs":"^2.4.3","jsonwebtoken":"^9.0.2","socket.io":"^4.7.4","uuid":"^9.0.1","zod":"^3.22.4","express":"^4.18.2"}; var deps={}; Object.keys(depMap).forEach(function(k){if(src.indexOf(k)>=0)deps[k]=depMap[k];}); if(!deps["express"])deps["express"]="^4.18.2"; var pkgJson=JSON.stringify({"name":pn,"version":"1.0.0","main":"src/index.js","scripts":{"start":"node src/index.js","dev":"nodemon src/index.js"},"dependencies":deps,"devDependencies":{"nodemon":"^3.0.3"}},null,2)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- Vanilla HTML --- */ function buildVanillaHtml(zip,folder,app,code){ var title=slugTitle(app); var isFullDoc=code.trim().toLowerCase().indexOf("=0||code.trim().toLowerCase().indexOf("=0; var indexHtml=isFullDoc?code:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== MAIN ===== */ var sc=document.createElement("script"); sc.src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js"; sc.onerror=function(){ if(lbl)lbl.textContent="Download ZIP"; alert("JSZip load failed — check connection."); }; sc.onload=function(){ var zip=new JSZip(); var base=(_phFname||"output").replace(/.[^.]+$/,""); var app=base.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"my_app"; var folder=app+"/"; var vc=document.getElementById("panel-content"); var panelTxt=vc?(vc.innerText||vc.textContent||""):""; var lang=detectLang(_phCode,panelTxt); if(_phIsHtml){ buildVanillaHtml(zip,folder,app,_phCode); } else if(lang==="flutter"){ buildFlutter(zip,folder,app,_phCode,panelTxt); } else if(lang==="react-native"){ buildReactNative(zip,folder,app,_phCode,panelTxt); } else if(lang==="swift"){ buildSwift(zip,folder,app,_phCode,panelTxt); } else if(lang==="kotlin"){ buildKotlin(zip,folder,app,_phCode,panelTxt); } else if(lang==="react"){ buildReact(zip,folder,app,_phCode,panelTxt); } else if(lang==="vue"){ buildVue(zip,folder,app,_phCode,panelTxt); } else if(lang==="angular"){ buildAngular(zip,folder,app,_phCode,panelTxt); } else if(lang==="python"){ buildPython(zip,folder,app,_phCode); } else if(lang==="node"){ buildNode(zip,folder,app,_phCode); } else { /* Document/content workflow */ var title=app.replace(/_/g," "); var md=_phAll||_phCode||panelTxt||"No content"; zip.file(folder+app+".md",md); var h=""+title+""; h+="

"+title+"

"; var hc=md.replace(/&/g,"&").replace(//g,">"); hc=hc.replace(/^### (.+)$/gm,"

$1

"); hc=hc.replace(/^## (.+)$/gm,"

$1

"); hc=hc.replace(/^# (.+)$/gm,"

$1

"); hc=hc.replace(/**(.+?)**/g,"$1"); hc=hc.replace(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } zip.generateAsync({type:"blob"}).then(function(blob){ var a=document.createElement("a"); a.href=URL.createObjectURL(blob); a.download=app+".zip"; a.click(); URL.revokeObjectURL(a.href); if(lbl)lbl.textContent="Download ZIP"; }); }; document.head.appendChild(sc); }function phShare(){navigator.clipboard.writeText(window.location.href).then(function(){var el=document.getElementById("ph-share-lbl");if(el){el.textContent="Link copied!";setTimeout(function(){el.textContent="Copy share link";},2500);}});}function phEmbed(){var runId=window.location.pathname.split("/").pop().replace(".html","");var embedUrl="https://pantherahive.com/embed/"+runId;var code='';navigator.clipboard.writeText(code).then(function(){var el=document.getElementById("ph-embed-lbl");if(el){el.textContent="Embed code copied!";setTimeout(function(){el.textContent="Get Embed Code";},2500);}});}