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

Infographic Creator: Design Requirements & Specifications

This document outlines the comprehensive design requirements and specifications for the "Infographic Creator" tool. The aim is to build an intuitive, powerful, and aesthetically pleasing platform that empowers users to create professional-grade infographics with ease.


1. Project Vision & Goals

Vision: To provide a highly accessible and flexible online tool that enables users of all skill levels to design compelling and data-rich infographics for various purposes.

Key Goals:

  • User-Friendliness: Intuitive drag-and-drop interface with a minimal learning curve.
  • Versatility: Support for diverse infographic types and extensive customization.
  • Professional Output: Enable creation of high-quality, export-ready visuals.
  • Efficiency: Streamline the design process with templates, smart tools, and efficient workflows.

2. Target Audience

The Infographic Creator is designed for a broad range of users who need to visualize information effectively, including:

  • Marketers & Content Creators: For campaigns, reports, social media.
  • Educators & Students: For presentations, study materials, research summaries.
  • Small Business Owners: For pitch decks, internal communications, marketing collateral.
  • Non-profits: For impact reports, awareness campaigns.
  • Data Analysts: For presenting complex data insights.
  • General Users: Anyone needing to simplify and present information visually.

3. Core Functionality (High-Level)

The tool will offer the following essential capabilities:

  • Template Library: A rich collection of pre-designed, customizable templates.
  • Drag-and-Drop Editor: A flexible canvas for arranging and manipulating elements.
  • Text & Typography Tools: Comprehensive options for text editing and styling.
  • Icon & Image Libraries: Extensive built-in resources and upload functionality.
  • Data Visualization Elements: Integrated charts (bar, pie, line, area), graphs, and maps with data input.
  • Shape & Line Tools: Basic geometric shapes, connectors, and decorative lines.
  • Customization & Styling: Granular control over colors, fonts, sizes, opacity, and positioning.
  • Save & Export Options: Ability to save projects and export infographics in various formats.

4. Detailed Design Specifications

4.1. Infographic Layout Types Supported

The tool should facilitate the creation of the following common infographic structures:

  • List-based: Sequential information presentation.
  • Process/Timeline: Step-by-step or chronological events.
  • Comparison: Highlighting differences and similarities between two or more items.
  • Geographic/Map-based: Data visualized on maps.
  • Hierarchical/Flowchart: Organizational structures or decision trees.
  • Statistical/Data-driven: Emphasizing numerical data and charts.
  • Resume/Profile: Personal or professional summaries.

4.2. Element Types & Customization

The editor must support a wide range of customizable elements:

  • Text Boxes:

* Properties: Font family, size, color, bold, italic, underline, alignment (left, center, right, justify), line height, letter spacing, opacity, background color, border, shadow.

* Advanced: Text paths, bullet points, numbered lists.

  • Images:

* Sources: Upload from local drive, built-in stock photo library, external integrations (e.g., Unsplash).

* Properties: Resize, crop, rotate, flip, opacity, filters (grayscale, sepia, blur), border, shadow.

  • Icons:

* Sources: Extensive built-in SVG icon library (categorized).

* Properties: Color, size, rotate, flip, opacity, stroke weight (if applicable).

  • Shapes:

* Types: Rectangles, circles, triangles, polygons, lines, arrows, speech bubbles.

* Properties: Fill color, stroke color, stroke weight, opacity, corner radius (for rectangles), resize, rotate.

  • Charts & Graphs:

* Types: Bar charts (horizontal/vertical), Pie charts, Line charts, Area charts, Doughnut charts, Progress bars.

* Data Input: Manual data entry (spreadsheet-like interface), CSV upload, basic copy-paste.

* Properties: Data series colors, labels, legends, axes customization (min/max, labels, grid lines), animation (for web preview).

  • Maps:

* Types: World, continent, country, state maps (simplified vector outlines).

* Data Input: Associating data with regions (e.g., color-coding based on value).

* Properties: Region colors, border colors, labels.

4.3. Editor Capabilities

  • Canvas Management: Adjustable canvas size (pre-sets for common aspect ratios: A4, US Letter, social media posts), zoom in/out, pan.
  • Layer Management: Bring forward/send backward, group/ungroup elements, lock/unlock elements, hide elements.
  • Alignment & Distribution: Snap-to-grid, smart guides, align to canvas/other elements (left, right, top, bottom, center), distribute evenly.
  • Undo/Redo: Unlimited history for actions.
  • Preview Mode: Full-screen preview of the infographic.
  • Saving: Auto-save functionality, manual save to user account.

4.4. Export Formats

  • Image: PNG (transparent background option), JPG (adjustable quality).
  • Print: PDF (standard, print-ready with bleed options).
  • Vector: SVG (for scalable graphics, advanced users).

5. Wireframe Descriptions (Conceptual)

The user interface will follow a standard layout for graphic design tools, optimizing for discoverability and efficiency.

5.1. Dashboard / Project Selector (Initial Screen)

  • Layout: Grid view of user's saved projects, "Create New" button, "Explore Templates" section.
  • Elements: Search bar for projects/templates, categories for templates, pagination/scrolling.
  • Actions: View project, Edit project, Duplicate, Delete, Start from scratch, Choose template.

5.2. Main Editor Interface

  • Top Bar (Global Toolbar):

* Left: Logo, Project Title (editable), Save, Undo, Redo.

* Middle: Canvas zoom level, Grid toggle, Snap-to-grid toggle, Alignment tools, Group/Ungroup.

* Right: Preview, Share, Export button, User Profile/Settings.

  • Left Sidebar (Asset Panel):

* Tabs:

* Templates: Browse and apply templates (with search/categories).

* Text: Pre-designed text styles (headings, body), add text box.

* Elements: Icons (searchable), Shapes, Lines, Illustrations.

* Uploads: User's uploaded images, option to upload new.

* Charts & Data: Chart types, map types, data input interface.

* Background: Solid colors, gradients, patterns, textures, image backgrounds.

* Interactivity: Drag-and-drop elements onto the canvas.

  • Central Canvas Area:

* Functionality: The primary workspace. Drag-and-drop elements, resize handles, rotation handles, context-sensitive right-click menu.

* Visuals: Clear canvas boundaries, optional grid lines/guides.

  • Right Sidebar (Properties Panel):

* Functionality: Context-sensitive, displaying properties of the currently selected element(s).

* Tabs/Sections (depending on element):

* Text: Font, size, color, alignment, spacing, bold/italic, etc.

* Image: Crop, filters, opacity, border.

* Shape: Fill color, stroke color, stroke weight, opacity.

* Chart: Data input, series colors, labels, axes settings.

* Position: X/Y coordinates, Width/Height, Rotation (numeric input).

* Layers: Z-index control (bring forward/send backward).

* Interactivity: Sliders, color pickers, dropdowns, input fields for precise control.


6. Color Palettes

6.1. UI Color Palette (For the Creator Tool Itself)

The tool's UI should be clean, professional, and non-distracting, allowing the user's creative content to take center stage.

  • Primary Accent: #4A90E2 (A vibrant, professional blue for active states, primary buttons, highlights)
  • Secondary Accent: #50E3C2 (A refreshing teal for secondary actions or complementary highlights)
  • Backgrounds:

* #F8F9FA (Light grey for main content areas, canvas background)

* #FFFFFF (Pure white for panels, modals, element backgrounds)

* #E9ECEF (Slightly darker grey for section dividers, inactive states)

  • Text Colors:

* #343A40 (Dark grey for primary text, headings)

* #6C757D (Medium grey for secondary text, labels, descriptions)

* #ADB5BD (Light grey for subtle hints, disabled text)

  • Borders/Dividers: #DEE2E6

Rationale: This palette offers high contrast for readability, a professional and modern feel, and ensures the UI recedes to highlight the infographic being created.

6.2. Default Infographic Color Palettes (For User Selection)

The tool will offer several curated palettes that users can apply to their infographics, ensuring aesthetic consistency even for beginners.

Palette 1: "Professional & Clean"

  • Primary: #2E4057 (Deep Navy)
  • Secondary: #4A90E2 (Vibrant Blue)
  • Accent 1: #50E3C2 (Teal)
  • Accent 2: #F3C623 (Goldenrod)
  • Neutral: #D9E2EC (Light Grey-Blue)
  • Text: #333333

Rationale: A corporate-friendly palette, evoking trust and clarity. Good for business reports, educational content.

Palette 2: "Vibrant & Energetic"

  • Primary: #FF6B6B (Coral Red)
  • Secondary: #FFD166 (Sunny Yellow)
  • Accent 1: #06D6A0 (Emerald Green)
  • Accent 2: #118AB2 (Deep Sky Blue)
  • Neutral: #F7F7F7 (Off-white)
  • Text: #222222

Rationale: Bold and eye-catching, suitable for social media, marketing, and engaging presentations.

Palette 3: "Minimalist & Modern"

  • Primary: #495057 (Dark Charcoal)
  • Secondary: #ADB5BD (Cool Grey)
  • Accent 1: #8D6A9F (Muted Lavender)
  • Accent 2: #F0F2F5 (Very Light Grey)
  • Neutral: #FFFFFF (Pure White)
  • Text: #343A40

Rationale: Clean and sophisticated, ideal for design-focused content, portfolios, or when data needs to speak for itself.

Palette 4: "Nature & Earthy"

  • Primary: #4F772D (Forest Green)
  • Secondary: #90A959 (Moss Green)
  • Accent 1: #C69F5D (Tan/Bronze)
  • Accent 2: #D8BFD8 (Soft Lavender)
  • Neutral: #F5F5DC (Cream)
  • Text: #5E5E5E

Rationale: Calming and organic, great for environmental topics, health, or lifestyle content.


7. User Experience (UX) Recommendations

7.1. Ease of Use & Intuition

  • Drag-and-Drop: Core interaction for adding and positioning elements.
  • Contextual Menus: Right-click options relevant to the selected element.
  • Clear Labeling: All buttons, panels, and options should be clearly labeled and self-explanatory.
  • Undo/Redo: Prominently displayed and easily accessible.
  • Consistent UI: Predictable placement of tools and panels across the application.

7.2. Feedback & Responsiveness

  • Real-time Updates: Changes to properties (color, size) should reflect immediately on the canvas.
  • Hover States: Clear visual feedback for interactive elements (buttons, icons).
  • Loading Indicators: For template loading, image uploads, or complex operations.
  • Error Messages: Clear, concise, and actionable error messages (e.g., "Image upload failed: file too large").

7.3. Efficiency & Productivity

  • Keyboard Shortcuts: Common actions (copy, paste, delete, undo, redo, group) should have keyboard shortcuts.
  • Smart Guides & Snapping: Automatic alignment guides appear when moving elements, and elements snap to grid or other elements for precise positioning.
  • Template Categorization & Search: Easy discovery of relevant templates.
  • Asset Management: Ability to organize uploaded assets (e.g., folders).
  • Duplicate Element: Quick way to clone selected elements.

7.4. Accessibility

  • High Contrast: Ensure sufficient contrast between text and background colors for UI elements and default infographic palettes.
  • Keyboard Navigation: Most, if not all, UI elements should be navigable via keyboard (Tab, Enter, Spacebar).
  • Alt Text: Option to add alt text for uploaded images for screen readers.
  • Scalable Fonts: UI text should be scalable without breaking the layout.

7.5. Onboarding & Help

  • Optional Onboarding Tour: A brief, interactive tour for first-time users highlighting key features.
  • Tooltips: Hovering over complex icons or options should display a short explanation.
  • Help Documentation/Knowledge Base: Easily accessible help resources.
  • **Tutorial
gemini Output

This document outlines the detailed design specifications for the "Infographic Creator" output, ensuring a professional, clear, and engaging visual communication tool. These specifications cover the structural, visual, and user experience aspects of the generated infographic.

1. Detailed Design Specifications

The infographic will be designed as a vertical, modular layout, optimized for digital viewing and print. Each section will serve a distinct purpose, guiding the viewer through the information logically.

1.1. Overall Structure & Layout

  • Vertical Flow: Information will progress from top to bottom, with clear visual breaks between sections.
  • Modular Design: Each major content block (e.g., Introduction, Data Point 1, Conclusion) will be a distinct module, allowing for easy reordering or customization.
  • Sufficient White Space: Ample padding and margins will be used around elements and sections to prevent visual clutter and improve readability.
  • Grid System: A consistent grid (e.g., 12-column or 6-column) will be used to ensure alignment, balance, and visual harmony across all elements.

1.2. Typography

  • Heading Font (Primary): A strong, modern sans-serif font (e.g., Montserrat, Open Sans Bold, Lato Bold) for main titles, section headings, and key callouts.

* Usage: H1 (Main Title), H2 (Section Titles), Key Metrics.

  • Body Font (Secondary): A highly readable sans-serif font (e.g., Open Sans, Lato, Roboto) for body text, descriptions, and smaller labels.

* Usage: Paragraphs, bullet points, data labels, source information.

  • Font Sizing: A clear hierarchy will be maintained (e.g., H1 > H2 > Body Text > Captions). Minimum body text size will be 10-12pt for readability.
  • Line Spacing (Leading): Optimized for readability, typically 1.4-1.6 times the font size for body text.

1.3. Imagery & Iconography

  • Style Consistency: All icons and illustrations will adhere to a consistent visual style (e.g., flat, line-art, duotone).
  • Purpose: Icons will be used to enhance understanding, break up text, and add visual interest, not merely for decoration.
  • Relevance: Each icon or image must directly relate to the accompanying text or data point.
  • SVG/Vector Graphics: Preferred for scalability and crispness across different resolutions.

1.4. Data Visualization

  • Clarity First: All charts and graphs will be designed for immediate understanding. Complexity will be avoided where possible.
  • Appropriate Chart Types:

* Comparison: Bar charts (horizontal/vertical), column charts.

* Distribution: Pie charts (for few categories), donut charts, treemaps.

* Trends Over Time: Line charts, area charts.

* Relationships: Scatter plots.

* Process/Flow: Flowcharts, numbered steps with arrows.

  • Minimalist Design: Chart junk (unnecessary grid lines, heavy borders, 3D effects) will be minimized.
  • Direct Labeling: Data labels will be placed directly on or next to data points where appropriate to reduce eye movement.
  • Color Use: Colors will be used intentionally to highlight key data points or differentiate categories, adhering to the defined color palette.

1.5. Visual Hierarchy & Flow

  • Z-Pattern/F-Pattern: The layout will subtly guide the viewer's eye using established reading patterns.
  • Size & Weight: Larger, bolder elements (headings, key metrics) will draw attention first.
  • Color Contrast: Strategic use of contrasting colors to highlight important information.
  • Directional Cues: Arrows, lines, and implicit paths will guide the viewer from one section to the next.

2. Wireframe Descriptions

The following describes a typical 6-section infographic wireframe, outlining the content and layout for each module.

2.1. Section 1: Header & Introduction

  • Purpose: Capture attention, state the topic, and provide an overview.
  • Layout:

* Top Banner: Optional client logo (top-left or top-right).

* Main Title (H1): Large, bold, centered, concise and engaging title.

* Subtitle/Tagline: Smaller, centered, providing context or a key benefit.

* Catchy Statistic/Question: A prominent, attention-grabbing number or question related to the topic, placed centrally.

* Brief Introductory Paragraph: 2-3 sentences providing a high-level overview of what the infographic will cover.

* Supporting Icon/Illustration: A relevant visual element to reinforce the theme.

2.2. Section 2: Problem/Context

  • Purpose: Establish the relevance of the infographic by presenting a problem, challenge, or current state.
  • Layout:

* Section Title (H2): Clearly states the focus (e.g., "The Challenge," "Current Landscape").

* Key Data Points: 2-3 statistics presented with large numbers, short descriptive text, and accompanying icons.

* Short Explanatory Text: A brief paragraph elaborating on the problem or context.

* Visual Element: A simple chart (e.g., small bar chart showing growth/decline) or an illustrative diagram.

2.3. Section 3: Solution/Process (Core Content 1)

  • Purpose: Introduce a solution, a key concept, or the first step of a process.
  • Layout:

* Section Title (H2): (e.g., "Our Solution," "How It Works," "Key Principle 1").

* Primary Visualization: A prominent chart (e.g., line chart for trends, pie chart for composition) or a multi-step process diagram with arrows connecting distinct stages.

* Bullet Points/Key Takeaways: 3-4 concise bullet points summarizing the most important aspects of the visualization.

* Descriptive Paragraph: A brief explanation of the visualization and its implications.

2.4. Section 4: Benefits/Impact (Core Content 2)

  • Purpose: Highlight the positive outcomes, benefits, or further details related to the topic.
  • Layout:

* Section Title (H2): (e.g., "The Benefits," "Measurable Impact," "Deep Dive").

* Comparison/List Format:

* Option A (Comparison): Side-by-side comparison using two columns with icons and brief descriptions.

* Option B (Numbered/Icon List): 3-5 distinct points, each with a unique icon, a bold sub-heading, and 1-2 sentences of descriptive text.

* Illustrative Graphic: A small, impactful graphic or illustration that metaphorically represents the benefits.

2.5. Section 5: Call to Action / Next Steps

  • Purpose: Guide the viewer on what to do next or provide actionable advice.
  • Layout:

* Section Title (H2): (e.g., "What You Can Do," "Next Steps," "Start Today").

* Actionable Points: 2-3 clear, concise actions presented as short phrases or bullet points.

* Prominent Call-to-Action (CTA) Button/Text: A visually distinct element encouraging a specific action (e.g., "Download the Full Report," "Visit Our Website," "Contact Us"). This might be a bold text block or a stylized button shape.

2.6. Section 6: Footer & Source Information

  • Purpose: Provide accreditation, contact details, and reinforce branding.
  • Layout:

* Source Information: Small text indicating data sources and date of publication (e.g., "Source: [Organization/Report], Year").

* Contact Information: Website URL, social media handles, or a QR code.

* Client Logo: Optional, smaller version of the client logo.

* Disclaimer: Any necessary legal disclaimers in small print.

3. Color Palettes

Two primary professional palettes are offered, along with a neutral palette and accent options, to ensure versatility and visual appeal.

3.1. Primary Palette: "Corporate Professional"

  • Concept: Trustworthy, stable, and authoritative. Ideal for business, finance, or formal reports.
  • Colors:

* Primary Blue: #0047AB (Deep Blue - for headings, key accents)

* Secondary Blue: #4682B4 (Steel Blue - for subheadings, secondary data elements)

* Accent Green: #3CB371 (Medium Sea Green - for positive indicators, highlights)

* Accent Orange: #FF8C00 (Dark Orange - for warnings, secondary highlights)

3.2. Secondary Palette: "Modern & Dynamic"

  • Concept: Engaging, innovative, and approachable. Suitable for technology, marketing, or educational content.
  • Colors:

* Primary Teal: #008080 (Teal - for headings, main accents)

* Secondary Aqua: #40E0D0 (Turquoise - for subheadings, secondary data elements)

* Accent Purple: #8A2BE2 (Blue Violet - for key highlights, differentiating data)

* Accent Yellow: #FFD700 (Gold - for attention-grabbing elements, warnings)

3.3. Neutral Palette (Applicable to both)

  • Concept: Provides readability and clean background elements.
  • Colors:

* Dark Gray (Text): #333333 (For body text, ensures high contrast)

* Medium Gray (Secondary Text/Lines): #666666 (For captions, subtle dividers)

* Light Gray (Backgrounds): #F8F8F8 (For section backgrounds, subtle variations)

* White (Primary Background): #FFFFFF (Main background color)

3.4. Color Application Guidelines

  • Backgrounds: Predominantly white or light gray to ensure readability.
  • Text: Dark gray for body text, primary color for main headings.
  • Data Visualization: Use primary and secondary palette colors to differentiate data series, with lighter tints for less emphasis and darker shades for primary focus.
  • Accents: sparingly use accent colors to highlight critical information or call-to-action elements.
  • Contrast: Ensure sufficient contrast between text and background colors (WCAG 2.1 AA compliance where possible) for accessibility.

4. UX Recommendations

User Experience (UX) is paramount to an effective infographic. These recommendations focus on maximizing clarity, engagement, and information retention.

4.1. Clarity & Simplicity

  • One Idea Per Section: Each module should convey a single, clear message or data point.
  • Concise Language: Use short sentences, bullet points, and avoid jargon.
  • Visual Over Text: Prioritize visual representations of data and concepts over dense text blocks.
  • Avoid Clutter: Every element must have a purpose. Remove anything that doesn't add value.

4.2. Readability & Accessibility

  • High Contrast: Ensure strong contrast between text and background colors.
  • Legible Fonts: Use easily readable fonts at appropriate sizes.
  • Logical Flow: The visual path should be intuitive, guiding the eye effortlessly from start to finish.
  • Color Blindness Consideration: When using multiple colors for data, ensure they are distinguishable for individuals with common forms of color blindness (e.g., using patterns or varying lightness/darkness in addition to hue).

4.3. Visual Engagement & Storytelling

  • Compelling Narrative: Structure the infographic like a story with a beginning (problem), middle (solution/data), and end (call to action).
  • Emotional Connection: Use visuals and language that resonate with the target audience.
  • Surprising Data: Highlight unexpected or impactful statistics to maintain interest.
  • Consistent Branding: Incorporate client logos, brand colors, and visual styles to reinforce identity.

4.4. Data Integrity & Credibility

  • Accuracy: All data presented must be accurate and verifiable.
  • Source Citation: Always include sources for data, typically in the footer, to build trust and allow for further investigation.
  • Timeliness: Use the most recent and relevant data available.

4.5. Mobile-Friendly Design Principles

  • Although a static image, the design should consider mobile viewing.
  • Vertical Stacking: Ensure elements stack logically when viewed on smaller screens.
  • Large Touch Targets (if interactive elements were present): While this is a static image, the principle of clear spacing around elements helps.
  • Legible Font Sizes: Ensure text remains readable even when scaled down.

By adhering to these detailed design specifications, wireframe descriptions, color palettes, and UX recommendations, the "Infographic Creator" will produce professional, effective, and visually appealing infographics that effectively communicate complex information.

gemini Output

Infographic Creator: Finalized Design Assets & Specifications

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the infographic generated by the "Infographic Creator" workflow. The goal is to produce professional, engaging, and highly informative visual content that effectively communicates complex data.


1. Overall Infographic Concept & Goal

The "Infographic Creator" aims to transform user-provided data and narratives into visually compelling and easily digestible infographics. The finalized design assets focus on clarity, professionalism, and effective storytelling, ensuring the infographic is both aesthetically pleasing and highly informative.

Core Objective: To deliver a polished, ready-to-use infographic that clearly communicates key insights, supports data-driven arguments, and enhances audience engagement.


2. Detailed Design Specifications

These specifications define the visual language and structural components of the infographic.

2.1. Target Audience & Tone

  • Target Audience: Professionals, decision-makers, educators, or general public interested in data-driven insights. The design accommodates a range from B2B to educational contexts.
  • Tone: Professional, authoritative, informative, trustworthy, and engaging. Avoid overly casual or overly academic tones unless specified by the user.

2.2. Visual Style & Theme

  • Modern & Clean: Emphasis on white space, minimalist design elements, and a clean layout to prevent visual clutter.
  • Data-Centric: Visualizations are central, clear, and accurately represent data.
  • Professional: Polished graphics, consistent branding (if applicable), and high-quality imagery.
  • Adaptable: The design framework allows for customization based on user input regarding industry, brand guidelines, and specific data types.

2.3. Dimensions & Format

  • Standard Vertical (Poster Style):

* Dimensions: 800px - 1200px width (flexible, e.g., 1080px) x 2000px - 4000px height (variable based on content length).

* Resolution: 300 DPI for print readiness, 72 DPI for web optimization.

  • Square (Social Media Snippet):

* Dimensions: 1080px x 1080px (for key takeaways or single data points).

  • Horizontal (Presentation Slide):

* Dimensions: 1920px x 1080px (for specific sections or summaries).

  • Output Formats: PNG (high quality, transparent background option), JPEG (web optimized), PDF (print-ready, vector where possible).

2.4. Typography

  • Primary Headline Font:

* Purpose: Titles, section headers.

* Characteristics: Strong, legible sans-serif (e.g., Montserrat Bold, Lato Black, Open Sans ExtraBold).

* Size: Variable, 36pt-72pt for main title, 24pt-36pt for section headers.

  • Secondary Body Font:

* Purpose: Body text, data labels, callouts.

* Characteristics: Highly readable sans-serif (e.g., Open Sans, Lato, Roboto, Noto Sans).

* Size: 12pt-18pt for body, 10pt-12pt for captions/sources.

  • Emphasis/Accent Font (Optional):

* Purpose: Small highlights, quotes, statistics.

* Characteristics: Can be a slightly bolder version of the body font or a complementary sans-serif/serif for contrast.

* Usage: Sparingly, for visual interest.

  • Font Pairing Principle: Use a maximum of two primary font families to maintain consistency and professionalism. Ensure strong contrast between headline and body text.

2.5. Iconography Style

  • Style: Flat, line-art, or filled icons with a consistent stroke weight and corner radius.
  • Color: Primarily monochromatic (matching accent color or dark neutral) with potential for a single accent color highlight.
  • Purpose: To visually represent concepts, categories, or actions, breaking up text and enhancing comprehension.
  • Source: Reputable icon libraries (e.g., Font Awesome, The Noun Project – with proper attribution if required, or custom-designed).

2.6. Image & Illustration Style

  • Style: Modern, professional, and relevant to the infographic's theme.
  • Types:

* Illustrations: Flat vector illustrations, isometric, or simple geometric styles. Avoid overly complex or realistic illustrations that might distract.

* Photography: High-quality, relevant stock photography with a consistent aesthetic (e.g., muted tones, specific color filters). Use sparingly and strategically.

  • Purpose: To set the mood, illustrate complex ideas, or provide visual metaphors.
  • Consistency: All visual assets (icons, illustrations, photos) must adhere to a consistent style.

2.7. Data Visualization Types

The creator will select appropriate visualization types based on data characteristics.

  • Quantitative Data:

* Comparison: Bar charts (horizontal/vertical), column charts, line charts (for trends), radar charts.

* Distribution: Histograms, box plots, scatter plots.

* Composition: Pie charts (for few categories), donut charts, stacked bar/column charts, treemaps.

* Relationship: Scatter plots, bubble charts.

  • Qualitative Data:

* Hierarchical: Tree diagrams, organization charts.

* Process/Flow: Flowcharts, timelines.

* Geographical: Map charts (choropleth, heat maps).

  • Infographic-Specific: Progress bars, callout boxes with large numbers, icon arrays, data tables, area charts.
  • Design Principles:

* Simplicity: Avoid 3D charts or overly complex designs.

* Clarity: Clear labels, legends, and axes.

* Accuracy: Data must be represented without distortion.

* Color Coding: Consistent and meaningful use of color for different data series.

2.8. Layout Principles

  • Grids & Alignment: Use a strong underlying grid system (e.g., 12-column grid) to ensure precise alignment and consistent spacing.
  • Visual Hierarchy: Utilize size, color, position, and contrast to guide the reader's eye through the content, emphasizing key information.
  • Information Flow: Design for a clear, logical progression from top to bottom (for vertical infographics) or left to right (for horizontal).
  • White Space: Generous use of white space (or negative space) to improve readability, reduce cognitive load, and give elements room to breathe.
  • Repetition: Consistent use of design elements (headers, icons, data viz styles) to create visual rhythm and brand recognition.
  • Balance: Achieve visual balance through symmetrical or asymmetrical arrangements of elements.

3. Wireframe Descriptions (Conceptual Layout)

The infographic will typically follow a modular structure, allowing for flexibility in content arrangement while maintaining a consistent flow.

3.1. Header Section

  • Elements:

* Main Title: Prominent, engaging headline summarizing the infographic's core topic. (H1, Primary Headline Font, large size).

* Subtitle/Tagline: Brief, descriptive sentence providing context or a specific angle. (Body Font, slightly smaller than title).

* Author/Brand Logo: Positioned subtly, usually top-left or top-right.

* Date/Version (Optional): Small text, usually bottom of header.

  • Purpose: To immediately capture attention, convey the topic, and establish branding.

3.2. Introduction/Context Section

  • Elements:

* Hook/Problem Statement: A compelling opening statement or question.

* Brief Overview: 2-3 sentences introducing the key theme or the "why" behind the data.

* Key Statistic/Fact (Optional): A large, impactful number with an icon.

  • Purpose: To engage the reader and set the stage for the detailed information to follow.

3.3. Main Content Sections (Modular Data Presentation)

These sections will repeat as needed, each focusing on a distinct data point or sub-topic.

  • Elements per Module:

* Section Header: Clear, concise title for the specific data point. (H2, Primary Headline Font, medium size).

* Supporting Text: 1-3 sentences explaining the data or insight. (Body Font).

* Primary Data Visualization: Chart, graph, map, large number callout, or icon array. (Designed according to data visualization specs).

* Key Takeaway/Insight: A concise bullet point or short sentence summarizing the main finding from the visualization. (Accent Font/Bold Body Font).

* Relevant Icon/Illustration: Visually reinforcing the section's theme.

* Source/Citation (Mini): Small text next to the data if specific.

  • Purpose: To present data and insights in digestible, visually supported chunks, guiding the reader through the narrative.

3.4. Key Takeaways / Summary Section

  • Elements:

* Section Header: "Key Takeaways," "Summary," "What We Learned."

* Bullet Points/Numbered List: 3-5 concise, high-impact bullet points summarizing the most critical insights from the entire infographic.

* Small Illustrative Icon: Next to each bullet point.

  • Purpose: To reinforce the main message and provide a quick recap for readers.

3.5. Call to Action (CTA) Section

  • Elements:

* Clear CTA Text: "Learn More," "Download Report," "Visit Our Website," "Contact Us."

* Button/Link: Visually prominent, clickable element (for digital formats).

* QR Code (Optional): For quick mobile access.

  • Purpose: To guide the reader on the next desired step after consuming the infographic.

3.6. Footer Section

  • Elements:

* Full Data Sources: List all sources in a clear, small font.

* Company/Author Information: Website, social media handles, contact details.

* Copyright/Disclaimer: Legal information.

* Branding/Logo: Often a smaller version of the header logo.

  • Purpose: To establish credibility, provide further resources, and reinforce branding.

4. Color Palettes

The color palettes are designed to be professional, versatile, and accessible, offering options for different brand identities and data visualization needs.

4.1. Primary Professional Palette (Example: "Corporate Trust")

This palette is suitable for a wide range of professional topics, emphasizing credibility and clarity.

  • Primary Neutral (Background/Text):

* White: #FFFFFF (Main background, text contrast)

* Light Grey: #F5F5F5 (Subtle section separators, background for certain elements)

* Dark Grey/Black: #333333 / #000000 (Main body text, primary headers)

  • Primary Accent Colors (Brand/Highlight):

* Deep Blue: #005B96 (Authoritative, trustworthy – e.g., main brand color, primary CTA)

* Teal/Aqua: #00B2B2 (Fresh, innovative – e.g., secondary brand color, key highlights)

  • Secondary Accent/Data Visualization Colors:

* Lime Green: #8BC34A (Growth, positive)

* Sunset Orange: #FF9800 (Energy, attention)

* Soft Purple: #9C27B0 (Creativity, insight)

* Warm Grey: #9E9E9E (Neutral data series)

4.2. Vibrant & Modern Palette (Example: "Tech Innovation")

This palette is more dynamic and suitable for technology, creative industries, or topics requiring a more energetic feel.

  • Primary Neutral (Background/Text):

* Off-White: #F9F9F9

* Charcoal: #2C3E50 (Main text, headers)

  • Primary Accent Colors:

* Electric Blue: #3498DB (Dynamic, modern)

* Vibrant Green: #2ECC71 (Growth, fresh ideas)

  • Secondary Accent/Data Visualization Colors:

* Bright Orange: #E67E22 (Enthusiasm, warning)

* Deep Magenta: #E74C3C (Impact, urgency)

* Light Teal: #1ABC9C (Clarity, innovation)

* Soft Yellow: #F1C40F (Highlight, attention)

4.3. Color Usage Guidelines

  • Contrast: Ensure sufficient contrast between text and background colors for readability (WCAG 2.1 AA or AAA standards). Use tools like contrast checkers.
  • Consistency: Use colors consistently for specific purposes (e.g., one color for positive data, another for negative).
  • Meaningful Use: Avoid using too many colors that don't serve a purpose; each color should convey meaning or highlight information.
  • Brand Alignment: Prioritize user-provided brand colors and integrate them seamlessly into the chosen palette.
  • Accessibility: Consider colorblindness; avoid relying solely on color to convey critical information. Use patterns, labels, or different shading where appropriate.

5. User Experience (UX) Recommendations for the Infographic

These recommendations focus on optimizing the infographic for the end-user's comprehension and engagement.

5.1. Readability & Scannability

  • Chunking Information: Break down complex information into smaller, digestible segments using clear headers and visual separators.
  • Optimal Line Length: For body text, aim for 50-75 characters per line to reduce eye strain.
  • Clear Typography: Use legible fonts with appropriate sizes, line spacing, and letter spacing.
  • Visual Hierarchy: Guide the reader's eye using size, color, position, and contrast to highlight the most important information first.
  • Strong Contrast: Ensure text is easily distinguishable from its background.

5.2. Information Hierarchy & Flow

  • Logical Progression: Design the infographic to tell a story or present information in a clear, logical sequence (e.g., problem -> data -> solution -> call to action).
  • Numbered/Bulleted Lists: Use these for sequential steps, key takeaways, or lists of items to improve clarity.
  • Arrows & Connectors: Employ subtle visual cues like arrows or connecting lines to indicate relationships or flow between sections.
  • "Z" or "F" Pattern: Consider natural reading patterns when arranging elements, especially in sections with more text.

5.3. Engagement & Storytelling

  • Compelling Headline: A strong, benefit-driven headline grabs attention immediately.
  • Narrative Arc: Structure the infographic to have a beginning (introduction), middle (data points), and end (summary/CTA).
  • Relatable Visuals: Use icons, illustrations, or imagery that resonate with the target audience and help explain abstract concepts.
  • Emotional Connection (where appropriate): While data-driven, infographics can still evoke emotion through color, imagery, and narrative framing.
  • Interactive Elements (for digital versions): Consider hover states for data points, clickable links, or embedded videos if the platform supports it.

5.4. Accessibility

  • Alt Text for Images: Provide descriptive alt text for all significant images, icons, and data visualizations for screen readers.
  • Color Contrast: Adhere to WCAG guidelines for color contrast ratios.
  • Text Equivalents: For complex charts, provide a short summary or link to a text-
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);}});}