Infographic Creator
Run ID: 69cb64e861b1021a29a889a92026-03-31Design
PantheraHive BOS
BOS Dashboard

This document outlines the comprehensive design requirements for creating professional, engaging, and effective infographics. These specifications serve as a foundational guide for the "Infographic Creator" workflow, ensuring high-quality visual communication that is both informative and aesthetically pleasing.


Infographic Design Requirements

1. Design Specifications

To ensure versatility and impact, the infographic design will adhere to a flexible yet structured approach, suitable for a wide range of topics and data types.

1.1. Infographic Type & Purpose

The framework will support a Hybrid Data-Driven Narrative Infographic. This type combines elements of statistical, process, comparison, and timeline infographics, allowing for rich storytelling through diverse data visualization.

  • Primary Goal: To simplify complex information, present data clearly, and guide the audience through a compelling narrative.
  • Adaptability: The design will be modular, allowing for sections to be interchanged or customized based on the specific content (e.g., more statistics, fewer process steps, or vice-versa).

1.2. Dimensions & Aspect Ratios

Infographics are primarily consumed digitally, so optimal dimensions for web and social media are prioritized.

  • Standard Vertical (Web/Print):

* Width: 800px – 1200px (common for web embedding, ensuring readability without excessive scrolling on wider screens).

* Height: Variable, typically 2000px – 5000px, depending on content length.

* Print: Adaptable to A3/A4 portrait, ensuring vector scalability.

  • Social Media Optimized (Square/Landscape for specific platforms):

Square: 1080px x 1080px (for Instagram, Facebook feeds). This would be a summary or excerpt* of a larger infographic.

* Landscape: 1200px x 628px (for Twitter, LinkedIn link previews). Also for summaries.

  • Resolution: 72 DPI for web, 300 DPI for print-ready outputs.

1.3. Information Hierarchy & Flow

A clear visual hierarchy is paramount for guiding the viewer's eye and ensuring comprehension.

  • Top-to-Bottom Readability: Logical progression from general to specific, or problem to solution.
  • Chunking Information: Content will be broken down into distinct, digestible sections or "chunks" to prevent cognitive overload.
  • Visual Weight: Strategic use of size, color, and placement to emphasize key data points and headings.
  • Directional Cues: Use of arrows, lines, and connected elements to illustrate relationships and guide flow.

1.4. Visual Style & Aesthetics

The aesthetic will be modern, clean, and professional, ensuring broad appeal and timelessness.

  • Minimalist Approach: Avoid clutter; focus on essential information and visuals.
  • Flat/Semi-Flat Design: Modern, clean lines, and subtle shadows for depth without being distracting.
  • Balanced Layout: Even distribution of text, visuals, and white space.
  • Consistency: Uniformity in typography, iconography, color usage, and spacing throughout the infographic.

1.5. Key Components

Every infographic will include the following structural elements:

  • Title: Clear, concise, and engaging, summarizing the infographic's main topic. Prominently displayed at the top.
  • Introduction/Lead-in: A brief paragraph (2-3 sentences) setting the context and hook.
  • Main Content Sections:

* Data Visualizations: Charts (bar, line, pie, donut), graphs, statistical callouts (large numbers with context).

* Process Flows/Timelines: Step-by-step sequences, historical progressions.

* Comparison/Versus: Side-by-side analysis, pros/cons.

* List/Bullet Points: Key takeaways, tips, facts.

* Maps: Geographic data representation (if applicable).

  • Conclusion/Key Takeaways: Summarizes the main message or provides actionable insights.
  • Call to Action (CTA): A clear prompt for the viewer (e.g., "Learn More," "Download Report," "Visit Website").
  • Sources: Credible data sources cited clearly at the bottom.
  • Branding/Logo: Subtle placement of the organization's logo.

1.6. Typography

Readability and clarity are primary concerns.

  • Headings (H1, H2, H3): A strong, clean sans-serif font (e.g., Montserrat, Lato, Open Sans, Poppins) for impact and modern appeal. Use varying weights (bold, semi-bold) for hierarchy.
  • Body Text: A highly legible sans-serif font (e.g., Open Sans, Lato, Roboto) with appropriate line height and letter spacing for comfortable reading.
  • Data Labels/Annotations: A slightly smaller, clear sans-serif font, consistent with body text but distinct enough.
  • Font Pairing: Limit to 2-3 complementary fonts to maintain consistency and visual harmony.

1.7. Iconography

Icons will enhance visual understanding and break up text.

  • Style: Flat, outline, or duotone icons that align with the overall visual aesthetic.
  • Consistency: All icons within a single infographic must adhere to the same style, line weight, and color scheme.
  • Purpose: To represent concepts, categorize information, or highlight key points quickly.

1.8. Imagery & Illustrations

While infographics are data-heavy, judicious use of imagery can enhance engagement.

  • Purpose: To illustrate complex concepts, add emotional resonance, or provide visual metaphors.
  • Style: Consistent with icons and overall design (e.g., flat illustrations, vector art). High-quality stock photography can be used if it seamlessly integrates with the visual style.
  • Moderation: Use sparingly to avoid distracting from the data.

2. Wireframe Descriptions

The wireframe design focuses on a modular, vertical layout, allowing for flexible arrangement of content blocks to create diverse infographic narratives.

2.1. Overall Structure (Vertical Flow)

The infographic will follow a standard top-to-bottom reading path, divided into distinct, self-contained sections.

  • Header Section (Top):

* Element 1.1: Main Title Area: Prominent, large font for the infographic title.

* Element 1.2: Introduction/Subtitle: Brief introductory paragraph or a compelling subtitle.

* Element 1.3: Optional Hero Visual: A strong, representative image or icon cluster to immediately grab attention.

  • Main Content Blocks (Mid-Section - Repeatable & Customizable):

* Block Type A: Single Statistic Callout:

* Layout: Large number/percentage centrally placed, with a concise descriptive label below. Accompanied by a relevant icon.

* Purpose: Highlight a key, impactful data point.

* Block Type B: Data Visualization (Chart/Graph):

* Layout: Chart (bar, line, pie, etc.) with clear axes/legends. A concise heading and a brief explanatory paragraph.

* Purpose: Illustrate trends, comparisons, or distributions.

* Block Type C: Process Flow/Timeline:

* Layout: A series of connected steps or dates, each with an icon, short heading, and brief description. Uses directional lines/arrows.

* Purpose: Explain sequences, steps, or historical progression.

* Block Type D: Comparison/Versus:

* Layout: Two distinct columns or sections side-by-side, each with a heading, icon, and bulleted points or short descriptions.

* Purpose: Contrast two ideas, products, or states.

* Block Type E: List/Key Takeaways:

* Layout: A numbered or bulleted list with a strong heading, each item featuring a short phrase or sentence, possibly with a small icon.

* Purpose: Summarize key points, tips, or facts.

* Block Type F: Quote/Testimonial:

* Layout: Prominent quote in large, italicized text, with attribution below.

* Purpose: Add credibility or emphasize a human element.

  • Conclusion Section (Bottom):

* Element 3.1: Summary/Key Learning: A concise paragraph summarizing the infographic's main message or offering final insights.

* Element 3.2: Call to Action (CTA): A distinct button or text link, clearly stating the desired action.

* Element 3.3: Sources & Footer: Smaller text listing data sources, company logo, and copyright information.

2.2. Layout Principles

  • Grid-Based: A flexible grid system (e.g., 12-column) will ensure alignment and organization.
  • Modular: Each content block is independent and can be rearranged or replaced.
  • White Space: Ample white space around elements to reduce clutter and improve readability.
  • Visual Separators: Subtle lines, color blocks, or negative space to clearly delineate sections.

3. Color Palettes

Color plays a crucial role in conveying mood, guiding attention, and differentiating data. Three distinct professional palettes are proposed, offering variety while maintaining clarity and accessibility.

3.1. Palette 1: Professional & Trustworthy (Corporate Focus)

  • Concept: Reliable, authoritative, calm, and sophisticated. Ideal for business, finance, and technology topics.
  • Primary Colors (Dominant):

* Deep Teal: #005C6F (Primary brand color, strong accent)

* Navy Blue: #1A2F4B (Backgrounds, primary text, foundational elements)

  • Secondary/Accent Colors (Data & Highlights):

* Light Blue: #5DA2C3 (Secondary data points, lighter accents)

* Muted Orange: #F0A868 (Contrast, call-to-action, key highlights)

* Soft Green: #8BBF9F (Positive indicators, complementary data)

  • Neutral Colors (Backgrounds, Text):

* Off-White: #F8F8F8 (Main background, clean base)

* Medium Gray: #6C757D (Sub-text, secondary information)

* Dark Gray: #343A40 (Body text, detailed labels)

3.2. Palette 2: Vibrant & Engaging (Modern & Dynamic)

  • Concept: Energetic, innovative, approachable, and visually stimulating. Great for marketing, education, and creative industries.
  • Primary Colors (Dominant):

* Bright Azure: #007BFF (Primary brand color, strong accent)

* Dark Slate Gray: #343A40 (Primary text, structural elements)

  • Secondary/Accent Colors (Data & Highlights):

* Lime Green: #28A745 (Positive data, growth, emphasis)

* Sunny Yellow: #FFC107 (Warning, attention, complementary data)

* Coral Pink: #FD7E14 (Key highlights, call-to-action)

* Lavender: #6F42C1 (Additional data series, soft contrast)

  • Neutral Colors (Backgrounds, Text):

* Clean White: #FFFFFF (Main background, crisp base)

* Light Gray: #E9ECEF (Section dividers, subtle backgrounds)

* Charcoal: #212529 (Body text, strong contrasts)

3.3. Palette 3: Minimalist & Modern (Clean & Sophisticated)

  • Concept: Elegant, understated, and highly readable with a focus on negative space. Suitable for luxury, art, and high-tech topics.
  • Primary Colors (Dominant):

* Charcoal Gray: #2C3E50 (Primary text, strong lines, foundational elements)

* Soft Blue-Gray: #607D8B (Secondary text, subtle accents)

  • Secondary/Accent Colors (Data & Highlights):

* Muted Gold: #B8860B (Key highlights, premium accent)

* Dusty Rose: #C79B9B (Complementary data, soft contrast)

* Forest Green: #4CAF50 (Positive indicators, subtle data points)

  • Neutral Colors (Backgrounds, Text):

* Warm Off-White: #FDFDFD (Main background, inviting base)

* Light Gray: #E0E0E0 (Section breaks, subtle textures)

* Dark Gray: #495057 (Body text)

3.4. Color Usage & Accessibility

  • Contrast: Ensure sufficient contrast between text and background colors (WCAG 2.1 AA compliance) for accessibility.
  • Semantic Use: Use colors consistently to represent specific data types or sentiments (e.g., green for positive, red for negative, blue for neutral).
  • Limited Palette per Infographic: While multiple palettes are provided, each infographic should ideally stick to one primary palette with its designated accents to maintain coherence.
  • Data Differentiation: Use distinct, easily discernible colors for different data series within charts to avoid confusion.

4. UX Recommendations

User Experience (UX) is critical for ensuring the infographic effectively communicates its message and engages the audience.

4

gemini Output

This document outlines the detailed design specifications for the infographics generated by the "Infographic Creator" workflow. These specifications will guide the visual design, layout, and user experience of the final infographic output, ensuring it is professional, clear, engaging, and effective in communicating information.


Design Specifications for Infographic Output

1. Core Design Principles

The generated infographics will adhere to the following fundamental design principles:

  • Clarity & Readability: Information must be easily digestible and understood at a glance. Visuals should enhance, not obscure, the message.
  • Visual Hierarchy: Key information, headings, and calls to action will be visually prominent, guiding the viewer's eye through the content logically.
  • Consistency: A uniform style for fonts, icons, colors, and data visualization will be maintained throughout each infographic to ensure a cohesive and professional appearance.
  • Engagement: Designs will leverage compelling visuals, appropriate imagery, and strategic use of color to capture and maintain viewer interest.
  • Brand Alignment (Optional): Where user input provides branding guidelines (e.g., logos, specific brand colors), the infographic will integrate these elements seamlessly.

2. Infographic Structure & Layout Guidelines

All infographics will include standard components, with their arrangement varying based on the selected layout type.

  • Standard Components:

* Title: Clear, concise, and prominent, summarizing the infographic's main topic.

* Introduction/Hook: A brief paragraph or set of bullet points to set the context and grab attention.

* Main Sections: The core content, broken down into logical, digestible segments with distinct headings.

* Conclusion/Key Takeaways: A summary of the most important points or a final message.

* Call to Action (CTA): If applicable, a clear instruction or prompt for the viewer (e.g., "Learn More," "Visit Website").

* Sources & Credits: Clear attribution for all data, statistics, and any third-party content used.

* Branding/Logo: Discreet but visible placement for the creator's or client's logo.

Wireframe Descriptions (Common Infographic Layouts)

The creator will support various layout types to best suit the content. Below are descriptions for common templates:

A. Vertical/List Infographic

  • Purpose: Ideal for sequential information, step-by-step guides, lists, or a series of facts.
  • Description: Content flows vertically, often using a single column or clearly segmented sections. Each point is typically numbered or introduced with an icon, followed by a brief text explanation. Visual separators (lines, background color shifts) clearly delineate sections.
  • Key Elements:

* Large, bold title at the top.

* Numbered points or distinct icon-led sections.

* Short, punchy text blocks for each point.

* Consistent use of icons to represent each step or item.

* Progress bars or connecting lines to emphasize flow.

* Clear conclusion/CTA at the bottom.

B. Statistical/Data-Driven Infographic

  • Purpose: Best for presenting complex data, statistics, and numerical insights in an engaging way.
  • Description: Features a central focus on charts, graphs, and large statistical callouts. Supporting text provides context and analysis for the data visualizations. Layout often uses a grid-like structure to organize multiple data points.
  • Key Elements:

* Prominent title often highlighting a key statistic.

* Large, attention-grabbing statistical facts/figures ("Callout Numbers").

* Variety of chart types: bar charts (for comparison), pie charts (for proportions), line graphs (for trends), area charts, pictograms.

* Clear labels and legends for all data visualizations.

* Concise explanatory text accompanying each chart.

* Sources prominently displayed.

C. Process/Timeline Infographic

  • Purpose: Excellent for illustrating a sequence of events, a historical timeline, or steps in a process.
  • Description: Employs a linear or winding path (horizontal or vertical) to guide the viewer through stages. Each stage is marked with a distinct point (e.g., circle, icon, date) and an accompanying description. Arrows or connecting lines indicate progression.
  • Key Elements:

* Clear title indicating the process or timeline.

* Distinct milestones or steps, often with a date or number.

* Arrows or visual connectors showing direction and flow.

* Icons or small illustrations representing each stage.

* Brief, descriptive text for each step.

* Consistent spacing and alignment between stages.

D. Comparison Infographic

  • Purpose: Designed to highlight differences and similarities between two or more items, concepts, or entities.
  • Description: Typically uses a divided layout (e.g., two vertical columns separated by a central line or "VS" element). Information for each entity is presented in parallel, allowing for easy side-by-side comparison.
  • Key Elements:

* Title clearly stating the comparison (e.g., "A vs. B").

* Two distinct main sections, one for each item being compared.

* Consistent categories or metrics used for comparison across both sections.

* Use of icons, short bulleted lists, and small charts to visualize comparative data.

* Clear "pros and cons" or "features" lists where applicable.

* A concluding section summarizing key differences/similarities or offering a recommendation.

3. Visual Elements & Data Representation

3.1. Typography

  • Primary Heading Font: A strong, modern sans-serif font (e.g., Montserrat, Open Sans Bold, Lato Black) for main titles and key section headers. Ensures high impact and readability.
  • Secondary Heading Font: A slightly lighter weight or different sans-serif font (e.g., Open Sans Semibold, Lato Bold) for sub-headings and data labels. Provides visual distinction while maintaining consistency.
  • Body Text Font: A highly legible sans-serif font (e.g., Open Sans, Lato Regular, Roboto) for all descriptive text. Prioritizes readability over embellishment. Font size will be optimized for digital viewing, with sufficient line height.
  • Hierarchy: Font sizes will follow a clear hierarchy: Title > Main Heading > Sub-heading > Body Text > Captions/Sources.

3.2. Iconography

  • Style: Flat or line-art icons will be prioritized for a clean, modern aesthetic. Icons will be simple, recognizable, and consistent in style throughout the infographic.
  • Purpose: Used as visual shorthand to represent concepts, break up text, and add visual interest without distracting from the core message.
  • Consistency: All icons within a single infographic will adhere to the same stroke weight, fill style, and level of detail.

3.3. Imagery & Illustrations

  • Style: Vector illustrations are preferred for scalability and consistency. Photographic elements may be used if high-resolution and relevant to the content, maintaining a cohesive visual tone.
  • Relevance: All images and illustrations will directly support the content and enhance understanding, avoiding purely decorative elements that add clutter.
  • Quality: High-resolution, crisp visuals are mandatory.

3.4. Charts & Graphs

  • Clarity: All charts and graphs will be designed for maximum clarity, with clear labels, legends, and minimal visual noise (high data-ink ratio).
  • Appropriate Type: The most suitable chart type will be selected for the data being presented (e.g., bar charts for comparing discrete categories, line graphs for trends over time, pie charts for parts of a whole).
  • Minimalism: Grids will be subtle, and colors will be used strategically to highlight key data points rather than overwhelm.
  • Source Citation: All data points presented visually will be clearly sourced.

4. Color Palettes

Color palettes are crucial for conveying tone, establishing hierarchy, and ensuring visual appeal. The creator will offer several professional palettes, and where specified by user input, can integrate brand-specific colors.

General Principles for Color Usage:

  • Brand Colors First: If provided, primary and secondary brand colors will form the core of the palette.
  • Contrast: Sufficient contrast between text and background, and between different data elements, is essential for readability and accessibility.
  • Emotional Impact: Colors will be selected to align with the desired tone of the infographic (e.g., blues for trust, greens for growth, reds for urgency).
  • Limited Palette: Each infographic will use a primary palette of 3-5 core colors (including neutrals) to maintain cohesion.

Example Color Palettes:

Palette 1: Professional & Modern

  • Primary Accent: #007BFF (Bright Blue - Trust, Innovation)
  • Secondary Accent: #28A745 (Vibrant Green - Growth, Success)
  • Neutral Background: #F8F9FA (Light Gray - Clean, Minimal)
  • Dark Text/Primary: #343A40 (Dark Charcoal - Strong Readability)
  • Light Text/Secondary: #6C757D (Medium Gray - Subtlety)
  • Feel: Corporate, clean, reliable, forward-thinking.

Palette 2: Vibrant & Engaging

  • Primary Accent: #FFC107 (Warm Yellow - Energy, Optimism)
  • Secondary Accent: #DC3545 (Rich Red - Attention, Urgency)
  • Neutral Background: #FFFFFF (Pure White - Crisp, Open)
  • Dark Text/Primary: #212529 (Deep Black - Bold Contrast)
  • Light Text/Secondary: #6C757D (Medium Gray - Balance)
  • Feel: Dynamic, creative, attention-grabbing, youthful.

Palette 3: Calm & Trustworthy

  • Primary Accent: #17A2B8 (Teal - Serenity, Clarity)
  • Secondary Accent: #6F42C1 (Deep Purple - Wisdom, Quality)
  • Neutral Background: #E9ECEF (Soft Gray - Soothing)
  • Dark Text/Primary: #495057 (Dark Gray - Gentle Readability)
  • Light Text/Secondary: #ADB5BD (Light Gray - Soft Touch)
  • Feel: Sophisticated, peaceful, educational, reliable.

5. User Experience (UX) Recommendations (for the Infographic Output)

The generated infographic must be designed not just to look good, but to be highly effective for its audience.

  • Scannability:

* Employ ample white space around elements to prevent visual clutter.

* Use clear, concise headings and subheadings.

gemini Output

Infographic Creator: Final Design Asset Specifications

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Infographic Creator" platform. This deliverable serves as the foundational design blueprint for development, ensuring a professional, intuitive, and visually appealing experience for our users.


1. Overall Design Philosophy & Goals

Our primary goal for the Infographic Creator is to empower users to effortlessly create professional, data-driven visual content. The design philosophy centers on:

  • Clarity & Simplicity: A clean, uncluttered interface that prioritizes content and ease of use.
  • Intuitive Workflow: A logical, step-by-step process that guides users from concept to creation and export.
  • Professional Aesthetic: A modern, sophisticated visual language that inspires trust and creativity.
  • Flexibility & Customization: Providing powerful tools for personalization without overwhelming the user.
  • Performance & Responsiveness: Ensuring a smooth, fast experience across various devices and screen sizes.

2. Design Specifications

2.1. Layout & Grid System

  • Responsive Grid: Implement a flexible 12-column grid system (e.g., Bootstrap 5, Tailwind CSS) to ensure adaptability across desktops, tablets, and mobile devices.
  • Fixed Header & Sidebar (Desktop): The main editor interface will feature a fixed header for global actions (e.g., Save, Preview, Export) and a collapsible/expandable left sidebar for tools and asset libraries (e.g., Templates, Elements, Text, Data).
  • Dynamic Content Area: The central canvas area will be dynamic, allowing users to zoom, pan, and adjust the infographic dimensions.
  • Contextual Panels: Right-hand side panels will appear contextually based on selected elements (e.g., text formatting, image adjustments, chart data properties).
  • Spacing & Padding: Consistent use of a 8-pixel baseline grid for spacing (8px, 16px, 24px, 32px, etc.) to maintain visual harmony and readability.

2.2. Typography

  • Primary Font (UI & Headings):

* Font Family: Montserrat (Google Fonts) or Inter (Google Fonts)

* Purpose: Clean, modern, and highly legible for interface elements, main headings, and calls to action.

* Weights: Light (300), Regular (400), Medium (500), Semi-Bold (600), Bold (700)

  • Secondary Font (Body Text & Details):

* Font Family: Open Sans (Google Fonts) or Lato (Google Fonts)

* Purpose: Excellent readability for longer blocks of text, descriptions, and detailed information within the UI.

* Weights: Regular (400), Semi-Bold (600)

  • Infographic Content Fonts (User Selectable):

* Provide a curated library of professional, versatile fonts for users to apply within their infographics, categorized by style (e.g., Serif, Sans-serif, Display, Script).

  • Sizing Hierarchy:

* H1 (Page Titles): 36px - 48px

* H2 (Section Titles): 28px - 32px

* H3 (Subheadings): 20px - 24px

* Body Text: 16px - 18px

* Small Text/Captions: 12px - 14px

* Button/Label Text: 14px - 16px (Semi-Bold)

2.3. Iconography

  • Style: Line-based, minimalist, and consistent. Icons should be easily recognizable and scalable.
  • Library: Utilize a well-maintained icon library (e.g., Font Awesome Pro, Material Icons, Feather Icons) for common UI actions and elements.
  • Custom Icons: Design custom icons where specific functionality requires unique visual representation, adhering to the established style guide.
  • Color: Default to a neutral dark grey for most icons, with accent colors used for active states or critical actions.

2.4. Imagery & Illustrations

  • UI Illustrations: Use subtle, modern, and friendly illustrations for onboarding, empty states, and celebratory moments. These should align with the brand's overall aesthetic.
  • Stock Photography: Integrate with high-quality, royalty-free stock photo libraries (e.g., Unsplash, Pexels) for user access. Emphasize diverse, relevant, and professional imagery.
  • Data Visualization Elements:

* Charts & Graphs: Clean, customizable, and easily editable chart types (bar, line, pie, donut, area, scatter, radar, funnel, progress bars). Default styles should be modern and legible.

* Infographics Elements: A library of shapes, arrows, lines, and decorative elements that are easily resizable and recolorable.

* Icons for Data: A collection of small, illustrative icons suitable for depicting concepts in infographics (e.g., people, money, industry, environment).

2.5. Interactive Elements

  • Buttons:

* Primary: Solid background (accent color), white text. Rounded corners (4px-6px radius).

* Secondary: Outline (primary color), primary text.

* Tertiary/Ghost: Text-only buttons for less prominent actions.

* Hover States: Subtle background color change or slight shadow lift.

  • Sliders & Toggles: Intuitive and visually clear, indicating their current state.
  • Dropdowns & Select Menus: Clean and accessible, showing selected options clearly.
  • Input Fields: Clear labels, subtle borders, and distinct focus states.
  • Tooltips & Popovers: Provide helpful context and guidance without obscuring content.
  • Drag-and-Drop: Visual cues (e.g., ghosting, highlight borders) to indicate draggable elements and drop zones.

2.6. Responsiveness

  • Desktop First Approach: Design primarily for desktop, then adapt and simplify for smaller screens.
  • Editor Simplification: On smaller screens (tablets, mobile), the editor will prioritize the canvas. Toolbars and panels will become collapsible drawers or bottom sheets, accessible via toggle buttons.
  • Preview Mode: Dedicated responsive preview modes for different device types within the editor.

3. Wireframe Descriptions (Conceptual)

3.1. Dashboard / Home Screen

  • Layout: Full-width hero section at the top, followed by a grid layout for "My Infographics" and "Templates."
  • Elements:

* Hero Section: "Create New Infographic" CTA, search bar for templates/projects, possibly a brief "How-to" video link.

* My Infographics: Grid of recently edited or starred infographics, showing thumbnails, titles, and last modified dates. Actions like "Edit," "Duplicate," "Delete," "Share."

* Template Categories: Curated categories (e.g., Business, Marketing, Education, Health) with scrollable rows of featured templates.

* Filter/Sort Options: For "My Infographics" and "Templates" sections.

  • Goal: Provide quick access to existing projects and inspire new creations through templates.

3.2. Template Selection Screen

  • Layout: Left-hand sidebar for categories and filters, central grid display for templates.
  • Elements:

* Categories Sidebar: Tree-view or accordion menu for template categories (e.g., "All," "Business," "Education," "Social Media").

* Filters: Options to filter by color, style, complexity, or keyword search.

* Template Grid: Large, high-quality thumbnails of templates. Hover state reveals "Preview" and "Use Template" buttons.

* Pagination/Infinite Scroll: For browsing a large number of templates.

  • Goal: Allow users to easily discover and select a suitable starting point for their infographic.

3.3. Infographic Editor Interface

  • Layout:

* Top Bar: "Brand Logo," "Infographic Title (editable)," "Save," "Undo/Redo," "Preview," "Share," "Export," "Help."

* Left Sidebar (Collapsible): Tabs/sections for:

* Templates: Quick access to template library.

* Elements: Shapes, lines, icons, illustrations, photos, videos.

* Text: Add heading, subheading, body text. Font library.

* Data: Chart types, table input, data import.

* Uploads: User's uploaded images, logos.

* Brand Kit: Saved brand colors, fonts, logos.

* Central Canvas: The main infographic design area. Zoom controls, pan tool, rulers, grid overlay toggle.

* Right Sidebar (Contextual): Appears when an element is selected on the canvas. Properties panel for:

* Text: Font family, size, color, weight, alignment, line height, letter spacing.

* Shapes/Elements: Fill color, stroke, opacity, shadows, borders, rotation, position (X, Y), size (W, H).

* Images: Crop, filters, transparency, layer order.

* Charts: Data input table, chart type, colors, labels, axis settings.

* Page Settings: Canvas size, background color/image.

  • Goal: Provide a powerful, intuitive environment for users to design and customize their infographics.

3.4. Preview & Export Screen

  • Layout: Full-screen preview of the infographic, with export options clearly presented.
  • Elements:

* Infographic Preview: High-resolution display of the created infographic.

* Responsive Previews: Buttons/toggles to view the infographic's appearance on different devices (desktop, tablet, mobile).

* Export Options Panel:

* File Format: PNG, JPG, PDF (standard/print quality), SVG (for vector elements).

* Quality/Resolution: Low, Medium, High, Custom.

* Page Size: Original, A4, Letter, Custom dimensions.

* Download Button: Prominent CTA.

* Share Options: Links for direct sharing to social media, email, or embed code.

  • Goal: Allow users to review their creation thoroughly and export it in their desired format and quality.

4. Color Palette

The proposed color palette focuses on a professional, modern, and inviting aesthetic for the Infographic Creator's user interface. Users will have full control over the colors within their actual infographics.

4.1. Primary & Brand Colors

  • Primary Accent: #3A86FF (Vibrant Blue) - Used for primary CTAs, active states, key highlights.
  • Secondary Accent: #FF006E (Dynamic Pink) - Used for secondary CTAs, warnings, or complementary highlights.

4.2. Neutral & Text Colors

  • Dark Text/Heading: #212529 (Charcoal Black) - For primary text, headings, and strong contrast.
  • Body Text: #495057 (Dark Grey) - For general body text, descriptions.
  • Subtle Text/Placeholder: #6C757D (Medium Grey) - For secondary information, placeholders, disabled states.
  • Light Background: #F8F9FA (Off-White) - For main content areas, cards, panels.
  • Border/Divider: #DEE2E6 (Light Grey) - For separators, borders of input fields.
  • Canvas Background: #FFFFFF (Pure White) - The default background for the infographic canvas.

4.3. Semantic Colors

  • Success: #28A745 (Green) - For successful actions, positive feedback.
  • Warning: #FFC107 (Yellow/Orange) - For warnings, attention required.
  • Error: #DC3545 (Red) - For error messages, destructive actions.
  • Info: #17A2B8 (Cyan) - For informational messages.

4.4. UI Color Usage Map

  • Headers & Navigation: Dark text on off-white or light grey background.
  • Sidebars: Light grey background, dark text, subtle borders.
  • Buttons: Primary Accent for main actions, Secondary Accent for alerts/highlights.
  • Icons: Dark Grey (default), Primary Accent (active/hover).
  • Input Fields: Off-white background, Dark Grey text, Light Grey border, Primary Accent on focus.
  • Tooltips/Feedback: Subtle background (e.g., Light Grey), Body Text.

5. UX Recommendations

5.1. Onboarding & First-Time User Experience (FTUE)

  • Interactive Tutorial: A brief, guided tour highlighting key features upon first login.
  • Empty States: Provide clear instructions and "Create Your First Infographic" CTAs in empty sections (e.g., "My Infographics" if no projects exist).
  • Template Starter: Encourage new users to start with a template to reduce cognitive load and provide immediate success.

5.2. Intuitive Workflow &

infographic_creator.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);}});}