Training Course Builder
Run ID: 69ccdc6d3e7fb09ff16a5c362026-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: Design Requirements & Specifications

This document outlines the detailed design requirements, wireframe descriptions, proposed color palettes, and user experience (UX) recommendations for the "Training Course Builder" platform. This output serves as a foundational blueprint for development, ensuring a comprehensive, intuitive, and professional tool for creating engaging learning experiences.


1. Detailed Design Specifications

The Training Course Builder will be a robust, web-based application designed to empower content creators to build, manage, and deliver high-quality training courses.

1.1. Functional Requirements

1.1.1. Course Management

  • Course Creation: Ability to create new courses with a unique title, description, target audience, learning objectives, prerequisites, and estimated duration.
  • Course Editing: Full control to modify all course details post-creation.
  • Course Status: Option to set course status (e.g., Draft, Published, Archived).
  • Course Duplication: Functionality to duplicate an existing course to use as a template.
  • Course Preview: A dedicated mode to view the course exactly as a learner would experience it.

1.1.2. Module Management

  • Module Creation: Add new modules within a course, each with a title and description.
  • Module Reordering: Drag-and-drop functionality to reorder modules within a course.
  • Module Editing/Deletion: Modify module details or remove modules entirely.
  • Module Objectives: Define specific learning objectives for each module.

1.1.3. Lesson Management

  • Lesson Creation: Add new lessons within modules, each with a title and type.
  • Lesson Types: Support for various content formats:

* Text/HTML: Rich text editor for written content, supporting images, links, and embedded media.

* Video: Upload or embed videos (e.g., YouTube, Vimeo, direct upload).

* Audio: Upload or embed audio files.

* PDF/Document: Upload and display downloadable documents.

* Interactive Content: Placeholder for future integration of SCORM/xAPI or interactive elements.

  • Lesson Content Editor: A powerful WYSISIWYG editor for text-based lessons, supporting formatting, media embeds, and code snippets.
  • Resource Attachment: Ability to attach supplementary files (e.g., PDFs, spreadsheets) to any lesson.
  • Lesson Reordering: Drag-and-drop functionality to reorder lessons within a module.
  • Lesson Editing/Deletion: Modify lesson content or remove lessons.

1.1.4. Quiz Management

  • Quiz Creation: Develop quizzes for modules or specific lessons.
  • Question Types: Support for:

* Multiple Choice (single correct answer)

* Multiple Select (multiple correct answers)

* True/False

* Short Answer (manual grading option)

  • Question Bank: Option to save questions to a bank for reuse across courses/quizzes.
  • Feedback Mechanism: Provide immediate feedback for correct/incorrect answers, and general quiz feedback.
  • Scoring & Passing Thresholds: Define points per question and a minimum passing score for each quiz.
  • Attempt Limits: Set the number of attempts allowed for a quiz.
  • Randomization: Option to randomize question order or answer options.

1.1.5. Hands-on Exercise Management

  • Exercise Creation: Define hands-on exercises with clear instructions and objectives.
  • Submission Types:

* Text Submission: Learners submit written responses directly.

* File Upload: Learners upload files (e.g., code, documents, designs).

  • Grading Criteria/Rubrics: Define clear criteria for evaluating submissions.
  • Instructor Feedback: Provide a mechanism for instructors to review submissions and provide feedback/grades.

1.1.6. Certification Management

  • Certification Criteria: Define conditions for earning a certificate (e.g., complete all modules, achieve X% on all quizzes, complete all exercises).
  • Certificate Template Designer: Basic design tool to customize certificate appearance (logo, background, text fields for learner name, course name, date, instructor signature).
  • Automated Generation: Automatically generate and issue certificates upon successful completion.

1.1.7. Media Management

  • File Uploader: Integrated uploader for images, videos, audio, and documents.
  • Media Library: A centralized library to manage and reuse uploaded media assets.

1.2. Technical Requirements

  • Platform: Web-based application with a responsive design for optimal viewing on desktops, tablets, and mobile devices.
  • Scalability: Architecture designed to support a growing number of courses, modules, lessons, and concurrent users.
  • Security: Robust user authentication, data encryption (in transit and at rest), protection against common web vulnerabilities (OWASP Top 10).
  • Performance: Optimized for fast loading times and smooth interactions.
  • Accessibility: Adherence to WCAG 2.1 AA guidelines to ensure usability for individuals with disabilities.
  • Integration Potential: Design considerations for future integrations with Learning Management Systems (LMS) via standards like SCORM or xAPI, or API access for custom integrations.

1.3. Content Structure

The hierarchical content structure will be clearly defined:

  • Course: Top-level container.

* Modules: Logical sections within a course.

* Lessons: Individual learning units within a module.

* Quizzes: Assessments related to lessons or modules.

* Hands-on Exercises: Practical application tasks.


2. Wireframe Descriptions

The following wireframe descriptions outline the key screens and their components for the Training Course Builder interface. These focus on the creator's experience.

2.1. Dashboard / Course Overview

  • Layout: Left sidebar for main navigation (Dashboard, Courses, Settings). Main content area displays a list of courses.
  • Elements:

* Header: Application logo, user profile/settings, "Create New Course" button.

* Course Cards/List: Each card/row represents a course, showing:

* Course Title & Description snippet

* Status (Draft, Published, Archived)

* Progress Indicator (e.g., "50% Complete" for builder)

* Quick Actions: Edit, Preview, Duplicate, Archive/Delete.

* Search/Filter: Functionality to search courses by title or filter by status.

2.2. Course Editor (General Info)

  • Layout: Left sidebar for course-specific navigation (General Info, Structure, Quizzes, Exercises, Certification, Settings). Main content area for input forms.
  • Elements:

* Header: Course Title (editable), "Save" and "Cancel" buttons.

* Form Fields:

* Course Title (text input)

* Course Description (rich text editor)

* Target Audience (text area/multi-select)

* Learning Objectives (bulleted list/rich text editor)

* Prerequisites (text area)

* Estimated Duration (numeric input with unit selector: hours, days)

* Course Image/Thumbnail (image uploader)

2.3. Course Structure Editor (Modules & Lessons)

  • Layout: Left sidebar for course-specific navigation. Main content area displays an expandable, hierarchical view.
  • Elements:

* Header: Course Title, "Add New Module" button.

* Module List:

* Each module is an expandable section.

* Module Title (editable), "Edit Module" and "Delete Module" icons.

* Drag handle for reordering modules.

* "Add New Lesson/Quiz/Exercise" button within each module.

* Lesson/Quiz/Exercise List (within Module):

* Each item shows its type (Lesson, Quiz, Exercise) and title.

* Drag handle for reordering items within a module.

* "Edit" and "Delete" icons for each item.

2.4. Lesson Editor

  • Layout: Left sidebar for course-specific navigation. Main content area for content creation.
  • Elements:

* Header: Lesson Title (editable), "Save" and "Cancel" buttons.

* Lesson Type Selector: Radio buttons/dropdown for Text, Video, Audio, Document.

* Content Area (dynamic based on type):

* Text: Rich Text Editor (WYSIWYG) with formatting options, media embed, link insertion.

* Video: URL input for embeds, or file uploader for direct video.

* Audio: File uploader for audio.

* Document: File uploader for PDFs/other documents.

* Resource Attachments: "Add Attachment" button, list of attached files.

2.5. Quiz Editor

  • Layout: Left sidebar for course-specific navigation. Main content area for quiz settings and question list.
  • Elements:

* Header: Quiz Title (editable), "Save" and "Cancel" buttons, "Add New Question" button.

* Quiz Settings:

* Quiz Description (text area)

* Passing Score (percentage input)

* Attempt Limit (numeric input)

* Time Limit (optional, numeric input with unit selector)

* Enable Question Randomization (toggle)

* Enable Answer Option Randomization (toggle)

* Question List:

* Each question displays its type and question text snippet.

* "Edit" and "Delete" icons.

* Drag handle for reordering questions.

* Question Detail Editor (modal or separate view):

* Question Text (rich text editor)

* Question Type Selector (Multiple Choice, Multiple Select, True/False, Short Answer).

* Answer Options (dynamic based on type): Input fields for answers, checkboxes/radio buttons to mark correct answers.

* Feedback for correct/incorrect answers.

* Points for question.

2.6. Hands-on Exercise Editor

  • Layout: Left sidebar for course-specific navigation. Main content area for exercise details.
  • Elements:

* Header: Exercise Title (editable), "Save" and "Cancel" buttons.

* Description: Rich text editor for detailed instructions and context.

* Learning Objectives: Text area for specific objectives.

* Submission Type: Radio buttons for "Text Submission" or "File Upload".

* File Type Restrictions (if File Upload): Input for allowed file extensions (e.g., .pdf, .docx, .zip).

* Grading Criteria/Rubric: Rich text editor or structured input for grading guidelines.

* Due Date (optional): Date picker.

2.7. Certification Editor

  • Layout: Left sidebar for course-specific navigation. Main content area for certificate settings and design.
  • Elements:

* Header: "Certification Settings", "Save" and "Cancel" buttons.

* Enable Certification: Toggle switch.

* Certification Criteria:

* Checkbox: "Complete all modules"

* Input: "Achieve an average of X% on all quizzes"

* Checkbox: "Complete all hands-on exercises"

* Custom criteria (text area).

* Certificate Template Designer:

* Canvas area displaying a mock certificate.

* Tools to add/edit: Course Title, Learner Name, Date of Completion, Instructor Signature, Logo.

* Background image uploader.

* Text formatting options (font, size, color).

* Preview Certificate: Button to generate a sample certificate.


3. Color Palettes

We propose three distinct color palettes, each designed for professionalism, readability, and a positive user experience. Accessibility (WCAG 2.1 AA contrast) will be a primary consideration for all palettes.

3.1. Palette 1: Professional & Calm

This palette uses cool tones to evoke professionalism and tranquility, accented by a subtle, optimistic green.

  • Primary (Brand/Interactive): #345B63 (Deep Teal)
  • Secondary (Subtle Accents/Borders): #8FD4C8 (Light Teal)
  • Accent (Call-to-Action/Highlight): #9FB8AD (Sage Green)
  • Background (Light): #F8F8F8 (Off-White)
  • Background (Dark/Hover): #EAEAEA (Light Gray)
  • Text (Primary): #2C3E50 (Charcoal Gray)
  • Text (Secondary/Muted): #7F8C8D (Medium Gray)
  • Success/Positive: `#
gemini Output

Training Course Builder: Detailed Design Specifications & UX Recommendations

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 easily design, develop, and deploy high-quality training courses across any subject matter.


1. Design Specifications

The Training Course Builder will be a web-based application, designed for clarity, efficiency, and scalability.

1.1 Core Functionality & Features

  • Course Management Dashboard:

* Overview of all created courses.

* Status indicators (Draft, Published, Archived).

* Quick actions: Edit, Preview, Publish, Duplicate, Delete.

* Search and filter capabilities.

  • Course Editor:

* Course Settings: Title, Description, Learning Objectives, Target Audience, Prerequisites, Course Image, Categories/Tags.

* Module Management: Create, edit, reorder, and delete modules. Each module will have a title, description, and learning objectives.

* Lesson Management: Within each module, create, edit, reorder, and delete lessons. Support for various lesson types (Text, Video, Audio, Interactive, External Link).

* Quiz Builder: Integrated tool to create multiple-choice, true/false, short answer, and matching questions. Set scoring, feedback, and pass/fail criteria.

* Hands-on Exercise Builder: Define instructions, scenarios, required tools/environment, expected outcomes, and provide rubrics for evaluation.

* Certification Criteria: Define requirements for course completion (e.g., pass all quizzes, complete all exercises). Customize certificate templates.

  • Content Library / Asset Management:

* Upload, store, and manage media files (images, videos, audio, documents).

* Categorization and search for easy content reuse.

  • Preview Functionality:

* Real-time preview of individual lessons, modules, or the entire course as it would appear to a learner.

* Toggle between desktop, tablet, and mobile views.

  • Publishing Workflow:

* Step-by-step guide to review and publish a course.

* Option to unpublish or update an existing course.

  • Collaboration (Future Enhancement):

* Ability to invite collaborators with different roles (e.g., Editor, Reviewer).

1.2 Data Structures & Content Types

The system will manage a hierarchical structure of content:

  • Course:

* id, title, description, objectives, audience, prerequisites, image_url, status, created_at, updated_at.

  • Module:

* id, course_id, title, description, objectives, order_index.

  • Lesson:

* id, module_id, title, type (e.g., 'text', 'video', 'audio', 'interactive', 'external'), content_body (HTML/Markdown), media_url, external_link, duration, order_index.

  • Quiz:

* id, lesson_id (or module_id), title, description, pass_percentage, time_limit (optional).

* Question: id, quiz_id, type (MCQ, True/False, Short Answer), question_text, points.

* Option (for MCQ/True/False): id, question_id, option_text, is_correct, feedback.

* Correct Answer (for Short Answer): id, question_id, answer_text.

  • Hands-on Exercise:

* id, lesson_id (or module_id), title, instructions, scenario, required_tools, expected_outcomes, rubric_description, attachments.

  • Certification:

* id, course_id, criteria_description, template_html, issued_by, signature_image_url.


2. Wireframe Descriptions

The following describes key screen layouts and components.

2.1 Dashboard / Course Overview

  • Header: Application logo, user profile/settings, "Create New Course" button.
  • Sidebar Navigation: Links to "Dashboard", "Content Library", "Settings".
  • Main Content Area:

* Course List: A grid or list view of all courses.

* Each course card/row displays: Course Title, Thumbnail Image, Status (Draft, Published), Progress (e.g., "5/10 Modules Complete" for draft), Last Updated Date.

* Actions: Edit (pencil icon), Preview (eye icon), Publish/Unpublish (toggle), More Options (three dots for Duplicate, Archive, Delete).

* Filters/Search: Input field for searching by title, dropdowns for filtering by status, category.

2.2 Course Editor (Main Interface)

  • Top Bar: Application logo, Course Title (editable), "Save" button (with auto-save indicator), "Preview" button, "Publish" button, "Back to Dashboard" link.
  • Left Sidebar (Course Navigation):

* Hierarchical list of course elements:

* Course Settings

* Modules (expandable)

* Module 1 Title

* Lesson 1.1 Title

* Lesson 1.2 Title

* Quiz 1.1 Title

* Module 2 Title

* ...

* Certification

* "Add Module" button at the bottom of the Modules section.

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

  • Central Content Area (Dynamic Editor):

* This area dynamically changes based on the selected item in the Left Sidebar.

* Course Settings View: Forms for Course Title, Description (rich text editor), Objectives, Audience, Prerequisites, Course Image upload.

* Module Editor View: Module Title, Description (rich text editor), Objectives. "Add Lesson", "Add Quiz", "Add Exercise" buttons within the module.

* Lesson Editor View:

* Lesson Title.

* Content Type Selector: Buttons/dropdown for Text, Video, Audio, Interactive, External Link.

* Rich Text Editor: For 'Text' lessons, with formatting tools (bold, italic, lists, links, images, embeds).

* Media Uploader/Selector: For 'Video'/'Audio' lessons, integrate with Content Library.

* External Link Input: For 'External Link' lessons.

* "Add Resource" button to attach files (PDFs, supplementary materials).

* Quiz Builder View: See 2.3.

* Hands-on Exercise Builder View: See 2.4.

* Certification Editor View: See 2.5.

2.3 Quiz Builder

  • Quiz Settings: Title, Description, Pass Percentage, Time Limit (optional).
  • Question List:

* Each question displayed as a card/row with its type (MCQ, Short Answer) and question text.

* Drag-and-drop handles to reorder questions.

* Actions: Edit, Duplicate, Delete.

  • "Add New Question" Button: Opens a modal or expands an inline form.

* Question Type Selector: Radio buttons for Multiple Choice, True/False, Short Answer.

* Question Text Input: Rich text editor.

* Answer Options (for MCQ/True/False):

* Input fields for each option.

* Checkbox/radio button to mark the correct answer.

* "Add Option" button.

* "Remove Option" button.

* Correct Answer Input (for Short Answer): Text field.

* Feedback/Explanation (optional): Text area.

* Points: Numeric input for question value.

* "Save Question" / "Cancel".

2.4 Hands-on Exercise Builder

  • Exercise Settings: Title, Description.
  • Instructions Editor: Rich text editor for detailed instructions.
  • Scenario Description: Rich text editor.
  • Required Tools/Environment: Text area or list builder.
  • Expected Outcomes: Rich text editor or bulleted list builder.
  • Rubric Definition:

* Table or list to define criteria, proficiency levels, and points.

* "Add Criterion", "Add Level" buttons.

  • Attachments: File upload area for starter code, datasets, etc.

2.5 Certification Editor

  • Certification Criteria: Rich text editor to define what learners need to achieve (e.g., "Complete all modules and pass all quizzes with 80% or higher").
  • Certificate Template Customizer:

* Visual editor or template selection with placeholders (learner name, course title, completion date).

* Options to upload logo, signature images.

* Preview of the certificate template.


3. Color Palettes

The chosen palette aims for professionalism, clarity, and an inviting user experience, adhering to accessibility standards.

  • Primary Brand Color: #2C3E50 (Dark Charcoal Blue)

* Usage: Main navigation backgrounds, primary buttons, prominent headers, active states. Conveys trust and professionalism.

  • Secondary Background Color: #F8F9FA (Light Gray/Off-White)

* Usage: Main content area backgrounds, card backgrounds. Provides a clean and spacious canvas.

  • Accent Color (Interactive/Highlight): #3498DB (Vibrant Sky Blue)

* Usage: Call-to-action buttons, links, selected menu items, progress bars, interactive elements. Provides clear visual cues for user interaction.

  • Success/Positive Feedback: #2ECC71 (Emerald Green)

* Usage: "Published" status, successful save messages, confirmation buttons.

  • Warning/Alert: #F39C12 (Sun Orange)

* Usage: Draft status, warning messages, pending actions.

  • Error/Danger: #E74C3C (Alizarin Red)

* Usage: Delete buttons, error messages, invalid input fields.

  • Text Colors:

* #34495E (Dark Greyish Blue): Primary body text, main labels. Ensures high readability against light backgrounds.

* #7F8C8D (Medium Grey): Secondary text, helper text, less prominent information.

* #FFFFFF (White): Text on dark primary backgrounds.

Accessibility Note: All color combinations will be checked against WCAG 2.1 AA contrast ratio standards to ensure readability for all users.


4. UX Recommendations

User experience is paramount for a tool as comprehensive as a course builder. The following recommendations will guide the design process:

4.1 Intuitive Navigation & Information Architecture

  • Clear Hierarchy: Use a consistent sidebar for course structure and a top bar for global actions.
  • Breadcrumbs: Implement breadcrumbs at the top of the content area to show the user's current location within the course structure (e.g., Course Name > Module 1 > Lesson 1.1).
  • Contextual Menus: Right-click or "..." menus for module/lesson actions (edit, duplicate, delete) to keep the interface clean.

4.2 Content Creation & Editing

  • Rich Text Editor (WYSIWYG): Provide a robust, user-friendly rich text editor for lesson content, descriptions, and instructions. Include options for headings, lists, bold, italics, links, images, and code blocks.
  • Drag-and-Drop Functionality: Enable seamless reordering of modules, lessons, quiz questions, and exercise criteria. This provides a natural and efficient way to structure content.
  • In-line Editing: Where appropriate, allow direct editing of titles and short descriptions without navigating to a separate screen.
  • Content Reusability: Implement a "Content Library" where users can upload and manage media files. Allow easy insertion of these assets into lessons, quizzes, and exercises. Consider templates for common lesson/quiz structures.
  • Autosave & Version History: Automatically save user progress at regular intervals. Provide an option to view and restore previous versions of a course or individual content elements to prevent data loss.
  • Undo/Redo Functionality: Essential for any content creation tool to allow users to quickly revert mistakes.

4.3 Feedback & Guidance

  • Clear Status Indicators: Visually distinguish between "Draft," "Published," and "Archived" courses. Use clear labels and color coding.
  • Progress Indicators: For long forms or multi-step processes (e.g., publishing a course), show step-by-step progress.
  • Success & Error Messages: Provide timely, clear, and actionable feedback for user actions (e.g., "Course saved successfully," "Error: Please fill in all required fields").
  • Tooltips & Onboarding: Use subtle tooltips for complex features. Implement a light onboarding tour for first-time users to highlight key functionalities.

4.4 Preview & Publishing

  • Live Preview: Offer a real-time, interactive preview mode that accurately reflects how the course will appear to learners. Include options to toggle between desktop, tablet, and mobile views.
  • Pre-Publish Checklist: Before publishing, present a checklist or validation report to ensure all mandatory fields are complete, and content meets basic quality checks (e.g., no empty lessons).

4.5 Accessibility & Responsiveness

  • WCAG Compliance: Design with Web Content Accessibility Guidelines (WCAG 2.1 AA) in mind, ensuring adequate color contrast, keyboard navigation, screen reader compatibility, and proper
gemini Output

Finalized Design Assets for the Training Course Builder

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for presenting your training course content. The goal is to create a professional, engaging, accessible, and intuitive learning environment that enhances the user's educational journey.


1. Detailed Design Specifications

The design framework prioritizes clarity, functionality, and a modern aesthetic to facilitate an optimal learning experience across various devices.

1.1. Overall Aesthetic & Branding

  • Modern & Clean: Minimalist design with ample white space to reduce cognitive load and keep focus on content.
  • Professional & Trustworthy: Utilizes a balanced color palette and clear typography to convey credibility.
  • User-Centric: Intuitive layouts and navigation designed with the learner's journey in mind.
  • Brand Integration: The platform will be designed to seamlessly integrate your organization's logo, primary brand colors, and specific brand guidelines (e.g., tone of voice in microcopy). A dedicated section for brand asset upload will be included in the backend.

1.2. Responsiveness & Adaptability

  • Mobile-First Approach: Designs will prioritize functionality and readability on smaller screens (smartphones) and then scale up for tablets and desktops.
  • Fluid Layouts: Content blocks and images will adapt dynamically to screen size, ensuring no horizontal scrolling on any device.
  • Touch-Friendly: Interactive elements (buttons, links, sliders) will have adequate touch targets for mobile users.

1.3. Accessibility (WCAG 2.1 AA Compliance)

  • Color Contrast: All text and interactive elements will adhere to WCAG AA contrast ratios (minimum 4.5:1 for small text, 3:1 for large text and UI components).
  • Keyboard Navigation: All interactive elements will be fully navigable and operable via keyboard (Tab, Enter, Spacebar). Clear focus indicators will be provided.
  • Screen Reader Compatibility: Semantic HTML5 will be used, with appropriate ARIA attributes for dynamic content and complex widgets. Image alt text, meaningful link text, and proper heading structures will be implemented.
  • Text Resizing: Users will be able to zoom text up to 200% without loss of content or functionality.
  • Descriptive Labels: Form fields and interactive elements will have clear, descriptive labels.

1.4. Typography

  • Headings (H1-H6):

* Primary Font: A clean, modern sans-serif font like Inter, Roboto, or Open Sans.

* Usage: For section titles, module names, lesson titles.

* Characteristics: Good readability at various sizes, strong visual hierarchy.

  • Body Text:

* Primary Font: A highly readable sans-serif font (e.g., Open Sans, Lato, Source Sans Pro) or a well-balanced serif font for longer reads if preferred (e.g., Lora, Merriweather).

* Usage: For lesson content, descriptions, instructions.

* Characteristics: Excellent readability, comfortable for extended reading, good character spacing.

  • Font Sizes & Weights: A carefully chosen typographic scale will ensure clear hierarchy and readability across devices. Regular, semi-bold, and bold weights will be used judiciously.

1.5. Iconography

  • Consistent Style: A single, unified icon set will be used (e.g., line icons, filled icons, or duotone icons).
  • Clarity: Icons will be simple, universally recognizable, and clearly convey their meaning.
  • SVG Format: Icons will primarily be in SVG format for scalability and crispness across all resolutions.
  • Usage: For navigation, interactive elements (e.g., play, pause, next, prev), content types (e.g., video, document, quiz), and progress indicators.

1.6. Interactive Elements

  • Buttons & CTAs: Clearly identifiable, with sufficient padding and distinct hover/active states. Primary CTAs will use a prominent brand color.
  • Navigation: Intuitive menus, breadcrumbs, and progress indicators.
  • Forms: Clean input fields, clear labels, inline validation feedback.
  • Media Players: Custom-skinned video and audio players with standard controls, captions, and playback speed options.
  • Progress Indicators: Visual progress bars and checklists to motivate learners.

1.7. Performance

  • Optimized Assets: Images and media will be optimized for web delivery (compressed, responsive images).
  • Efficient Code: Clean, well-structured code will minimize load times.
  • Lazy Loading: Non-critical assets (e.g., images below the fold) will be lazy-loaded to improve initial page load speed.

2. Wireframe Descriptions

The following wireframe descriptions outline the key screens and their essential components, providing a structural blueprint for the user interface.

2.1. Course Dashboard / Homepage

This is the learner's central hub, providing an overview of their learning journey.

  • Header:

* Logo: Top-left, linking to the dashboard.

* Global Navigation: Links to "My Courses," "Certificates," "Profile," "Help/Support."

* User Avatar/Name: Top-right, dropdown for profile settings, logout.

* Search Bar: For finding courses or specific content.

  • Main Content Area:

* Welcome Message/Announcements: Prominent banner for important updates or personalized greetings.

* "Continue Learning" Section: Cards for currently in-progress courses, showing course title, module/lesson in progress, and a progress bar. A "Continue" button links directly to the last visited lesson.

* "Enrolled Courses" Section: Grid or list view of all enrolled courses. Each card includes:

* Course Thumbnail/Image

* Course Title

* Instructor Name

* Overall Progress Bar

* Status (e.g., "In Progress," "Completed," "Not Started")

* "Go to Course" Button

* "Upcoming Deadlines/Events" (Optional): If applicable, a small widget displaying calendar events or assignment deadlines.

* "Recommended Courses" (Optional): Suggestion engine for new courses.

  • Footer: Copyright, privacy policy, terms of service, social media links.

2.2. Course Module / Lesson Page

The core learning interface where content is consumed.

  • Header:

* Logo: Top-left.

* Course Title: Prominently displayed.

* Breadcrumbs: Dashboard > Course Title > Module Title > Lesson Title.

* Global Navigation: (Optional, could be collapsed or hidden for focus).

  • Left Sidebar (Collapsible):

* Course Outline/Navigation: Tree-view of all modules and lessons.

* Module titles (expandable/collapsible).

* Lesson titles within modules.

* Current lesson highlighted.

* Completion status icons next to each lesson/module (e.g., checkmark for completed).

* Progress bar for the current module/course.

  • Main Content Area:

* Lesson Title: Large and clear at the top.

* Lesson Content:

* Media Player: For videos or audio, with controls (play/pause, volume, fullscreen, speed, captions).

* Text Content: Formatted with headings, paragraphs, bullet points, code blocks, images.

* Interactive Elements: Embeddable quizzes, simulations, drag-and-drop exercises.

* Downloadable Resources: Links to PDFs, code files, templates.

* Discussion Forum/Comments Section (Optional): Below content, for learner interaction.

* Navigation Buttons: "Previous Lesson" and "Next Lesson" at the bottom of the content area.

* "Mark as Complete" Button: If manual completion is required.

  • Right Sidebar (Optional):

* Related Resources: Links to external articles, supplementary materials.

* Notes Section: Personal note-taking area for the learner.

* Instructor Q&A: Direct messaging or forum access.

  • Footer: Standard links.

2.3. Quiz / Assessment Page

Designed for clarity and focus during evaluations.

  • Header:

* Logo, Course Title, Breadcrumbs.

* Timer (if applicable): Prominently displayed, possibly counting down.

  • Main Content Area:

* Quiz Title/Instructions: Clear guidelines on duration, number of questions, passing score, etc.

* Question Navigation (Optional): Small numbered circles/squares indicating total questions, current question, and answered questions.

* Question Block:

* Question Number.

* Question Text (can include images/media).

* Answer Options:

* Multiple Choice: Radio buttons.

* Multiple Select: Checkboxes.

* True/False: Radio buttons.

* Short Answer/Essay: Text area.

* Matching/Ordering: Drag-and-drop or dropdowns.

* "Submit Answer" or "Next Question" button.

* "Skip" or "Flag for Review" (optional).

* Progress Bar: Showing overall quiz progress.

  • Feedback/Results Page (After submission):

* Overall Score.

* Pass/Fail Status.

* Breakdown of correct/incorrect answers.

* Option to review answers (with explanations for correct answers).

* Option to retake (if allowed).

* "Return to Course" button.

2.4. Hands-on Exercise Page

Facilitates practical application of learned concepts.

  • Header: Standard course header.
  • Left Sidebar: Course Outline/Navigation (as in Lesson Page).
  • Main Content Area:

* Exercise Title: Clear and descriptive.

* Instructions: Detailed, step-by-step instructions. Can include:

* Prerequisites.

* Required tools/software.

* Expected outcome.

* Example code snippets or screenshots.

* Work Area:

* Code Editor (if applicable): Embedded code editor with syntax highlighting for coding exercises.

* File Upload Area: For submitting project files, documents, or screenshots.

* Text Submission Area: For written responses or reflections.

* Rubric/Grading Criteria: Clearly states how the exercise will be evaluated.

* "Submit Exercise" Button: Prominent call to action.

* "Save Draft" Button (Optional): For exercises that can be worked on over time.

* Discussion/Help Section: For learners to ask questions or get assistance.

2.5. Certification Page

The culmination of the learning journey.

  • Header: Standard header.
  • Main Content Area:

* "Congratulations!" Message: Prominent and celebratory.

* Certificate Display: A visually appealing image or preview of the earned certificate.

* Includes learner's name, course title, completion date, issuing organization, and (optional) unique certificate ID.

* Download Options:

* "Download PDF Certificate" Button.

* "Share to LinkedIn" / Social Media Sharing Buttons.

* Verification Link (Optional): A link to a public verification page for the certificate.

* Next Steps/Recommendations: Suggestions for further learning or related courses.


3. Color Palettes

We propose a primary and a secondary palette, both designed for professionalism, readability, and accessibility.

3.1. Primary Palette: "Corporate Professional"

This palette emphasizes trust, stability, and clarity, suitable for a wide range of professional training subjects.

  • Primary Brand Color (e.g., Deep Blue): #0056B3 (or your brand's primary color)

* Usage: Main calls to action, prominent headings, progress bar fill, active navigation states.

  • Secondary Accent Color (e.g., Teal/Cyan): #17A2B8

* Usage: Secondary buttons, interactive elements, highlights, specific icons, subtle accents.

  • Neutral Dark (Text): #212529

* Usage: Body text, primary headings, labels.

  • Neutral Medium (Subtle Text/Borders): #6C757D

* Usage: Secondary text, disabled states, borders, subtle separators.

  • Background Light: #F8F9FA

* Usage: Main content backgrounds, card backgrounds.

  • Background White: #FFFFFF

* Usage: Page background, modal backgrounds.

  • Success (Green): #28A745

* Usage: Quiz correct answers, completion messages, positive feedback.

  • Warning (Orange): #FFC107

* Usage: Important notices, partial success, pending actions.

  • Error (Red): #DC3545

* Usage: Quiz incorrect answers, error messages, invalid input.

3.2. Secondary Palette: "Modern & Engaging"

This palette introduces a slightly more vibrant and contemporary feel while maintaining professionalism.

  • Primary Brand Color (e.g., Rich Violet): #6F42C1 (or your brand's primary color)

* Usage: Main calls to action, prominent headings, progress bar fill, active navigation states.

  • Secondary Accent Color (e.g., Vibrant Orange/Gold): #FD7E14

* Usage: Secondary buttons, interactive elements, highlights, specific icons, subtle accents.

  • Neutral Dark (Text): #343A40

* Usage: Body text, primary headings, labels.

  • Neutral Medium (Subtle Text/Borders): #ADB5BD

* Usage: Secondary text, disabled states, borders, subtle separators.

  • Background Light: `#F
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);}});}