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

Step 1 of 3: Infographic Creator - Research Design Requirements

This document outlines the comprehensive design requirements for the "Infographic Creator" tool, serving as the foundational blueprint for its development. It encompasses detailed design specifications, proposed wireframe descriptions, suggested color palettes, and critical user experience (UX) recommendations to ensure a professional, intuitive, and highly effective tool.


1. Detailed Design Specifications

The Infographic Creator will empower users to design professional, data-rich, and visually appealing infographics with ease, even without prior design experience.

1.1. Core Purpose & Target Audience:

  • Purpose: To provide a robust, user-friendly platform for creating custom infographics that effectively communicate complex information.
  • Target Audience: Marketers, educators, content creators, small business owners, consultants, and individuals who need to present data or processes visually without relying on professional designers.

1.2. Key Features & Functionality:

  • Extensive Template Library:

* Pre-designed, customizable templates categorized by industry, purpose (e.g., timeline, process, comparison, statistics, resume), and style.

* Ability to save custom designs as new templates.

  • Intuitive Drag-and-Drop Editor:

* Canvas-based editor with real-time preview.

* Easy manipulation of all elements (move, resize, rotate, group, layer).

  • Rich Asset Libraries:

* Icons: Vast library of scalable vector icons (SVG) categorized for easy search.

* Images: Stock photo library and ability to upload custom images (JPG, PNG, SVG).

* Shapes: Basic geometric shapes and decorative elements.

  • Advanced Text Editor:

* Multiple font choices (web-safe and custom fonts).

* Text styling options: bold, italic, underline, alignment, line height, letter spacing.

* Text effects (e.g., shadows, gradients – optional, advanced feature).

* Text boxes with auto-resizing and wrapping.

  • Data Visualization Tools (Charts & Graphs):

* Support for common chart types: Bar, Line, Pie, Donut, Area, Scatter.

* Easy data input via spreadsheet-like interface or CSV import.

* Customizable chart colors, labels, axes, and legends.

* Dynamic updating of charts based on data changes.

  • Color & Branding Customization:

* Global color palette management for consistent branding.

* Color picker with hex, RGB, and HSL support.

* Ability to save custom brand color palettes.

* Upload custom brand logos and fonts (premium feature).

  • Export & Sharing Options:

* High-resolution export in various formats: PNG, JPG, PDF (print-ready), SVG.

* Option to optimize for web (smaller file size).

* Direct sharing to social media platforms (Facebook, Twitter, LinkedIn - optional).

* Embed code generation for websites/blogs.

  • Version History & Auto-Save:

* Automatic saving of project progress.

* Ability to revert to previous versions of a design.

  • Project Management:

* Dashboard for organizing and managing multiple infographic projects.

* Search and filtering capabilities for projects and templates.

1.3. Technical & Design Considerations:

  • Responsiveness: The editor interface must be fully responsive and optimized for various screen sizes (desktop, tablet). Infographic output will be fixed-size images.
  • Performance: The application must be fast and responsive, ensuring a smooth user experience even with complex designs.
  • Accessibility (A11y):

* High contrast ratios for text and UI elements.

* Keyboard navigation support for key features.

* Clear labeling and ARIA attributes for screen readers.

* Option to add alt text for images in the exported infographic.

  • Scalability: The platform should be built to handle a growing number of users, templates, and assets.
  • Security: Robust security measures for user data, uploaded assets, and project files.

2. Wireframe Descriptions

The following outlines the key screens and their primary functionalities within the Infographic Creator.

2.1. Dashboard / My Projects Screen:

  • Purpose: The entry point for users to manage their projects, access templates, and view recent activity.
  • Key Elements:

* Header: Logo, Search bar, "Create New Infographic" button, User profile/settings.

* Navigation Sidebar (Left): "My Projects," "Templates," "Brand Kit," "Help."

* Main Content Area:

* "Recent Projects" section (thumbnail, title, last modified date).

* "My Projects" list/grid view with filtering and sorting options.

* CTA for "Start from Scratch" or "Browse Templates."

  • User Flow: User logs in -> lands on Dashboard -> selects an existing project to edit or starts a new one.

2.2. Template Selection Screen:

  • Purpose: Allows users to browse, preview, and select a pre-designed template as a starting point.
  • Key Elements:

* Header: Similar to Dashboard, with "Back to Projects" option.

* Template Categories (Left Sidebar/Top Tabs): Timelines, Processes, Statistics, Comparisons, Business, Education, etc.

* Search Bar: To find specific templates by keyword.

* Template Grid/List: Thumbnails of templates with titles and maybe a brief description.

* Preview Modal: Clicking a template opens a larger preview with "Use This Template" and "Close" options.

  • User Flow: From Dashboard, clicks "Browse Templates" -> browses categories/searches -> previews a template -> clicks "Use This Template" -> enters Editor.

2.3. Infographic Editor Interface:

  • Purpose: The core workspace for designing and customizing infographics.
  • Key Elements:

* Top Bar: Logo, Project Title (editable), Undo/Redo, Zoom controls, "Save," "Preview," "Share," "Export" buttons.

* Left Sidebar (Asset Panel):

* Tabs/Sections: "Templates," "Text," "Images," "Icons," "Shapes," "Charts," "Background," "Brand Kit."

* Search bar within each section.

* Preview/thumbnail display of available assets.

* Drag-and-drop functionality for adding elements to the canvas.

* Canvas Area (Center):

* The main design area where the infographic is built.

* Rulers, grid lines, smart guides for alignment.

* Selectable, resizable, and draggable elements.

* Right Sidebar (Properties Panel):

* Contextual panel that changes based on the selected element.

* For Text: Font, size, color, bold/italic, alignment, line height, letter spacing.

* For Images/Icons: Resize, rotate, crop, opacity, filters, replace.

* For Shapes: Fill color, border color/thickness, corner radius.

* For Charts: Data input (spreadsheet view), chart type, colors, labels, axes.

* For Canvas: Canvas size, background color/image.

* Layers Panel (optional): To manage element stacking order.

  • User Flow: Selects a template/starts new -> drags elements from left sidebar onto canvas -> uses right sidebar to customize selected elements -> uses top bar for saving/exporting.

2.4. Data Input Modal/Panel (for Charts):

  • Purpose: Allows users to input and manage data for charts and graphs.
  • Key Elements:

* Spreadsheet-like Grid: Rows for categories, columns for data series.

* Import Data Button: For CSV/Excel files.

* Chart Type Selector: To change the chart type after data input.

* Labels/Axes Customization: Fields for axis titles, data labels, legend text.

* "Update Chart" / "Apply" Button: To refresh the chart on the canvas.

  • User Flow: Selects a chart on the canvas -> Right Sidebar opens data input panel -> user enters/imports data -> clicks "Update Chart."

2.5. Export / Share Modal:

  • Purpose: Provides options for saving the final infographic in various formats or sharing it.
  • Key Elements:

* Tabbed Interface: "Download" and "Share."

* Download Tab:

* File Format Selector: PNG, JPG, PDF, SVG.

* Resolution/Quality Selector: (e.g., Standard, High, Print-Ready).

* "Download" button.

* Share Tab:

* Social Media Share Buttons (with preview).

* Embed Code Generator (copy to clipboard).

* Link Sharing (copy to clipboard).

* "Publish" button (if applicable for a public gallery).

  • User Flow: Clicks "Export" or "Share" in the top bar -> selects desired options -> clicks "Download" or "Share."

3. Color Palettes

We propose a few distinct color palettes to offer variety and cater to different professional aesthetics. The tool should allow users to choose from these default palettes or create their own custom brand palettes.

3.1. Palette 1: "Professional Clarity"

  • Theme: Trustworthy, Corporate, Clean.
  • Primary: #0056B3 (Deep Blue) - Authority, Stability
  • Secondary: #4A4A4A (Charcoal Grey) - Sophistication, Neutrality
  • Accent 1: #28A745 (Vibrant Green) - Growth, Positive Emphasis
  • Accent 2: #F0AD4E (Warm Gold) - Highlight, Innovation
  • Neutral: #F8F9FA (Light Grey/Off-White) - Background, Whitespace
  • Text: #212529 (Dark Grey)

3.2. Palette 2: "Modern Dynamic"

  • Theme: Energetic, Contemporary, Engaging.
  • Primary: #6F42C1 (Deep Violet) - Creativity, Uniqueness
  • Secondary: #007BFF (Bright Blue) - Technology, Freshness
  • Accent 1: #FFC107 (Sunny Yellow) - Optimism, Attention
  • Accent 2: #DC3545 (Rich Red) - Urgency, Key Highlights
  • Neutral: #E9ECEF (Soft Grey)
  • Text: #343A40 (Dark Grey)

3.3. Palette 3: "Minimalist Elegance"

  • Theme: Clean, Sophisticated, Uncluttered.
  • Primary: #343A40 (Dark Charcoal) - Strong base, Seriousness
  • Secondary: #ADB5BD (Muted Grey) - Subtlety, Balance
  • Accent 1: #17A2B8 (Teal) - Calmness, Focus
  • Accent 2: #FD7E14 (Burnt Orange) - Warmth, Distinctiveness
  • Neutral: #FFFFFF (Pure White) - Dominant whitespace
  • Text: #212529 (Dark Grey)

Color Palette Recommendations:

  • Ensure sufficient contrast ratios for text and background elements to meet WCAG 2.1 accessibility guidelines (AA level minimum).
  • Provide a color picker with hex code input, RGB sliders, and a recent colors history.
  • Allow users to save and name custom color palettes for brand consistency.

4. UX Recommendations

User experience is paramount for an Infographic Creator, ensuring ease of use and satisfaction for users of all skill levels.

4.1. Intuitive & Consistent Interface:

  • Clear Information Hierarchy: Use visual cues (size, color, placement) to guide the user's eye to important elements.
  • Consistent Layout: Maintain predictable placement of navigation, tools, and panels across the application.
  • Standard UI Patterns: Utilize familiar UI elements (e.g., hamburger menus, tabbed interfaces, modal windows) to reduce cognitive load.

4.2. Streamlined Workflow & Efficiency:

  • Drag-and-Drop Excellence: Ensure a smooth and responsive drag-and-drop experience for all elements.
  • Real-time Feedback: Provide immediate visual feedback for user actions (e.g., element selection highlights, loading indicators, success messages).
  • Undo/Redo Functionality: Essential for iterative design and error correction.
  • Keyboard Shortcuts: Implement common shortcuts (Ctrl/Cmd+C/V/X/Z/Y, Delete) for power users.
  • Contextual Tools: Display relevant options in the properties panel or a mini-toolbar only when an element is selected.
  • Smart Guides & Alignment: Automatically display alignment guides when moving elements to help with precise placement.
  • Grouping/Ungrouping: Allow users to group multiple elements to move or resize them together.

4.3. Learnability & Onboarding:

  • Interactive Onboarding Tour: A brief, optional tour for first-time users highlighting key features.
  • Tooltips & Helper Text: Provide concise explanations for unfamiliar icons or complex features on hover.
  • Help Center/Knowledge Base: Easily accessible documentation, tutorials, and FAQs.
  • Template-First Approach: Encourage new users to start with templates to quickly achieve good results and learn the tool.

4.4. Visual Design & Aesthetics:

  • Clean & Uncluttered Workspace: Minimize visual distractions in the editor.
  • High-Quality Assets: Ensure all built-in icons, shapes, and stock images are professional and high-resolution.
  • Consistent Iconography: Use a unified style for all icons within the UI.
  • Whitespace Utilization: Leverage whitespace effectively to improve readability and reduce visual fatigue.

4.5. Error Prevention & Recovery:

  • Confirmation Dialogs: For destructive actions (e.g., deleting a project, resetting a template).
gemini Output

Infographic Design Specifications: Professional Output

This document outlines the detailed design specifications for your infographic, ensuring a professional, engaging, and informative visual deliverable. These specifications cover the overall structure, visual elements, content organization, and user experience best practices to maximize impact and readability.


1. Overall Design Specifications

Our goal is to create a visually compelling infographic that effectively communicates complex information in an easily digestible format. The design will prioritize clarity, aesthetic appeal, and strong data visualization.

  • Format: Typically a long-form, vertical layout, optimized for digital sharing and printing.
  • Content Flow: Logical, top-down narrative progression, guiding the viewer through the information.
  • Typography: A carefully selected combination of fonts for headings and body text to ensure readability and establish a professional tone.

* Headings: A strong, sans-serif font (e.g., Montserrat, Open Sans Bold) for impact and modern appeal.

* Body Text: A highly readable sans-serif font (e.g., Lato, Roboto, Noto Sans) for clarity and legibility at various sizes.

* Data Labels: A clear, concise font that complements the body text.

  • Visual Elements:

* Icons: Modern, flat, or line-art style icons will be used to represent concepts, break up text, and add visual interest.

* Illustrations: Custom or high-quality stock illustrations can be incorporated to enhance storytelling and brand identity.

* Data Visualizations: Appropriate chart types (bar charts, line graphs, pie charts, donut charts, area charts, progress bars, timelines, maps) will be selected based on the data to be presented, ensuring accuracy and ease of interpretation.

* Imagery: High-resolution, relevant images will be used sparingly to support key points or set a mood.

  • Layout Structure:

* Clear Sections: Distinct visual breaks between sections using background colors, dividing lines, or contrasting elements.

* Whitespace: Ample negative space will be utilized to prevent visual clutter and improve readability.

* Grid System: A consistent grid will be applied to ensure alignment, balance, and a professional appearance.

  • Branding Integration: Placeholder for client logo, brand colors, and specific brand guidelines will be incorporated (if provided).

2. Wireframe Descriptions (Standard Infographic Layout)

This wireframe describes a typical, flexible layout that can be adapted based on the specific content and data provided.

2.1. Header Section

  • Elements:

* [Client Logo]: Top left or top right corner, subtle but present.

* Main Title (H1): Large, bold, and impactful text summarizing the infographic's core topic. Centered or left-aligned.

* Subtitle/Introduction (H2/Body): A concise sentence or two providing context or a hook. Below the main title.

* Optional: A small, relevant hero icon or illustration.

  • Purpose: Immediately capture attention and clearly state the infographic's subject.

2.2. Introduction/Overview Section

  • Elements:

* Key Statistic/Problem Statement: A prominent, large number or a compelling opening statement with a supporting icon.

* Brief Paragraph: 2-3 sentences providing an overview or setting the stage for the detailed information to follow.

  • Purpose: Engage the reader and provide a high-level summary or a compelling reason to continue reading.

2.3. Main Content Section 1: Data Highlight / Key Trend

  • Elements:

* Section Title (H3): Clear and descriptive.

* Primary Data Visualization: E.g., a large bar chart, line graph, or pie chart illustrating a key trend or comparison.

* Key Callout/Annotation: Short, impactful text highlighting a significant data point within the visualization.

* Supporting Text (Body): 2-4 sentences explaining the data and its implications.

* Icon/Small Illustration: Relevant visual to break up text and reinforce the message.

  • Purpose: Present core data or a significant trend with visual support and clear explanation.

2.4. Main Content Section 2: Process / Timeline / Comparison

  • Elements:

* Section Title (H3): Clear and descriptive.

* Visual Flow Element:

* Process Flow: Numbered steps with short descriptions and icons, connected by arrows.

* Timeline: Dates/milestones with brief descriptions, laid out horizontally or vertically.

* Comparison: Two columns or side-by-side blocks with pros/cons, features, or contrasting data points, often using icons.

* Summary Statement (Body): A sentence or two summarizing the flow or comparison.

  • Purpose: Illustrate a sequence of events, a step-by-step process, or highlight differences/similarities.

2.5. Main Content Section 3: Detailed Insights / Solutions

  • Elements:

* Section Title (H3): Clear and descriptive.

* Bulleted/Numbered List: 3-5 key points, each with a small supporting icon and a concise explanation (1-2 sentences).

* Optional: A smaller data visualization (e.g., donut chart for proportions, progress bar for achievements) if relevant.

* Short Paragraph (Body): Connects the points or provides further context.

  • Purpose: Delve deeper into specific aspects, offer solutions, or present actionable insights.

2.6. Conclusion / Key Takeaways Section

  • Elements:

* Section Title (H3): E.g., "Key Takeaways," "What This Means," "In Summary."

* Summary Points (Body): 2-3 concise, high-level bullet points summarizing the most important conclusions.

* Optional: Call to Action (CTA): A clear, concise statement encouraging further action (e.g., "Learn More," "Visit Our Website," "Download the Full Report") with a subtle button-like graphic if for digital use.

  • Purpose: Reinforce the main message and provide a memorable closing.

2.7. Footer Section

  • Elements:

* Source(s): Clearly state data sources, typically in smaller, legible text.

* Website/Contact Information: Client's website, social media handles, or other contact details.

* Copyright/Disclaimer: Small text at the very bottom.

  • Purpose: Provide credibility, allow for further exploration, and protect intellectual property.

3. Color Palettes

We propose three distinct color palettes, each designed to evoke a different mood and professional aesthetic. The final choice will depend on your brand identity and the infographic's specific message.

Palette Option 1: Professional & Trustworthy

  • Mood: Reliable, authoritative, calm, corporate.
  • Primary Color (Dark Blue): #0F3F6D (For headings, key elements, main charts)
  • Secondary Color (Light Blue/Teal): #4A90E2 (For secondary data, accents, borders)
  • Accent Color (Subtle Green): #6CC78C (For highlights, positive indicators, small icons)
  • Neutral/Text Color (Dark Grey): #333333 (For body text, fine print)
  • Background Color (Light Grey): #F8F8F8 (For main background, section separators)
  • Usage Rationale: Blue hues are widely associated with trust and professionalism. The accent green adds a touch of vibrancy and can signify growth or positive outcomes without being overly dominant.

Palette Option 2: Vibrant & Engaging

  • Mood: Dynamic, modern, friendly, approachable.
  • Primary Color (Deep Teal): #00796B (For headings, main charts, strong accents)
  • Secondary Color (Warm Orange): #FF8C00 (For secondary data, highlights, calls to action)
  • Accent Color (Bright Yellow): #FFD700 (For small icons, extreme highlights, attention-grabbing elements)
  • Neutral/Text Color (Charcoal Grey): #4A4A4A (For body text, clarity)
  • Background Color (Off-White): #FFFFFF (Clean, crisp background)
  • Usage Rationale: This palette uses complementary colors (teal and orange) to create high contrast and visual energy. The bright yellow provides an additional pop, making the infographic feel lively and modern.

Palette Option 3: Modern & Minimalist

  • Mood: Sophisticated, clean, elegant, understated.
  • Primary Color (Charcoal Grey): #2C3E50 (For headings, main textual elements, outlines)
  • Secondary Color (Soft Grey): #BDC3C7 (For background elements, subtle dividers, secondary charts)
  • Accent Color (Deep Plum/Burgundy): #8E44AD (For key highlights, calls to action, important data points)
  • Neutral/Text Color (Dark Grey): #34495E (For body text, ensures readability)
  • Background Color (White): #FFFFFF (Pure, clean canvas)
  • Usage Rationale: This palette emphasizes clarity and elegance through a strong reliance on neutrals, with a single, sophisticated accent color to draw attention to crucial information. It offers a very clean and contemporary feel.

4. UX Recommendations for the Infographic

These recommendations focus on optimizing the user experience for anyone viewing your infographic, ensuring it is easy to understand, engaging, and impactful.

  • 1. Visual Hierarchy & Scannability:

* Clear Headings: Use distinct font sizes and weights for titles, section headings, and subheadings to guide the eye.

* Strategic Use of Whitespace: Ensure generous spacing around text blocks, images, and data visualizations to prevent a cluttered appearance and improve readability.

* Visual Grouping: Group related information visually using background shapes, borders, or proximity.

* Directional Cues: Employ subtle arrows, lines, or numbering to indicate flow, especially in processes or timelines.

  • 2. Readability & Accessibility:

* High Contrast: Ensure sufficient contrast between text and background colors (WCAG 2.1 AA standards recommended) for all users, including those with visual impairments.

* Legible Fonts: Select fonts that are clear and easy to read at various sizes. Avoid overly decorative or thin fonts for body text.

* Appropriate Font Sizes: Use a minimum font size of 10-12pt for body text in print, and scale appropriately for digital viewing.

* Line Height & Letter Spacing: Optimize line height (1.4-1.6 times font size) and letter spacing to prevent text from feeling cramped or too loose.

  • 3. Clarity & Simplicity:

* Concise Language: Use direct, plain language. Avoid jargon where possible.

* Direct Data Labels: Label charts and graphs clearly and directly. Avoid ambiguous abbreviations.

* One Idea Per Visual: Each chart or diagram should ideally convey one primary message to avoid confusion.

* Minimalist Design: Remove any unnecessary elements that don't contribute to the understanding of the information.

  • 4. Engagement & Storytelling:

* Narrative Flow: Structure the infographic to tell a story, with a clear beginning, middle, and end.

* Compelling Visuals: Use high-quality icons, illustrations, and data visualizations that are both informative and aesthetically pleasing.

* Emotional Connection: Where appropriate, use imagery or language that evokes emotion or relates to the viewer's experience.

* Interactive Elements (for digital): If the infographic is hosted online, consider hover states for data points, clickable links to sources, or embedded videos (though the core infographic remains a static image).

  • 5. Data Integrity & Accuracy:

* Accurate Representation: Ensure all data visualizations accurately represent the underlying data. Avoid misleading scales or chart types.

* Clear Sources: Always cite data sources clearly and prominently.

* Contextual Information: Provide enough context for the data to be fully understood without external references.

  • 6. Mobile Optimization (Consideration):

* While infographics are often designed as static images, consider how the layout might scale down. Ensure text is still legible when zoomed, and sections are clearly delineated for easier scrolling on smaller screens. For truly responsive needs, an interactive web page might be preferred over a static infographic.

By adhering to these design specifications and UX recommendations, your infographic will be a powerful tool for communication, effectively conveying your message to your target audience.

gemini Output

This document outlines the finalized design assets for the "Infographic Creator" workflow, providing comprehensive specifications and recommendations to guide the development of a professional, intuitive, and visually appealing tool. This deliverable focuses on the user interface (UI) and user experience (UX) to ensure a seamless and empowering creation process for users.


Infographic Creator: Finalized Design Assets & Specifications

1. Project Overview & Design Philosophy

The "Infographic Creator" aims to empower users to transform complex data and information into compelling visual stories with ease and professionalism. Our design philosophy centers on Clarity, Control, and Creativity.

  • Clarity: A clean, uncluttered interface that prioritizes content and guides users through the creation process without distraction.
  • Control: Providing robust tools and customization options while maintaining simplicity and ease of use. Users should feel in command of their design.
  • Creativity: Offering a rich library of templates, assets, and styling options to spark inspiration and allow for unique, personalized infographics.

Core Goals:

  • Intuitive Workflow: Minimize learning curve, allowing users to start creating immediately.
  • Visual Professionalism: Ensure all default assets and styling options result in high-quality, modern aesthetics.
  • Flexibility & Customization: Support a wide range of data types, design styles, and branding requirements.
  • Performance: A responsive and fast interface, even with complex designs.

2. Wireframe Descriptions: Key User Flows

The following wireframes describe the essential screens and components a user will interact with, emphasizing functionality and layout.

2.1. Dashboard / Project Management Screen

  • Layout: Two-column or three-column grid for project display.
  • Header:

* Logo (top-left)

* User Profile/Account Management (top-right)

* "Create New Infographic" button (prominent, primary CTA)

* Search Bar for projects.

  • Left Sidebar (Optional/Collapsible):

* Navigation: "My Projects," "Templates," "Shared with Me," "Trash."

  • Main Content Area:

* Project Cards: Each card represents an infographic project.

* Thumbnail preview of the infographic.

* Project Title.

* Last Modified Date.

* Action buttons: "Edit," "Duplicate," "Share," "Delete."

* Sorting & Filtering: Options to sort by date, name, status; filter by tags or categories.

* Pagination/Infinite Scroll.

2.2. Template Selection / Start New Infographic

  • Layout: Grid-based display of templates with a prominent search/filter function.
  • Header: "Choose a Template" or "Start from Scratch."
  • Left Sidebar (Optional):

* Categories: "Business," "Education," "Marketing," "Health," "Timeline," "Process," "Data Visualization," "Blank Canvas."

* "My Templates" (for saved custom templates).

  • Main Content Area:

* Template Cards: Each card displays a high-resolution preview of a template.

* Template Title.

* Tags (e.g., "Free," "Premium," "New," "Popular").

* "Preview" and "Use Template" buttons on hover or click.

* "Start from Scratch" Card: A prominent card allowing users to begin with a blank canvas.

2.3. Infographic Editor (Main Canvas)

This is the core workspace, designed for maximum efficiency and visual focus.

  • Layout: Three main areas: Top Bar, Left Panel (Tools/Assets), Main Canvas, Right Panel (Properties/Styling).
  • Top Bar:

* Project Name: Editable title.

* File Actions: "Save," "Save As," "Undo," "Redo," "Version History."

* View Options: "Zoom In/Out," "Fit to Screen," "Grid Toggle," "Rulers Toggle."

* Collaboration: "Share" button.

* Export/Publish: "Download," "Share Link," "Embed Code."

* Help/Support.

  • Left Panel (Collapsible/Tabbed):

* Content Tabs:

* Templates: Quick access to template library.

* Text: Various text boxes (Heading 1, 2, 3, Body, Quote), pre-designed text blocks.

* Data: Chart types (Bar, Line, Pie, Area, Scatter, Donut), Tables, Maps.

* Graphics: Icons (searchable library), Illustrations, Shapes.

* Images: Stock photos (searchable integration), User Uploads, Image Gallery.

* Backgrounds: Solid colors, gradients, patterns, textures.

* Elements: Borders, frames, dividers, decorative elements.

* Drag-and-Drop functionality for all assets onto the canvas.

  • Main Canvas:

* Interactive Workspace: The central area where the infographic is built.

* Drag-and-Drop: Elements can be dragged from the left panel onto the canvas.

* Selection & Manipulation: Click to select, drag to move, resize handles, rotation handles.

* Alignment Guides: Smart guides appear when aligning elements.

* Contextual Menus: Right-click for "Copy," "Paste," "Duplicate," "Bring to Front," "Send to Back," "Group," "Ungroup," "Lock," "Delete."

* Rulers and Grid: Toggleable for precise placement.

  • Right Panel (Collapsible):

* Contextual Properties: Changes based on the selected element(s) on the canvas.

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

* Shape/Graphic Properties: Fill color, stroke color, stroke weight, corner radius, opacity, shadow, gradient.

* Image Properties: Crop, filters, opacity, border, shadow.

* Chart Properties: Data input (manual, upload CSV/Excel), chart type, series colors, labels, legends, axis settings.

* Canvas Properties (when nothing is selected): Canvas size (presets & custom), background color/image.

* Layer Panel: List of all elements on the canvas, with options to reorder, hide, lock, rename.

2.4. Data Import & Management

  • Modal/Overlay: Appears when a data-driven element (chart, table) is added or selected.
  • Options:

* "Enter Data Manually" (spreadsheet-like interface).

* "Upload File" (CSV, Excel, Google Sheets link).

* "Connect to Data Source" (e.g., Google Analytics, CRM – advanced feature).

  • Data Preview: Display of imported data for verification.
  • Mapping: Options to map columns to chart axes/labels.

2.5. Export & Sharing Options

  • Modal/Overlay: Activated from the "Export/Publish" button in the Top Bar.
  • Download Options:

* File Types: PNG (high-res, transparent background option), JPG, PDF (vector), SVG (for vector graphics).

* Quality/Resolution: Slider or predefined options (e.g., "Web," "Print").

* Page Size: Options for single page or multiple pages (if applicable).

  • Share Options:

* Public Link: Generate a shareable URL with privacy settings (view only, editable).

* Embed Code: HTML iframe code for embedding on websites.

* Social Media Sharing: Direct share to platforms (Facebook, Twitter, LinkedIn, Pinterest).

  • Print Options: Direct print functionality or print-ready PDF generation.

3. Detailed Design Specifications

3.1. Typography

Consistency and readability are paramount.

  • Primary Heading Font (H1, H2):

* Font Family: Montserrat / Lato (Sans-serif, strong, modern)

* Weights: Bold, Semi-Bold

* Usage: Infographic titles, major section headings.

  • Secondary Heading Font (H3, H4):

* Font Family: Open Sans / Roboto (Sans-serif, highly readable)

* Weights: Semi-Bold, Regular

* Usage: Sub-headings, callouts, data labels.

  • Body Text Font:

* Font Family: Open Sans / Roboto / Source Sans Pro (Sans-serif, excellent readability at small sizes)

* Weights: Regular, Light

* Usage: Paragraphs, descriptions, detailed information.

  • Data/Label Font (for charts & tables):

* Font Family: Fira Sans / Lato (Clean, condensed options preferred for data density)

* Weights: Regular, Medium

* Usage: Axis labels, data points, table content.

Sizing (Base 16px):

  • H1: 36px - 48px
  • H2: 28px - 32px
  • H3: 20px - 24px
  • H4: 16px - 18px
  • Body: 14px - 16px
  • Labels: 10px - 12px

Line Height: 1.4em - 1.6em for body text; 1.2em for headings.

Letter Spacing: Tighter for headings (-0.02em), normal for body text.

3.2. Iconography

  • Style: Flat, line-based or filled, modern, minimalist. Consistent stroke weight (e.g., 1.5px or 2px) and corner radius.
  • Library: Utilize a well-established icon library (e.g., Font Awesome, Material Design Icons, Feather Icons) or custom-designed set.
  • Usage: Navigation, actions (add, edit, delete, save, export), feature indicators, data visualization elements.
  • Color: Primarily use neutral gray (#555555) for default state, accent color for active/hover states.

3.3. Imagery & Illustrations

  • Stock Photos: Integration with high-quality, royalty-free stock photo libraries (e.g., Unsplash, Pexels, Pixabay). Images should be professional, diverse, and relevant.
  • User Uploads: Support for common image formats (JPG, PNG, GIF, SVG). Provide clear guidelines for optimal resolution and file size.
  • Illustrations: Flat, vector-based illustrations are preferred for consistency with the overall clean aesthetic. These should be customizable in color where possible.
  • Image Manipulation: Basic editing tools (crop, resize, rotate, filters, opacity) should be available within the editor.

3.4. Grids & Spacing

  • Grid System: 8-point grid system for all UI elements, ensuring consistent spacing and alignment.
  • Margins & Padding:

* Small: 8px, 16px

* Medium: 24px, 32px

* Large: 48px, 64px

  • Canvas Grid: User-toggleable visual grid on the main canvas (e.g., 20px x 20px or 40px x 40px squares).

3.5. Interactive Elements

  • Buttons:

* Primary CTA: Solid fill with primary accent color, white text.

* Secondary Buttons: Outline with primary color, transparent fill, primary colored text.

* Tertiary/Ghost Buttons: Minimal styling, often text-only.

* States: Default, Hover (subtle color change/shadow), Active (pressed state), Disabled (reduced opacity, no interaction).

  • Form Fields: Clean, well-defined borders. Clear focus states.
  • Sliders & Toggles: Intuitive visual feedback.
  • Micro-interactions: Subtle animations on hover, click, or state changes to provide feedback and enhance delight (e.g., button presses, tooltips appearing).

4. Color Palette

A balanced and accessible color palette for both the UI and infographic creation.

4.1. UI Palette

  • Primary Brand Color (e.g., Deep Teal):

* #007B8C (Strong, professional, authoritative)

* Usage

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