Interactive Quiz Builder
Run ID: 69cad75c74bac0555ea30b252026-03-30Education
PantheraHive BOS
BOS Dashboard

This document outlines the comprehensive design requirements for the "Interactive Quiz Builder," focusing on detailed specifications, user experience, and visual aesthetics. This output serves as a foundational blueprint for development, ensuring a robust, intuitive, and engaging platform for both quiz creators and participants.


1. Project Overview & Goals

The "Interactive Quiz Builder" aims to provide an intuitive and powerful platform for creating, managing, and taking dynamic quizzes. The primary goal is to empower educators, trainers, and content creators to design engaging assessments while offering a seamless and interactive experience for participants.

Key Goals:

  • Empowerment: Enable easy creation of diverse quiz types.
  • Engagement: Foster an interactive and enjoyable quiz-taking experience.
  • Insight: Provide meaningful feedback and analytics for both creators and participants.
  • Accessibility: Ensure the platform is usable by a broad audience across various devices.
  • Scalability: Design a system capable of handling a growing number of quizzes and users.

2. Detailed Design Specifications

2.1. Functional Requirements

2.1.1. Quiz Authoring Module (Creator Interface)

  • Quiz Management Dashboard:

* List all created quizzes with status (Draft, Published, Archived).

* Options to Create New, Edit, Duplicate, Delete, Publish/Unpublish quizzes.

* Search and filter capabilities (by title, status, date).

  • Quiz Creation/Editing Interface:

* Basic Information:

* Quiz Title (mandatory)

* Quiz Description (rich text editor for formatting, images, links)

* Thumbnail/Cover Image upload

* Category/Tags for organization

* Question Types: Support for:

* Multiple Choice (Single Select): One correct answer from multiple options.

* Multiple Select (Multi-Choice): Multiple correct answers from multiple options.

* True/False: Simple binary choice.

* Short Answer/Text Input: User types a short answer; supports multiple correct answers or keyword matching.

* Image-Based Questions: Ability to embed images directly into questions and/or answer options.

* Question Configuration:

* Question Text (rich text editor)

* Image/Video embedding for questions

* Answer Options: Add/Remove, reorder.

* Indicate Correct Answer(s).

* Feedback per Answer: Specific feedback for correct and incorrect answers (e.g., "Correct! This is why...", "Incorrect. The correct answer is...").

* Scoring: Assign points per question (default 1 point).

* Quiz Settings:

* Visibility: Public (anyone with link), Private (password-protected), or Restricted (only registered users).

* Time Limit: Optional overall quiz timer (e.g., 30 minutes).

* Attempts Allowed: Unlimited, or a specific number of attempts.

* Result Display:

* Show results immediately after submission.

* Show correct answers/explanations after submission.

* Show overall score only.

* Question Randomization: Randomize question order.

* Answer Option Randomization: Randomize order of answer options.

* Completion Message: Customizable message displayed upon quiz completion.

* Preview Functionality: Allow creators to test the quiz as a participant before publishing.

* Save & Publish: Save as draft, or publish the quiz to make it live.

2.1.2. Quiz Taking Module (Participant Interface)

  • Quiz Introduction Screen:

* Display Quiz Title, Description, Cover Image, estimated time, number of questions.

* "Start Quiz" button.

  • Interactive Question Display:

* Clear presentation of question text, images, and answer options.

* Dynamic input fields based on question type (radio buttons, checkboxes, text input).

* Real-time timer display (if configured).

* Progress indicator (e.g., "Question 3 of 10").

* "Next Question" / "Previous Question" navigation (optional, configurable).

* "Submit Quiz" button on the final question.

  • Immediate Feedback (if configured): Display "Correct!" or "Incorrect!" immediately after an answer is selected.

2.1.3. Results & Analytics Module

  • Participant Results View:

* Overall Score/Percentage.

* Time taken to complete the quiz.

* Review all questions with participant's answer, correct answer, and specific feedback/explanations.

* Option to share results (e.g., social media, print).

  • Creator Analytics Dashboard:

* Total attempts for each quiz.

* Average score.

* Breakdown of correct/incorrect answers per question (identifying difficult questions).

* List of participants and their scores/completion times (if user tracking is enabled).

2.1.4. User Management (Basic)

  • Registration/Login: Secure user authentication (email/password, social login options).
  • Profile Management: Basic user profile (name, email).
  • My Quizzes (Participant): View quizzes they have taken, their scores, and reattempt options (if allowed).

2.2. Technical Considerations

  • Frontend Framework: React.js for a dynamic, component-based, and performant user interface.
  • Backend: Node.js with Express.js for a scalable and efficient API layer.
  • Database: PostgreSQL for structured data storage (quizzes, questions, users, results).
  • Cloud Storage: AWS S3 or Google Cloud Storage for media assets (quiz cover images, question images).
  • API Design: RESTful API for clear communication between frontend and backend.
  • Deployment: Docker for containerization, Kubernetes for orchestration, enabling scalable and resilient deployment on cloud platforms (AWS, GCP, Azure).
  • Security: Implement robust authentication (JWT), authorization, input validation, and secure data handling practices.
  • Responsiveness: Design and develop using a mobile-first approach to ensure optimal experience across desktops, tablets, and smartphones.

3. Wireframe Descriptions

The following descriptions outline the key screens and their interactive elements.

3.1. Screen 1: Quiz Dashboard (Author View)

  • Header: Logo, "My Quizzes" title, User Profile/Logout.
  • Main Area:

* "Create New Quiz" Button: Prominently displayed.

* Search Bar & Filters: For quiz title, status (Draft, Published), category.

* Quiz List Table:

* Columns: Quiz Title, Status, Questions Count, Attempts, Average Score, Last Modified, Actions.

* Each row represents a quiz.

* Actions Column: Icons for Edit, Preview, Publish/Unpublish, Duplicate, Delete, View Analytics.

  • Sidebar (Optional): Quick links to "All Quizzes," "Drafts," "Published," "Archived."

3.2. Screen 2: Create/Edit Quiz (Author View)

  • Header: "Create New Quiz" / "Edit Quiz: [Quiz Title]", Save/Publish buttons, Back button.
  • Main Content Area (Tabbed or Accordion Layout):

* "Quiz Details" Section:

* Input fields for Quiz Title, Description (rich text editor).

* Upload area for Quiz Cover Image.

* Dropdowns/Tags for Categories.

* "Questions" Section:

* "Add New Question" button.

* List of existing questions with drag-and-drop reordering.

* Each question shows: Question text snippet, type, points, and actions (Edit, Duplicate, Delete).

* "Settings" Section:

* Toggle switches/Dropdowns for: Visibility, Time Limit (input field if enabled), Attempts Allowed, Result Display options, Randomization options.

* Input field for Completion Message.

3.3. Screen 3: Add/Edit Question (Author View)

  • Header: "Add New Question" / "Edit Question", Save/Cancel buttons.
  • Main Content Area:

* Question Type Selector: Radio buttons or dropdown (Multiple Choice, Multi-Select, True/False, Short Answer).

* Question Text Input: Rich text editor, with an option to embed images/videos.

* Answer Options Area (dynamic based on question type):

* Multiple Choice/Multi-Select:

* List of input fields for answer options.

* Checkbox/Radio button next to each for marking correct answer(s).

* "Add Option" button, Delete icon for each option.

* Input fields for "Feedback for Correct Answer" and "Feedback for Incorrect Answer."

* True/False: Radio buttons for "True" and "False," with a selector for the correct one.

* Short Answer: Input field for "Correct Answer(s)" (supports multiple comma-separated values or keywords).

* Points Input: Numeric input for points awarded for the question.

3.4. Screen 4: Quiz Introduction (User View)

  • Header: Quiz Builder Logo.
  • Main Content Area (Centered Card Layout):

* Quiz Cover Image.

* Quiz Title (large, prominent).

* Quiz Description (formatted text).

* Key information: Number of questions, estimated time, attempts remaining.

* "Start Quiz" Button (primary action).

* (Optional) Login/Register prompt if quiz is restricted.

3.5. Screen 5: Quiz Taking Interface (User View)

  • Header: Quiz Title, Progress Indicator ("Question X of Y"), Timer (if enabled).
  • Main Content Area:

* Question Card:

* Question Number.

* Question Text (large, clear font).

* Embedded Images/Videos (if any).

* Answer Area: Dynamic input controls based on question type (radio buttons, checkboxes, text input).

* Navigation Buttons: "Previous" (if enabled), "Next Question".

* "Submit Quiz" Button: Appears on the final question.

3.6. Screen 6: Quiz Results (User View)

  • Header: Quiz Title, "Results" or "Quiz Completed!" message.
  • Main Content Area (Summary & Detail):

* Summary Section:

* Your Score: Prominently displayed (e.g., "8/10", "80%").

* Time Taken.

* Custom Completion Message.

* "Retake Quiz" button (if allowed).

* "Share Results" button.

* Detailed Review Section:

* List of all questions.

* For each question:

* Question Text.

* Your Answer (highlighted).

* Correct Answer (highlighted, if different from user's).

* Specific Feedback/Explanation.

* Indication of Correct/Incorrect.


4. Color Palettes

The color palette is designed to be modern, clean, engaging, and accessible, ensuring good contrast and visual hierarchy.

  • Primary Brand Color: #4CAF50 (A vibrant, friendly green)

Usage:* Primary call-to-action buttons (e.g., "Start Quiz", "Publish"), active navigation states, key highlights.

  • Secondary Accent Color: #2196F3 (A professional, trustworthy blue)

Usage:* Secondary buttons (e.g., "Add Question"), links, progress bars.

  • Tertiary Accent Color (for feedback/status):

* Success/Correct: #8BC34A (Lighter green)

* Error/Incorrect: #F44336 (Red)

* Warning/Info: #FFC107 (Amber)

  • Neutral Palette (for text, backgrounds, borders):

* Dark Text/Headers: #212121 (Very dark gray)

* Body Text: #424242 (Dark gray)

* Light Gray (Borders/Dividers): #E0E0E0

* Lighter Gray (Backgrounds): #F5F5F5

* White: #FFFFFF (Main background, card elements)

Color Accessibility:

  • Ensure sufficient contrast ratios (WCAG 2.1 AA or AAA) between text and background colors, especially for body text and interactive elements.
  • Avoid relying solely on color to convey information; use icons, text labels, or patterns as supplementary indicators.

5. UX Recommendations

5.1. Clarity & Simplicity

  • Intuitive Navigation: Keep navigation paths shallow and clearly labeled. Use breadcrumbs for complex multi-step processes (e.g., quiz creation).
  • Minimalist Design: Focus on essential elements, reducing cognitive load. Use ample whitespace.
  • Clear Language: Use plain, unambiguous language for instructions, labels, and feedback messages.
  • Consistent Layout: Maintain a consistent layout structure across similar screens to build user familiarity.

5.2. Feedback & Guidance

  • Immediate Validation: Provide instant feedback for user actions (e.g., form field validation, success messages
gemini Output

Interactive Quiz Builder: Design Specifications & UX Recommendations

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Interactive Quiz Builder" application. The goal is to create an intuitive, powerful, and engaging platform for users to create, manage, and share interactive quizzes.


1. Design Specifications

1.1. Core Purpose

To provide a user-friendly web application that empowers individuals and educators to design, customize, and deploy interactive quizzes with various question types, settings, and sharing options.

1.2. Key Features

A. Quiz Creation & Management (Creator's Perspective)

  • Quiz Dashboard: Central hub to view, edit, duplicate, delete, and publish all created quizzes.
  • New Quiz Creation Flow:

* Quiz Details:

* Title (required)

* Description (optional, rich text editor)

* Topic/Category (dropdown/tags)

* Difficulty Level (e.g., Easy, Medium, Hard)

* Thumbnail Image Upload (optional)

* Question Editor:

* Question Types:

* Multiple Choice (Single Correct Answer)

* Multiple Select (Multiple Correct Answers)

* True/False

* Short Answer (Exact match or keyword-based grading)

* Image-based Question (e.g., "Identify the object in the image")

* Question Text/Media: Rich text editor for questions, option to embed images/videos.

* Answer Options: Input fields for options, with clear indicators for selecting correct answers.

* Feedback: Customizable feedback messages for correct and incorrect answers (optional).

* Points: Assign points per question.

* Question Reordering: Drag-and-drop functionality.

* Add/Delete Questions: Clear controls for managing questions within a quiz.

* Quiz Settings:

* Timer: Enable/disable, set duration (per question or overall quiz).

* Attempts: Limit number of attempts per user.

* Scoring: Display score immediately, show correct answers after submission, etc.

* Visibility: Public (shareable link) / Private (only accessible via direct link, not searchable).

* Randomize Questions/Options: Option to shuffle question order and/or answer option order.

* Certificate Generation: (Future enhancement)

  • Quiz Preview: Ability to test the quiz from a taker's perspective before publishing.
  • Publish/Save Draft: Option to save quizzes as drafts or publish them for sharing.
  • Sharing Options: Direct link, embed code, social media sharing.

B. Quiz Taking & Results (Taker's Perspective)

  • Quiz Landing Page: Displays quiz title, description, creator, and a "Start Quiz" button.
  • Interactive Quiz Interface:

* Clear display of questions and answer options.

* Progress indicator (e.g., "Question 3 of 10").

* Timer display (if enabled).

* "Next" / "Submit" buttons.

  • Instant Feedback: (Optional, based on settings) Immediate indication of correct/incorrect answers after each question.
  • Quiz Results Page:

* Overall score/percentage.

* Summary of correct/incorrect answers.

* Option to review answers (showing correct answers and feedback, if enabled).

1.3. User Flows

A. Quiz Creator Flow

  1. Access Dashboard: User logs in and lands on their Quiz Dashboard.
  2. Initiate Creation: Clicks "Create New Quiz".
  3. Define Quiz Details: Fills in Title, Description, Topic, Difficulty, uploads Thumbnail. Clicks "Next" or "Save & Continue".
  4. Add Questions:

* Selects Question Type.

* Enters Question text and any media.

* Adds Answer Options, marks correct answer(s).

* Adds Feedback (optional) and Points.

* Clicks "Add Question" to save and add another, or "Save" to save current question and return to quiz overview.

* Can reorder, edit, or delete existing questions.

  1. Configure Settings: Navigates to "Settings" tab/section. Adjusts Timer, Attempts, Scoring, Visibility, Randomization. Clicks "Save Settings".
  2. Preview Quiz: Clicks "Preview" to experience the quiz as a taker.
  3. Publish/Share: Clicks "Publish Quiz" to make it live, then accesses sharing options. Alternatively, clicks "Save Draft" to continue later.

B. Quiz Taker Flow

  1. Access Quiz: User receives and clicks on a shared quiz link.
  2. View Landing Page: Sees quiz title, description, and "Start Quiz" button.
  3. Start Quiz: Clicks "Start Quiz".
  4. Answer Questions: Navigates through questions, selecting answers.

* Timer (if enabled) counts down.

* Progress bar/indicator updates.

  1. Submit Quiz: Clicks "Submit Quiz" on the final question.
  2. View Results: Sees their score, summary, and potentially detailed review of answers (based on quiz settings).

2. Wireframe Descriptions

The following describes key screens and their primary elements. These are conceptual layouts for functional clarity.

2.1. Creator Dashboard

  • Header: Logo, "Create New Quiz" button, User Profile/Settings.
  • Main Content Area:

* "My Quizzes" Section:

* Filter/Sort options (e.g., Published, Drafts, Topic, Date).

* List of quizzes, each as a card or row:

* Quiz Title

* Thumbnail (if uploaded)

* Status (Draft, Published)

* Last Modified Date

* Actions: "Edit", "Preview", "Share", "Duplicate", "Delete" (with confirmation).

* "Create New Quiz" prominent button/card.

2.2. Quiz Details Screen (Step 1 of Quiz Creation)

  • Header: "Create New Quiz", Progress Indicator (e.g., "1/3: Details").
  • Main Form:

* Quiz Title: Large text input field.

* Description: Rich text editor (WYSIWYG) for detailed quiz description.

* Topic/Category: Dropdown or multi-select tag input.

* Difficulty Level: Radio buttons or dropdown (Easy, Medium, Hard).

* Thumbnail Image Upload: Drag-and-drop area or file picker.

  • Navigation: "Cancel", "Save Draft", "Next: Add Questions" button.

2.3. Question Editor Screen (Step 2 of Quiz Creation)

  • Header: "Quiz Title" (editable), Progress Indicator (e.g., "2/3: Questions").
  • Left Sidebar (or Top Section):

* Question List: Numbered list of existing questions. Clicking a question loads it into the editor. "Add New Question" button.

* Question Type Selector: Dropdown or radio buttons (Multiple Choice, True/False, Short Answer, Image-based).

  • Main Content Area (Question Editor):

* Question Text Input: Rich text editor.

* Add Media Button: Icon for image/video upload/embed.

* Answer Options Section (Dynamically changes based on Q-Type):

Multiple Choice/Select*: Input fields for options, radio buttons (MCQ) or checkboxes (MSQ) to mark correct answer(s). "Add Option" button.

True/False*: Two radio buttons: "True", "False" to mark correct.

Short Answer*: Single input field for expected answer(s) (comma-separated for multiple correct variants).

* Feedback Fields:

* "Correct Answer Feedback" (optional rich text).

* "Incorrect Answer Feedback" (optional rich text).

* Points for Question: Numeric input.

* Actions: "Save Question", "Delete Question", "Duplicate Question".

  • Navigation: "Previous: Quiz Details", "Next: Settings" button.

2.4. Quiz Settings Screen (Step 3 of Quiz Creation)

  • Header: "Quiz Title" (editable), Progress Indicator (e.g., "3/3: Settings").
  • Main Content Area:

* Quiz Timer: Toggle switch "Enable Timer". If enabled, input field for "Overall Quiz Duration" (minutes) or "Time per Question" (seconds).

* Attempts: Input field for "Number of Attempts" (e.g., 1, 3, Unlimited).

* Scoring Options: Checkboxes/Radio buttons:

* "Show Score Immediately After Submission"

* "Show Correct Answers After Submission"

* "Show Question Feedback After Submission"

* Visibility: Radio buttons: "Public" (shareable link, potentially searchable) / "Private" (shareable link only).

* Randomization: Checkboxes: "Randomize Question Order", "Randomize Answer Option Order".

  • Navigation: "Previous: Questions", "Save & Publish" button, "Save Draft" button, "Preview Quiz" button.

2.5. Quiz Taking Screen (Taker's View)

  • Header: Quiz Title, Progress Bar/Indicator (e.g., "Question X of Y"), Timer (if enabled).
  • Main Content Area:

* Question Number: "Question 1".

* Question Text/Image/Video: Clearly displayed.

* Answer Options:

Multiple Choice/Select*: Radio buttons/checkboxes with clear labels.

True/False*: Radio buttons "True", "False".

Short Answer*: Text input field.

  • Navigation: "Next Question" button (changes to "Submit Quiz" on the last question).

2.6. Quiz Results Screen (Taker's View)

  • Header: Quiz Title, "Results".
  • Main Content Area:

* Overall Score: Prominently displayed (e.g., "8/10", "80%").

* Summary: "You answered X questions correctly out of Y."

* Review Answers Button: (If enabled in settings) "Review Your Answers".

* Share Score Button: (Optional)

  • Review Answers Overlay/Section (if enabled):

* List of all questions.

* For each question: Original question, user's answer, correct answer, feedback.


3. Color Palettes

The proposed color palette aims for a professional, inviting, and accessible user experience, with clear visual hierarchy and semantic meaning.

  • Primary Brand Color: #007BFF (A vibrant, professional blue)

* Usage: Main call-to-action (CTA) buttons, primary navigation elements, active states, branding accents.

  • Secondary Accent Color: #28A745 (A confident, successful green)

* Usage: "Publish" buttons, "Correct" feedback, success messages, positive indicators.

  • Tertiary Accent Color: #FFC107 (An engaging, warm yellow/orange)

* Usage: "Save Draft" buttons, warnings, highlights, interactive elements.

  • Neutral Palette:

* Backgrounds:

* Light Grey: #F8F9FA (Soft, non-distracting main background)

* White: #FFFFFF (For content cards, modals, input fields)

* Borders/Dividers: #DEE2E6 (Subtle separation)

* Hover/Active States: #E9ECEF (Slightly darker grey for interactive elements)

  • Text Colors:

* Primary Text: #212529 (Dark charcoal for readability)

* Secondary Text/Labels: #6C757D (Softer grey for supporting information)

* Link Text: #007BFF (Matches primary brand color)

  • Semantic Colors:

* Success: #28A745 (Green - for correct answers, successful actions)

* Danger/Error: #DC3545 (Red - for incorrect answers, error messages, delete actions)

* Warning: #FFC107 (Yellow - for warnings, pending actions)

* Info: #17A2B8 (Cyan - for informational messages)

Accessibility Note: Ensure sufficient contrast ratios for all text and interactive elements (WCAG 2.1 AA standards).


4. UX Recommendations

4.1. Clarity and Simplicity

  • Intuitive Interface: Design the quiz creation process to be as
gemini Output

Finalized Design Assets: Interactive Quiz Builder

This document outlines the comprehensive design specifications, wireframe descriptions, color palette, and user experience (UX) recommendations for the "Interactive Quiz Builder". This deliverable serves as the blueprint for the visual and interactive aspects of the application, ensuring a modern, intuitive, and engaging experience for both quiz creators and participants.


1. Introduction

The Interactive Quiz Builder is designed to empower users to easily create, manage, and deploy engaging quizzes across various topics. This final design specification focuses on delivering a user-friendly interface that prioritizes clarity, efficiency, and aesthetic appeal. The goal is to provide a seamless experience from quiz creation to participation, ensuring robust functionality wrapped in an elegant and accessible design.


2. Overall Design Philosophy

Our design philosophy for the Interactive Quiz Builder centers on Clarity, Engagement, and Efficiency.

  • Clarity: The interface must be straightforward and easy to understand, minimizing cognitive load for users. Clear labels, intuitive navigation, and well-organized content are paramount.
  • Engagement: For quiz takers, the experience should be dynamic and motivating. For creators, the process of building quizzes should be enjoyable and rewarding. Subtle animations, positive feedback mechanisms, and an inviting visual style contribute to engagement.
  • Efficiency: Quiz creators need to build quizzes quickly and effectively. Streamlined workflows, drag-and-drop functionality, and quick access to essential tools are key to maximizing efficiency.

The visual style will be modern, clean, and professional, utilizing a balanced color palette and legible typography to ensure a pleasant user experience on any device.


3. Detailed Design Specifications

3.1. Layout & Grid System

  • Responsive Design: The application will be fully responsive, adapting seamlessly to desktop, tablet, and mobile screen sizes.

* Desktop (≥1024px): Two or three-column layouts (e.g., sidebar + main content).

* Tablet (768px - 1023px): Content reflows, sidebars may collapse into accordions or off-canvas menus.

* Mobile (<768px): Single-column layouts, primary navigation becomes a hamburger menu, content stacks vertically.

  • 12-Column Grid: A standard 12-column grid system (e.g., Bootstrap, Material UI) will be used for consistent spacing and alignment across all breakpoints.
  • Spacing: Consistent use of a base unit (e.g., 8px) for margins, padding, and component spacing to ensure visual harmony.
  • Content Areas: Clearly defined sections for headers, main content, sidebars, and footers.

3.2. Typography

  • Primary Font Family: Inter (sans-serif) - chosen for its modern aesthetic, excellent legibility across various sizes, and comprehensive character set.
  • Fallback Fonts: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif.
  • Font Sizes:

* H1 (Page Titles): 36px (desktop), 28px (tablet), 24px (mobile) - Bold

* H2 (Section Titles): 28px (desktop), 24px (tablet), 20px (mobile) - Semi-Bold

* H3 (Card Titles/Sub-sections): 22px (desktop), 18px (tablet), 16px (mobile) - Medium

* H4 (Component Labels): 18px (desktop), 16px (tablet), 14px (mobile) - Medium

* Body Text: 16px (desktop/tablet), 14px (mobile) - Regular

* Small Text/Labels: 14px (desktop/tablet), 12px (mobile) - Regular

* Button Text: 16px - Medium

  • Line Height: 1.5 for body text, 1.2 for headings.
  • Letter Spacing: Default normal, with slight adjustments for headings for better visual appeal.

3.3. UI Elements & Components

  • Buttons:

* Primary: Solid background, brand color. Used for main calls to action (e.g., "Create Quiz", "Publish", "Submit Answer").

* Default: Background: Primary Color, Text: White.

* Hover: Slightly darker Primary Color.

* Active: Darker Primary Color, slight press effect.

* Disabled: Lighter Primary Color, reduced opacity, no pointer events.

* Secondary: Outlined, brand color border, transparent background. Used for less prominent actions (e.g., "Cancel", "Edit Draft").

* Default: Border: Primary Color, Text: Primary Color.

* Hover: Background: Primary Color (light tint), Text: Primary Color.

* Ghost/Tertiary: Transparent background, text color. For subtle actions (e.g., "More Options", "View Details").

* Icon Buttons: For actions represented solely by an icon (e.g., Delete, Settings).

  • Input Fields:

* Text/Number Inputs: Rounded corners (e.g., 4-8px radius).

* Default: Light gray border, light background.

* Focus: Primary color border, subtle shadow.

* Error: Red border, error icon, error message below.

* Disabled: Light gray background, dashed border.

* Textareas: Similar to text inputs, with vertical resize handle.

* Dropdowns (Selects): Custom styled, consistent with input fields.

* Checkboxes/Radio Buttons: Custom styled, using brand accent color for checked state. Larger touch targets for accessibility.

* Toggle Switches: For on/off settings.

  • Cards & Containers:

* Used extensively for quiz listings, question blocks, and result summaries.

* Subtle shadow (e.g., box-shadow: 0 4px 8px rgba(0,0,0,0.1)) for depth.

* Border radius (e.g., 8-12px) for a softer, modern look.

* Consistent internal padding.

  • Progress Indicators:

* Progress Bars: For quiz completion, using primary color.

* Spinners/Loaders: For asynchronous operations, centrally placed.

  • Modals & Dialogs:

* For confirmations, settings, and complex forms.

* Overlay with slight opacity to dim background content.

* Clear header, body, and action buttons.

* Esc key and outside click to close.

  • Navigation:

* Top Navigation Bar: Logo, user profile/dashboard link, "Create New Quiz" button.

* Side Navigation (Builder): List of questions, quiz settings, "Add Question" button. Collapsible on smaller screens.

  • Icons: A consistent icon set (e.g., Font Awesome, Material Icons) will be used throughout the application for actions (edit, delete, preview, publish), question types, and navigation.

3.4. Interactivity & Animations

  • Hover Effects: Subtle changes in background color, shadow, or border for interactive elements (buttons, cards, links).
  • Transitions: Smooth ease-in-out transitions (e.g., 0.2s) for state changes (button presses, menu expansions, modal openings).
  • Feedback Animations:

* Correct Answer: Brief animation (e.g., green checkmark, slight bounce) and positive sound (optional).

* Incorrect Answer: Brief animation (e.g., red cross, slight shake) and distinct sound (optional).

  • Loading States: Skeleton loaders or content placeholders for sections while data is being fetched.
  • Drag-and-Drop: Visual cues (e.g., ghosted item, highlight on drop target) for reordering questions.

4. Wireframe Descriptions (Key Screens)

4.1. A. Dashboard / Quiz List Screen

Purpose: Overview of all created quizzes, quick access to creation and management.

  • Header:

* [Logo] (Left)

* [Search Bar] (Center, "Search quizzes...")

* [User Profile Icon/Avatar] (Right, with dropdown for settings, logout)

* [Primary Button: "Create New Quiz"] (Right, prominent)

  • Main Content Area:

* [H2: "My Quizzes"]

* [Filter/Sort Options] (e.g., "All Quizzes", "Published", "Drafts", "Sort by: Date, Name")

* Quiz Card Grid: Displays individual quiz cards. Each card includes:

* [H3: Quiz Title]

* [Quiz Description Snippet]

* [Status Tag] (e.g., "Draft", "Published", "Archived")

* [Number of Questions] (e.g., "12 Questions")

* [Last Modified Date]

* [Action Buttons/Icons] (e.g., [Edit Icon], [Preview Icon], [Publish/Unpublish Toggle], [Share Icon], [Delete Icon])

* [Empty State Illustration/Message] (If no quizzes exist, prompting user to create one).

4.2. B. Quiz Builder (Question Editor) Screen

Purpose: Interface for creating and editing quiz questions and overall quiz settings.

  • Header:

* [Back Button/Icon] (Left, e.g., to Dashboard)

* [H1: Quiz Title (Editable)] (Center, "Untitled Quiz" by default)

* [Secondary Button: "Save Draft"]

* [Secondary Button: "Preview"]

* [Primary Button: "Publish Quiz"]

  • Left Sidebar (Quiz Settings & Questions List):

* [H3: Quiz Settings]

* [Input Field: Quiz Title]

* [Textarea: Quiz Description]

* [Dropdown: Topic/Category]

* [Toggle: Enable Timer (with input for duration)]

* [Toggle: Randomize Question Order]

* [Toggle: Show Answers After Each Question]

* [Toggle: Allow Multiple Attempts]

* [H3: Questions]

* [Primary Button: "Add New Question"] (Sticky at bottom of sidebar or top of list)

* Question List (Draggable/Reorderable):

* Each item: [Question Number]. [Question Snippet]

* [Drag Handle Icon]

* [Delete Icon] (on hover)

* Clicking an item highlights it and loads its details in the main content area.

  • Main Content Area (Question Editor):

* `[H2: "

interactive_quiz_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
\n\n\n"); 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'\nimport ReactDOM from 'react-dom/client'\nimport App from './App'\nimport './index.css'\n\nReactDOM.createRoot(document.getElementById('root')!).render(\n \n \n \n)\n"); 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'\nimport './App.css'\n\nfunction App(){\n return(\n
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n
\n )\n}\nexport default App\n"); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e}\n.app{min-height:100vh;display:flex;flex-direction:column}\n.app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px}\nh1{font-size:2.5rem;font-weight:700}\n"); 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)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\n## Open in IDE\nOpen the project folder in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- 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",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "type": "module",\n "scripts": {\n "dev": "vite",\n "build": "vue-tsc -b && vite build",\n "preview": "vite preview"\n },\n "dependencies": {\n "vue": "^3.5.13",\n "vue-router": "^4.4.5",\n "pinia": "^2.3.0",\n "axios": "^1.7.9"\n },\n "devDependencies": {\n "@vitejs/plugin-vue": "^5.2.1",\n "typescript": "~5.7.3",\n "vite": "^6.0.5",\n "vue-tsc": "^2.2.0"\n }\n}\n'); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport { resolve } from 'path'\n\nexport default defineConfig({\n plugins: [vue()],\n resolve: { alias: { '@': resolve(__dirname,'src') } }\n})\n"); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]}\n'); zip.file(folder+"tsconfig.app.json",'{\n "compilerOptions":{\n "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"],\n "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true,\n "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue",\n "strict":true,"paths":{"@/*":["./src/*"]}\n },\n "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"]\n}\n'); zip.file(folder+"env.d.ts","/// \n"); zip.file(folder+"index.html","\n\n\n \n \n "+slugTitle(pn)+"\n\n\n
\n \n\n\n"); 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'\nimport { createPinia } from 'pinia'\nimport App from './App.vue'\nimport './assets/main.css'\n\nconst app = createApp(App)\napp.use(createPinia())\napp.mount('#app')\n"); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue","\n\n\n\n\n"); 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}\n"); 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)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nnpm run dev\n\`\`\`\n\n## Build\n\`\`\`bash\nnpm run build\n\`\`\`\n\nOpen in VS Code or WebStorm.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n"); } /* --- 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",'{\n "name": "'+pn+'",\n "version": "0.0.0",\n "scripts": {\n "ng": "ng",\n "start": "ng serve",\n "build": "ng build",\n "test": "ng test"\n },\n "dependencies": {\n "@angular/animations": "^19.0.0",\n "@angular/common": "^19.0.0",\n "@angular/compiler": "^19.0.0",\n "@angular/core": "^19.0.0",\n "@angular/forms": "^19.0.0",\n "@angular/platform-browser": "^19.0.0",\n "@angular/platform-browser-dynamic": "^19.0.0",\n "@angular/router": "^19.0.0",\n "rxjs": "~7.8.0",\n "tslib": "^2.3.0",\n "zone.js": "~0.15.0"\n },\n "devDependencies": {\n "@angular-devkit/build-angular": "^19.0.0",\n "@angular/cli": "^19.0.0",\n "@angular/compiler-cli": "^19.0.0",\n "typescript": "~5.6.0"\n }\n}\n'); zip.file(folder+"angular.json",'{\n "$schema": "./node_modules/@angular/cli/lib/config/schema.json",\n "version": 1,\n "newProjectRoot": "projects",\n "projects": {\n "'+pn+'": {\n "projectType": "application",\n "root": "",\n "sourceRoot": "src",\n "prefix": "app",\n "architect": {\n "build": {\n "builder": "@angular-devkit/build-angular:application",\n "options": {\n "outputPath": "dist/'+pn+'",\n "index": "src/index.html",\n "browser": "src/main.ts",\n "tsConfig": "tsconfig.app.json",\n "styles": ["src/styles.css"],\n "scripts": []\n }\n },\n "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"}\n }\n }\n }\n}\n'); zip.file(folder+"tsconfig.json",'{\n "compileOnSave": false,\n "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"]},\n "references":[{"path":"./tsconfig.app.json"}]\n}\n'); zip.file(folder+"tsconfig.app.json",'{\n "extends":"./tsconfig.json",\n "compilerOptions":{"outDir":"./dist/out-tsc","types":[]},\n "files":["src/main.ts"],\n "include":["src/**/*.d.ts"]\n}\n'); zip.file(folder+"src/index.html","\n\n\n \n "+slugTitle(pn)+"\n \n \n \n\n\n \n\n\n"); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser';\nimport { appConfig } from './app/app.config';\nimport { AppComponent } from './app/app.component';\n\nbootstrapApplication(AppComponent, appConfig)\n .catch(err => console.error(err));\n"); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; }\nbody { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; }\n"); 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';\nimport { RouterOutlet } from '@angular/router';\n\n@Component({\n selector: 'app-root',\n standalone: true,\n imports: [RouterOutlet],\n templateUrl: './app.component.html',\n styleUrl: './app.component.css'\n})\nexport class AppComponent {\n title = '"+pn+"';\n}\n"); zip.file(folder+"src/app/app.component.html","
\n
\n

"+slugTitle(pn)+"

\n

Built with PantheraHive BOS

\n
\n \n
\n"); 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}\n"); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';\nimport { provideRouter } from '@angular/router';\nimport { routes } from './app.routes';\n\nexport const appConfig: ApplicationConfig = {\n providers: [\n provideZoneChangeDetection({ eventCoalescing: true }),\n provideRouter(routes)\n ]\n};\n"); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router';\n\nexport const routes: Routes = [];\n"); 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)+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\nng serve\n# or: npm start\n\`\`\`\n\n## Build\n\`\`\`bash\nng build\n\`\`\`\n\nOpen in VS Code with Angular Language Service extension.\n"); zip.file(folder+".gitignore","node_modules/\ndist/\n.env\n.DS_Store\n*.local\n.angular/\n"); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/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("\n"):"# add dependencies here\n"; zip.file(folder+"main.py",src||"# "+title+"\n# Generated by PantheraHive BOS\n\nprint(title+\" loaded\")\n"); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\npython3 -m venv .venv\nsource .venv/bin/activate\npip install -r requirements.txt\n\`\`\`\n\n## Run\n\`\`\`bash\npython main.py\n\`\`\`\n"); zip.file(folder+".gitignore",".venv/\n__pycache__/\n*.pyc\n.env\n.DS_Store\n"); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^\`\`\`[\w]*\n?/m,"").replace(/\n?\`\`\`$/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)+"\n"; zip.file(folder+"package.json",pkgJson); var fallback="const express=require(\"express\");\nconst app=express();\napp.use(express.json());\n\napp.get(\"/\",(req,res)=>{\n res.json({message:\""+title+" API\"});\n});\n\nconst PORT=process.env.PORT||3000;\napp.listen(PORT,()=>console.log(\"Server on port \"+PORT));\n"; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000\n"); zip.file(folder+".gitignore","node_modules/\n.env\n.DS_Store\n"); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Setup\n\`\`\`bash\nnpm install\n\`\`\`\n\n## Run\n\`\`\`bash\nnpm run dev\n\`\`\`\n"); } /* --- 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:"\n\n\n\n\n"+title+"\n\n\n\n"+code+"\n\n\n\n"; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */\n*{margin:0;padding:0;box-sizing:border-box}\nbody{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e}\n"); zip.file(folder+"script.js","/* "+title+" — scripts */\n"); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\n## Open\nDouble-click \`index.html\` in your browser.\n\nOr serve locally:\n\`\`\`bash\nnpx serve .\n# or\npython3 -m http.server 3000\n\`\`\`\n"); zip.file(folder+".gitignore",".DS_Store\nnode_modules/\n.env\n"); } /* ===== 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(/\n{2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+"\n\nGenerated by PantheraHive BOS.\n\nFiles:\n- "+app+".md (Markdown)\n- "+app+".html (styled HTML)\n"); } 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);}});}