Training Course Builder
Run ID: 69cd30c43e7fb09ff16a8cde2026-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 (Step 1 of 3)

This document outlines the comprehensive research and design requirements for the "Training Course Builder" platform. The goal is to create an intuitive, powerful, and flexible tool that empowers subject matter experts, instructional designers, and content creators to build high-quality, engaging, and certifiable training courses across any subject.


1. Project Overview & Goals

Project Name: PantheraHive Training Course Builder

Objective: To develop a robust platform enabling users to create, manage, and deploy comprehensive training courses, complete with modules, lesson plans, quizzes, hands-on exercises, and certification criteria.

Target Users: Instructional Designers, Subject Matter Experts (SMEs), Corporate Trainers, Educators, Content Creators.

Key Deliverables of the Platform:

  • Streamlined course creation workflow.
  • Flexible content editor for diverse lesson types.
  • Advanced quiz and assessment tools.
  • Integrated hands-on exercise management.
  • Customizable certification generation.
  • Intuitive user interface and experience.

2. Detailed Design Specifications

This section details the functional and non-functional requirements that will guide the development of the Training Course Builder.

2.1. Functional Requirements

2.1.1. Course Management

  • Course Creation:

* Ability to create new courses with essential metadata: Title, Description, Target Audience, Learning Objectives, Estimated Duration, Category/Subject.

* Option to start from a blank course or use pre-defined templates.

  • Course Editing & Deletion:

* Comprehensive editing capabilities for all course details.

* Secure deletion with confirmation prompts.

  • Course Status: Draft, Published, Archived.
  • Course Preview: Ability to preview the entire course from a learner's perspective before publishing.
  • Collaboration: (Future consideration) Ability to invite multiple creators/editors to a course.

2.1.2. Module & Lesson Management

  • Module Creation:

* Add, edit, delete modules within a course.

* Define module title and description.

* Reorder modules via drag-and-drop.

  • Lesson Creation:

* Add, edit, delete lessons within modules.

* Define lesson title and type (e.g., Text/Rich Media, Video, Quiz, Exercise).

* Reorder lessons within a module via drag-and-drop.

* Set lesson prerequisites (optional).

  • Content Editor:

* Rich Text Editor (WYSIWYG) for text-based lessons (bold, italics, lists, headings, links, etc.).

* Media embedding capabilities: Images, Videos (YouTube, Vimeo, or direct upload), Audio, Documents (PDF, PPT).

* Code block support for technical courses.

* Template library for common lesson structures.

2.1.3. Quiz & Assessment Management

  • Question Types:

* Multiple Choice (single/multiple correct answers).

* True/False.

* Short Answer/Fill-in-the-Blank.

* Matching.

* Ordering.

  • Quiz Settings:

* Set passing score.

* Time limits (optional).

* Number of attempts.

* Randomize question order.

* Provide instant feedback (correct/incorrect) and detailed explanations.

* Question bank integration for reusability.

  • Grading: Automatic grading for objective questions; manual grading workflow for short answer questions.

2.1.4. Hands-on Exercise Management

  • Exercise Description: Rich text editor for detailed instructions, scenarios, and expected outcomes.
  • Submission Mechanisms:

* File upload (code, documents, images).

* Text input for open-ended responses.

* (Future consideration) Integration with external environments (e.g., coding sandboxes, virtual labs).

  • Evaluation Criteria: Define rubrics or checklists for manual grading.
  • Feedback System: Provide detailed feedback to learners on their submissions.

2.1.5. Certification Management

  • Certification Criteria:

* Course completion.

* Minimum overall quiz score.

* Completion of all hands-on exercises.

* Customizable combinations of the above.

  • Certificate Design:

* Upload custom certificate templates (PDF, image).

* Dynamic fields for learner name, course title, completion date, unique certificate ID.

* Option to include instructor/organization signature.

  • Issuance: Automatic generation and distribution upon meeting criteria.

2.1.6. Content Library & Asset Management

  • Centralized repository for images, videos, documents, and other media assets.
  • Categorization and search functionality for assets.
  • Reusability of assets across multiple courses/lessons.

2.1.7. User & Role Management (for Course Creators)

  • Secure login and authentication.
  • Dashboard view of all created/managed courses.
  • Profile management.

2.1.8. Publishing & Export

  • Publishing: Make courses available to learners within the PantheraHive ecosystem.
  • Export Options: (Future consideration) SCORM, AICC, PDF, or standalone web package.

2.2. Non-Functional Requirements

  • Performance:

* Fast loading times for all pages and content.

* Efficient saving of course progress and changes.

  • Security:

* Robust authentication and authorization mechanisms.

* Data encryption (in transit and at rest).

* Protection against common web vulnerabilities (OWASP Top 10).

  • Usability (UX):

* Intuitive and consistent user interface.

* Clear navigation and information architecture.

* Minimal cognitive load for course creators.

  • Scalability:

* Ability to handle a growing number of courses, modules, lessons, and users.

* Architecture designed for future feature expansion.

  • Maintainability:

* Clean, modular, and well-documented codebase.

* Ease of updates and bug fixes.

  • Accessibility (A11y):

* WCAG 2.1 AA compliance for all user interfaces.

* Support for keyboard navigation, screen readers, and high contrast modes.

  • Compatibility:

* Cross-browser compatibility (Chrome, Firefox, Safari, Edge).

* Responsive design for various screen sizes (desktop, tablet).

  • Reliability:

* High uptime and data integrity.

* Robust error handling and recovery mechanisms.


3. Wireframe Descriptions (Key Screens)

The following descriptions outline the essential components and layout for critical screens within the Training Course Builder.

3.1. Dashboard (Course Creator)

  • Layout: Left sidebar for primary navigation (Dashboard, My Courses, Content Library, Settings). Main content area for course overview.
  • Components:

* "Create New Course" Button: Prominently displayed.

* Course List: Card or table view of existing courses with essential info (Title, Status, Last Edited, Actions).

* Quick Stats/Analytics: (Future consideration) e.g., "Courses in Draft," "Published Courses."

* Recent Activity Feed: Shows recent edits or course progress.

3.2. Course Creation/Editing Form

  • Layout: Multi-step form or a single scrollable form, clearly segmented.
  • Components:

* Basic Info: Input fields for Course Title, Description (rich text editor), Target Audience, Learning Objectives (bulleted list input), Estimated Duration, Category.

* Course Image/Thumbnail Upload: Drag-and-drop or file selector.

* Settings: Access control (private/public), enrollment options (open/invitation).

* Save/Cancel Buttons: With clear indications of status (e.g., "Saving...").

3.3. Course Structure Editor

  • Layout: Two-pane interface or a single hierarchical view.

* Left Pane (or top section): Course overview/settings.

* Right Pane (or main section): Visual representation of modules and lessons.

  • Components:

* Module Cards: Display module title, description.

* Lesson Cards: Nested within modules, displaying lesson title, type (icon), status.

* Drag-and-Drop Handles: For reordering modules and lessons.

* Add Module/Add Lesson Buttons: Contextual buttons for easy creation.

* Edit/Delete Icons: For individual modules and lessons.

3.4. Lesson Content Editor

  • Layout: Focused content area with a toolbar.
  • Components:

* Lesson Title Input.

* Rich Text Editor: Standard formatting options (bold, italic, underline, lists, headings), alignment, links.

* Media Insertion Buttons: Icons for "Insert Image," "Insert Video," "Insert Document," "Insert Code Block."

* Preview Button: To see how the lesson will appear to learners.

* Save/Cancel Buttons.

3.5. Quiz Builder

  • Layout: Question list on the left, question details/editor on the right.
  • Components:

* "Add Question" Button: With dropdown for question types.

* Question List: Shows question number, type, first few words of the question.

* Question Editor:

* Text area for question prompt.

* Input fields for answers (with radio buttons/checkboxes to mark correct).

* Feedback text fields (for correct/incorrect answers).

* Point value input.

* Quiz Settings Panel: Passing score, time limit, attempts, randomization toggles.

* Save Quiz/Cancel Buttons.

3.6. Hands-on Exercise Builder

  • Layout: Similar to lesson editor, but with specific exercise components.
  • Components:

* Exercise Title Input.

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

* Submission Type Selector: Dropdown (File Upload, Text Input, No Submission - for offline exercises).

* File Upload Settings: (if selected) Max file size, allowed file types.

* Evaluation Criteria Editor: Rich text or structured rubric builder.

* Save/Cancel Buttons.

3.7. Certification Settings

  • Layout: Form-based, clearly outlining criteria and design options.
  • Components:

* "Enable Certification" Toggle.

* Criteria Checkboxes: "Course Completion," "Achieve X% on Quizzes," "Complete all Exercises."

* Certificate Template Uploader: Drag-and-drop or file selector for PDF/image templates.

* Dynamic Field Mapping: Visually map fields like {{learner_name}}, {{course_title}}, {{completion_date}} to positions on the uploaded template.

* Preview Certificate Button.

* Save/Cancel Buttons.


4. Color Palettes

A professional, calm, and focused color palette will be used to ensure a pleasant and productive user experience for course creators.

  • Primary Brand Color: #007bff (A vibrant, trustworthy blue - commonly associated with professionalism and technology)

Usage:* Key interactive elements, primary buttons, active states, branding accents.

  • Secondary Accent Color: #28a745 (A clear, positive green)

Usage:* Success messages, "Save" buttons, positive feedback.

  • Neutral Palette (Text & Backgrounds):

* Dark Text: #333333 (Near-black for readability on light backgrounds)

* Subtle Text/Icons: #6c757d (Medium grey for secondary information, icons)

* Light Background: #f8f9fa (Off-white for main content areas)

* Card/Container Background: #ffffff (Pure white for distinct sections)

* Borders/Dividers: #e9ecef (Very light grey for subtle separation)

  • Status/Feedback Colors:

* Success: #28a745 (Green, as above)

* Warning: #ffc107 (Amber/Yellow for caution, incomplete items)

* Error: #dc3545 (Red for critical errors, deletion prompts)

* Info: #17a2b8 (Cyan/Light Blue for informational messages)

Accessibility Note: All color combinations will be checked for sufficient contrast ratio (WCAG AA standard) to ensure readability for users with visual impairments.


5. UX Recommendations

User experience is paramount for a tool designed for creation. The following recommendations aim to make the Training Course Builder intuitive, efficient, and enjoyable to use.

5.1. General Principles

  • Consistency: Maintain a consistent visual language, interaction patterns, and terminology across the entire platform.
  • Clarity & Simplicity: Avoid jargon, provide clear labels, and minimize clutter on screen.
  • Feedback & Responsiveness: Provide immediate visual feedback for user actions (e.g., loading indicators, success/error messages, button states).
  • Efficiency: Streamline workflows, reduce steps, and provide shortcuts or templates where appropriate.
  • Error Prevention & Recovery: Implement confirmation dialogs for destructive actions, provide undo options where feasible, and offer clear guidance for error resolution.

5.2. Specific Recommendations

  • Intuitive Navigation:

* Clear Hierarchy: Use a persistent left-hand navigation bar for primary sections (Dashboard, My Courses, Content Library).

* Breadcrumbs: Implement breadcrumbs for deep navigation paths (e.g., Course Name > Module Name > Lesson Name) to show users their current location

gemini Output

Design Specifications: Training Course Builder

This document outlines the detailed design specifications for the "Training Course Builder," a professional platform designed to enable users to create comprehensive training courses with modules, lesson plans, quizzes, hands-on exercises, and certification criteria for any subject. This deliverable focuses on the user interface (UI) and user experience (UX) to ensure an intuitive, powerful, and aesthetically pleasing course creation environment.


1. Detailed Design Specifications

The Training Course Builder will be a web-based application, offering a robust set of features for content creators.

1.1 Core Functionality

  • Course Management:

* Create New Course: Initiate a new course project.

* Edit Existing Course: Modify any aspect of a saved course.

* Duplicate Course: Create a copy of an existing course as a template.

* Archive/Delete Course: Manage course lifecycle.

* Publish/Unpublish Course: Control visibility to learners.

  • Structural Content Management:

* Module Creation & Management: Define course sections with titles, descriptions, and objectives.

* Lesson Creation & Management: Add individual lessons within modules, including content, media, and interactive elements.

* Reordering: Drag-and-drop functionality for modules and lessons.

  • Interactive Element Management:

* Quiz Builder: Create various quiz types (multiple choice, true/false, short answer, matching) with feedback, scoring, and randomized questions.

* Hands-on Exercise Builder: Define practical assignments, including instructions, submission requirements, and evaluation criteria.

* Resource Management: Attach downloadable files (PDFs, documents), external links, and supplementary materials to lessons or modules.

  • Certification & Completion:

* Certification Criteria Editor: Define conditions for course completion and certification (e.g., minimum quiz scores, lesson completion percentage, project submission).

* Certificate Template Designer (Optional but Recommended): Allow customization of certificate appearance.

  • Content Editor:

* Rich Text Editor (WYSIWYG): For lesson content, quiz questions, exercise instructions, and descriptions. Support for headings, lists, bold, italics, links, tables, code blocks.

* Media Uploader: Integrate images, videos (via embed or direct upload), and audio files directly into lessons.

* Code Snippet Editor: Dedicated editor for technical content with syntax highlighting.

  • Preview & Testing:

* Live Preview: Instantly see how the course content, quizzes, and exercises will appear to learners.

* Test Quiz/Exercise: Ability to take a quiz or complete an exercise as a learner to verify functionality and scoring.

  • Collaboration (Future Enhancement):

* Role-based access for course creators, editors, and reviewers.

* Comment functionality for feedback during course development.

1.2 Data Model / Information Architecture

  • Course:

* course_id (Unique Identifier)

* title (String)

* description (Rich Text)

* objectives (List of Strings/Rich Text)

* target_audience (Rich Text)

* prerequisites (Rich Text)

* estimated_time (String, e.g., "10 hours", "3 days")

* difficulty_level (Dropdown: Beginner, Intermediate, Advanced)

* thumbnail_image (URL)

* status (Draft, Published, Archived)

* certification_criteria (JSON object)

* created_by, created_at, last_updated_by, last_updated_at

  • Module:

* module_id

* course_id (Foreign Key)

* title

* description

* objectives (List of Strings/Rich Text)

* order_index (Integer)

  • Lesson:

* lesson_id

* module_id (Foreign Key)

* title

* content (Rich Text, including embedded media references)

* lesson_type (e.g., Text, Video, Quiz, Exercise)

* order_index

* estimated_time (String)

* resources (List of Resource IDs)

  • Quiz:

* quiz_id

* lesson_id / module_id (Foreign Key, optional if standalone)

* title

* description

* passing_score_percentage

* time_limit (Optional, in minutes)

* shuffle_questions (Boolean)

* questions (List of Question IDs)

  • Question:

* question_id

* quiz_id (Foreign Key)

* question_text (Rich Text)

* question_type (Multiple Choice, True/False, Short Answer, Matching)

* options (List of strings for MC, T/F)

* correct_answer (String/List of Strings)

* feedback (Optional, Rich Text for correct/incorrect answers)

* points (Integer)

  • Exercise:

* exercise_id

* lesson_id / module_id (Foreign Key, optional if standalone)

* title

* instructions (Rich Text)

* submission_type (Text, File Upload, URL)

* evaluation_criteria (Rich Text)

* maximum_score (Integer)

  • Resource:

* resource_id

* lesson_id / module_id (Foreign Key)

* name

* type (File, Link)

* url / file_path

* description


2. Wireframe Descriptions

The following wireframe descriptions outline the key screens and their primary interactions for the Training Course Builder.

2.1 Dashboard / My Courses

  • Layout: Grid or list view of all created courses.
  • Elements:

* Header: Logo, "My Courses" title, User Profile/Settings.

* "Create New Course" Button: Prominently displayed.

* Course Cards/Rows: Each displays:

* Course Title

* Thumbnail Image (if set)

* Status (Draft, Published, Archived)

* Last Edited Date

* Progress Bar (e.g., "5/10 modules complete" for creation progress)

* Action Buttons: Edit, Preview, Duplicate, Archive/Delete, Publish/Unpublish.

* Search/Filter Bar: To quickly find courses by title, status, etc.

  • Interaction: Clicking "Create New Course" navigates to the Course Settings screen. Clicking a course card/row's "Edit" button navigates to the Course Structure Builder for that course.

2.2 Course Settings / Overview

  • Layout: Form-based, with sections for basic course information.
  • Elements:

* Header: Course Title, "Back to My Courses" link, Save/Publish buttons.

* Navigation Tabs/Sidebar: "Settings," "Structure," "Certification," "Preview."

* Form Fields:

* Course Title (Text input)

* Short Description (Text area)

* Detailed Description (Rich Text Editor)

* Course Objectives (Add/Remove list items, Rich Text)

* Target Audience (Rich Text Editor)

* Prerequisites (Rich Text Editor)

* Estimated Completion Time (Text input with unit selector: hours/days/weeks)

* Difficulty Level (Dropdown)

* Course Thumbnail Upload (Image uploader with preview)

* Tags/Keywords (Multi-select input)

* Save & Continue Button: To proceed to the Course Structure Builder.

  • Interaction: User fills in course metadata. "Save" persists changes. "Save & Continue" moves to the next step in the creation flow.

2.3 Course Structure Builder (Drag-and-Drop)

  • Layout: Two-pane or three-pane interface.

* Left Pane (Optional): Course outline/navigation.

* Center Pane: Visual representation of modules and lessons.

* Right Pane (Contextual): Properties/settings for selected module/lesson/element.

  • Elements:

* Header: Course Title, "Add Module" button, "Preview Course" button, Save button.

* Module Cards:

* Module Title

* "Add Lesson" button

* Module Options (Edit, Duplicate, Delete)

* Drag handle for reordering.

* Lesson Cards (nested within Modules):

* Lesson Title

* Lesson Type Icon (Text, Video, Quiz, Exercise)

* Lesson Options (Edit, Duplicate, Delete)

* Drag handle for reordering.

* "Add Element" Button (within lessons or modules): For adding quizzes, exercises, resources.

* Empty State: "Click 'Add Module' to start building your course."

  • Interaction:

* Drag-and-drop modules to reorder.

* Drag-and-drop lessons within or between modules.

* Click "Add Module" to create a new module.

* Click "Add Lesson" or "Add Element" to open a modal or navigate to a dedicated editor.

* Clicking "Edit" on a module/lesson/element opens its respective editor.

2.4 Lesson Editor

  • Layout: Focus on content creation, with a rich text editor as the central element.
  • Elements:

* Header: Lesson Title, "Back to Structure" link, Save button, Preview button.

* Form Fields:

* Lesson Title (Text input)

* Estimated Time (Text input)

* Rich Text Editor (WYSIWYG): Primary area for lesson content.

* Toolbar with formatting options (bold, italic, lists, headings, links, code block).

* Insert Media Button: Opens a media library/uploader for images, videos, audio.

* Insert Table, Insert Horizontal Rule.

* "Add Quiz" / "Add Exercise" / "Add Resource" Buttons: (If not added via structure builder)

* Attached Elements Section: List of quizzes, exercises, resources linked to this lesson, with options to edit or remove.

  • Interaction: User types and formats lesson content. Uses media uploader to embed visuals. Saves changes.

2.5 Quiz Editor

  • Layout: Question list on one side, question details on the other.
  • Elements:

* Header: Quiz Title, "Back to Lesson/Module" link, Save button, Preview Quiz button.

* Quiz Settings:

* Quiz Title, Description (Text inputs)

* Passing Score (Percentage input)

* Time Limit (Optional, Minutes input)

* Shuffle Questions (Toggle)

* Question List (Left Pane):

* List of questions, each with its type (MC, T/F) and a short snippet.

* "Add Question" button.

* Drag handle for reordering questions.

* Question Details (Right Pane, contextual):

* Question Type Selector (Dropdown: Multiple Choice, True/False, Short Answer, Matching).

* Question Text (Rich Text Editor).

* Points for Question (Number input).

* For Multiple Choice:

* Add/Remove Answer Options (Text inputs).

* Radio buttons/Checkboxes to mark correct answer(s).

* For True/False:

* Radio buttons for True/False correct answer.

* For Short Answer:

* Expected Answer(s) (Text input, multiple if needed).

* Case-sensitive toggle.

* For Matching:

* Add/Remove pairs of "Prompt" and "Match" text inputs.

* Optional: Feedback for Correct/Incorrect answers (Rich Text).

  • Interaction: User adds questions, selects type, defines answers and feedback. Drag-and-drop to reorder questions.

2.6 Hands-on Exercise Editor

  • Layout: Form-based, focused on defining the exercise.
  • Elements:

* Header: Exercise Title, "Back to Lesson/Module" link, Save button.

* Form Fields:

* Exercise Title (Text input)

* Instructions (Rich Text Editor)

* Submission Type (Dropdown: Text Input, File Upload, URL Submission)

* Maximum Score (Number input)

* Evaluation Criteria / Rubric (Rich Text Editor)

* Optional: Sample Solution / Hint (Rich Text Editor, visible only to instructor/after submission)

  • Interaction: User defines all parameters for the exercise.

2.7 Certification Criteria Editor

  • Layout: Rule-based editor, allowing users to define conditions.
  • Elements:

* Header: "Certification Criteria," "Back to Course Settings" link, Save button.

* Rule Builder:

* "Add Rule" button.

* Each rule is a condition block:

* Condition Type (Dropdown: "All Lessons Completed,"

gemini Output

Training Course Builder: Final Design Assets & UX Specifications

Executive Summary

This document outlines the comprehensive design specifications and user experience (UX) recommendations for the "Training Course Builder" platform. The goal is to create an intuitive, engaging, and professional learning environment that effectively delivers course content, facilitates interactivity, and tracks learner progress. This deliverable covers core design principles, visual aesthetics (color palette, typography), detailed wireframe descriptions for key course components, and actionable UX strategies to ensure a superior learning experience across all devices.

The design emphasizes clarity, accessibility, and a seamless flow from course enrollment to certification, providing a robust framework for any subject matter generated by the Course Builder.

1. Core Design Principles

Our design philosophy for the Training Course Builder is centered around the following principles:

  • Clarity & Simplicity: Information should be presented clearly and concisely, minimizing cognitive load. Navigation and interactions must be intuitive.
  • Consistency: A unified visual language and interaction patterns across all course components to build user familiarity and trust.
  • User-Centricity: Design decisions are driven by the needs of the learner, focusing on ease of use, engagement, and effective knowledge transfer.
  • Accessibility: Adherence to WCAG 2.1 AA standards to ensure the platform is usable by individuals with diverse abilities. This includes color contrast, keyboard navigation, and screen reader compatibility.
  • Responsiveness: The learning experience must be optimized for all screen sizes and devices (desktop, tablet, mobile) without compromising functionality or aesthetics.
  • Engagement: Incorporate elements that encourage active participation, maintain interest, and provide motivation throughout the learning journey.

2. Visual Design Specifications

2.1. Color Palette

A professional, versatile, and accessible color palette is proposed to create a clean and modern aesthetic.

  • Primary Brand Color (Professional Base):

* Hex: #2C3E50 (Dark Slate Blue)

* Usage: Main navigation, prominent headers, primary buttons (e.g., "Enroll Now", "Start Module"), background for key informational blocks. Conveys stability and professionalism.

  • Secondary Brand Color (Complementary Accent):

* Hex: #3498DB (Vibrant Sky Blue)

* Usage: Sub-headers, active navigation states, progress indicators, important links, icons. Adds a touch of energy and clarity.

  • Accent / Call-to-Action (CTA) Color:

* Hex: #2ECC71 (Emerald Green)

* Usage: Success messages, completion indicators, "Submit Answer", "Download Certificate" buttons, positive feedback. High contrast for critical actions and positive reinforcement.

  • Neutral Palette (Backgrounds & Text):

* Background Light: #FDFDFD (Near White) - Main content area backgrounds.

* Background Mid: #ECF0F1 (Light Grey) - Section separators, inactive states, secondary content blocks.

* Text Primary: #333333 (Dark Grey) - Main body text for optimal readability.

* Text Secondary: #7F8C8D (Medium Grey) - Subtitles, less critical information, placeholder text.

  • Alert/Warning Color:

* Hex: #E74C3C (Alizarin Red)

* Usage: Error messages, warnings, incorrect answers in quizzes.

Accessibility Note: All color combinations will be tested to ensure WCAG 2.1 AA contrast ratios are met for text and interactive elements.

2.2. Typography

  • Primary Font (Headings & Key Elements): A clean, modern sans-serif font like Montserrat or Open Sans.

* Usage: Course titles, module titles, lesson titles, call-to-action buttons.

* Weight: Bold (700) for main titles, Semi-bold (600) for sub-headers.

  • Secondary Font (Body Text & UI Elements): A highly readable sans-serif font like Lato or Roboto.

* Usage: Paragraph text, lesson content, quiz questions, descriptions, UI labels.

* Weight: Regular (400) for body, Medium (500) for emphasis.

  • Font Sizing: Responsive and scalable. Base size of 16px for body text, with a clear hierarchy for headings (e.g., H1: 32-48px, H2: 24-36px, H3: 20-28px).

2.3. Iconography

  • Utilize a consistent icon set (e.g., Font Awesome, Material Icons) for navigation, content types (video, document, quiz), progress indicators, and interactive elements. Icons should be simple, recognizable, and scalable.

3. Wireframe Descriptions & Key UI Elements

Below are detailed descriptions for the primary wireframes, outlining their structure, content, and interactive elements.

3.1. Course Dashboard / Home Page

This is the learner's entry point to the course.

  • Layout:

* Header (Top): Course Title, User Profile/Navigation, Search (optional).

* Main Content Area (Left/Center):

* Course Hero Section: Large banner image/video, Course Title (H1), Instructor Name(s), Brief Course Description.

* Enrollment/Progress Card: "Enroll Now" button (if not enrolled) or "Continue Learning" button with overall course progress bar (e.g., 60% Complete).

* Key Information Tabs/Sections:

* Overview: Detailed course description, learning objectives (bullet points), target audience, prerequisites.

* Curriculum: List of modules with their titles, estimated time, and number of lessons. Each module can be expanded/collapsed to show lesson titles.

* Instructor(s): Instructor photo, bio, credentials.

* Reviews (Optional): Testimonials or star ratings.

* Call to Action: Prominent "Enroll Now" or "Resume Course" button.

  • Side Navigation (Left, optional but recommended for larger platforms):

* Links to "My Courses", "Dashboard", "Settings", "Help".

  • Key UI Elements: Progress bar, collapsible sections, clear buttons, visual course card.

3.2. Module Overview Page

Displays the contents of a specific module.

  • Layout:

* Header (Top): Breadcrumbs (e.g., Home > Course Title > Module Title), Module Title (H1).

* Module Introduction: Short description of the module's goals and what will be covered.

* Module Progress Bar: Visual indicator of completion for the current module (e.g., 3/5 Lessons Complete).

* Lesson List:

* Each lesson is a clickable card or list item.

* Lesson Card/Item: Lesson Title, Lesson Type (Video, Reading, Quiz, Exercise), Estimated Duration, Completion Status (checkmark or "In Progress").

* Interactive Elements: "Start Module" button, "Continue Module" button, "Mark as Complete" button (if applicable for self-paced).

* Navigation: "Previous Module" and "Next Module" buttons.

  • Key UI Elements: Progress bar, clear lesson status, intuitive navigation buttons.

3.3. Lesson Content Page

The core learning experience where content is consumed.

  • Layout:

* Header (Top): Breadcrumbs (e.g., Home > Course Title > Module Title > Lesson Title).

* Lesson Title (H1): Clear and prominent.

* Content Area (Center):

* Video Player: For video lessons, prominent player with standard controls.

* Text/Image Area: Rich text editor content, embedded images, diagrams, code blocks.

* Downloadable Resources: Links to PDFs, supplementary materials.

* Interactive Elements (e.g., Accordions, Tabs): For breaking up long text or presenting additional details.

* Key Takeaways/Summary (Optional): A concise bulleted list at the end of the lesson.

* Lesson Navigation (Bottom): "Previous Lesson" and "Next Lesson" buttons.

* Discussion/Comments Section (Optional): For learner interaction and questions.

  • Side Panel (Right, optional):

* Module Outline: List of all lessons in the current module, highlighting the current lesson and showing completion status.

* Progress Bar: Current lesson progress (e.g., 50% watched/read).

  • Key UI Elements: Media player, rich text formatting, clear navigation, progress tracking.

3.4. Quiz / Assessment Page

For testing knowledge and comprehension.

  • Layout:

* Header (Top): Breadcrumbs, Quiz Title (H1), Instructions (e.g., "Select the best answer", "You have 15 minutes").

* Question Area (Center):

* Question Number: (e.g., "Question 1 of 10").

* Question Text: Clear and concise.

* Answer Options:

* Multiple Choice/Single Select: Radio buttons.

* Multiple Choice/Multi-Select: Checkboxes.

* True/False: Radio buttons.

* Short Answer/Essay: Text input field.

* Visuals: Images or diagrams relevant to the question.

* Timer (Optional): Visible countdown timer.

* Navigation: "Previous Question", "Next Question", "Review All" (optional), "Submit Quiz" button.

* Feedback (Post-Submission):

* Immediate Feedback: For each question (correct/incorrect, explanation).

* Summary: Score, percentage, review correct/incorrect answers.

* Retake Option: Button to retake the quiz.

  • Key UI Elements: Clear question presentation, distinct answer options, submission button, feedback mechanism.

3.5. Hands-on Exercise / Project Page

For practical application of learned skills.

  • Layout:

* Header (Top): Breadcrumbs, Exercise Title (H1).

* Introduction: Brief overview of the exercise's purpose and learning outcome.

* Detailed Instructions:

* Numbered steps, clear examples, code snippets (if applicable), embedded resources.

* Scenario/Problem Statement: Clearly defined.

* Requirements/Deliverables: What the learner needs to produce.

* Submission Area:

* Text Editor: For code or written responses.

* File Upload: For project files, screenshots.

* Rubric (Optional): How the exercise will be graded/assessed.

* Actions: "Save Draft", "Submit Exercise", "Mark as Complete" (for self-assessed).

* Feedback/Grading Status (Post-Submission):

* Indicator (e.g., "Pending Review", "Graded: 90%", "Feedback Available").

* Link to detailed feedback.

  • Key UI Elements: Rich text instructions, file uploaders, clear submission process, status indicators.

3.6. Certification / Completion Page

Acknowledges successful course completion.

  • Layout:

* Header (Top): Breadcrumbs, "Course Completed!" (H1).

* Celebration Message: Congratulatory text.

* Certificate Display:

* A visually appealing digital certificate template.

* Dynamically populated with: Learner's Name, Course Title, Date of Completion, Instructor/Institution Signature.

* Option to view in full-screen.

* Actions:

* "Download Certificate" button (PDF format).

* "Share on LinkedIn" / Social Media sharing options.

* "Explore More Courses" button.

  • Key UI Elements: Dynamic certificate, clear download button, social sharing.

4. User Experience (UX) Recommendations

4.1. Navigation & Flow

  • Global Navigation: Consistent top bar or left sidebar for "My Courses," "Dashboard," "Settings," and "Help."
  • Course-Specific Navigation: A dedicated sidebar or sticky top menu within a course, displaying modules and lessons, with the current location highlighted.
  • Breadcrumbs: Implement clear breadcrumbs on all sub-pages (e.g., Home > Course > Module > Lesson) for easy orientation.
  • Next/Previous Buttons: Prominent navigation buttons at the bottom of each lesson, quiz, and exercise page to guide learners through the course sequence.
  • Internal Links: Use internal links within content to jump to relevant sections or resources.

4.2. Engagement & Interactivity

  • Micro-interactions: Subtle animations for button clicks, progress updates, and feedback messages to make the interface feel more responsive and alive.
  • Progress Visualization: Implement clear progress bars at the course, module, and lesson levels
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);}});}