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

Project Overview: Infographic Creator

This document outlines the detailed design requirements and user experience (UX) recommendations for the "Infographic Creator" tool. The goal is to develop a professional, intuitive, and powerful platform that empowers users to design compelling infographics with ease, regardless of their design expertise.

1. Purpose and Vision

The Infographic Creator aims to simplify the process of transforming complex data and information into visually engaging and easily digestible infographics. It will provide a robust set of tools, templates, and assets to enable users to create high-quality visuals for presentations, reports, social media, marketing, and educational purposes.

2. Target Audience

The primary target audience includes:

  • Marketers: Creating visual content for campaigns, social media, and presentations.
  • Business Professionals: Visualizing data for reports, pitches, and internal communication.
  • Educators & Students: Designing educational materials and project summaries.
  • Content Creators & Bloggers: Enhancing articles and blog posts with engaging visuals.
  • Non-designers: Individuals who need professional-looking infographics without extensive design software knowledge.

3. Core Functionality (High-Level)

  • Template Library: A rich collection of pre-designed, customizable templates.
  • Drag-and-Drop Editor: Intuitive interface for adding and arranging elements.
  • Asset Library: Extensive collection of icons, shapes, illustrations, and stock photos.
  • Data Visualization Tools: Charts, graphs, and data-driven widgets.
  • Text & Typography Tools: Advanced text editing and font management.
  • Branding & Customization: Color palettes, custom fonts, logo uploads.
  • Collaboration Features: (Future consideration)
  • Export & Sharing: Multiple formats (PNG, JPG, PDF, SVG) and direct sharing options.

Detailed Design Specifications

4. General Design Principles

  • Clarity & Simplicity: The interface should be uncluttered and easy to understand.
  • Consistency: Uniformity in design elements, interactions, and terminology.
  • Efficiency: Minimize steps and clicks for common tasks.
  • Feedback: Clear visual and textual cues for user actions.
  • Aesthetics: Modern, clean, and professional visual appeal.
  • Responsiveness: Adaptable design for various screen sizes (though primary focus will be desktop for creation).

5. Interface Layout & Structure

The editor's layout will follow a standard creative application paradigm to ensure familiarity and ease of use.

5.1. Top Navigation Bar (Fixed)

  • Logo/App Name: Prominently displayed.
  • Project Name: Editable title of the current infographic.
  • File Actions: "New," "Save," "Save As," "Undo," "Redo."
  • Sharing/Export: "Share," "Download" (with format options).
  • Help/Account: User profile, settings, help resources, logout.

5.2. Left Sidebar (Collapsible/Expandable)

This will house the primary content and element libraries.

  • Templates: Browse and select pre-designed infographic layouts.
  • Elements: Icons, shapes, lines, illustrations, frames.
  • Text: Add headings, subheadings, body text; font library.
  • Media: Upload images/videos, access stock photo library.
  • Data: Chart types (bar, line, pie, etc.), data input options (manual, CSV upload, integrations).
  • Background: Color fills, gradients, patterns, images.
  • Branding: Custom brand kits (colors, fonts, logos).

5.3. Main Editor Canvas (Central)

  • Drag-and-Drop Area: The primary workspace where the infographic is built.
  • Grid/Rulers: Toggleable guides for precise alignment.
  • Zoom Controls: Magnification of the canvas.
  • Selection Handles: For resizing, rotating, and moving selected elements.
  • Layer Panel (Optional/Contextual): A small floating or collapsible panel showing element layers for complex designs.

5.4. Right Properties Panel (Contextual)

This panel appears when an element is selected on the canvas, displaying its editable properties.

  • Text Properties: Font, size, color, weight, alignment, line height, letter spacing.
  • Shape Properties: Fill color, stroke color, stroke weight, border radius, opacity.
  • Image Properties: Crop, filters, opacity, rotation, link.
  • Chart Properties: Data input, chart type, colors, labels, axes settings.
  • Position & Size: X/Y coordinates, width, height, rotation.
  • Alignment Tools: Align to canvas, distribute elements.
  • Grouping/Ungrouping: Combine or separate elements.

5.5. Bottom Toolbar (Fixed/Contextual)

  • Page Navigation: For multi-page infographics (if supported).
  • Quick Alignment Tools: Horizontal/Vertical alignment, distribution.
  • Lock/Unlock Elements: Prevent accidental movement.
  • Send to Front/Back: Layer ordering.

6. Wireframe Descriptions (Key Screens/Components)

6.1. Dashboard / Project Selection Screen

  • Layout: Grid view of "My Projects" (recently edited/created), "New Project" button, "Browse Templates" section.
  • Components: Project cards (thumbnail, title, last modified date), search bar, filter options (by type, date).
  • Interaction: Click project card to open editor, click "New Project" to start fresh, click "Browse Templates" to access template library.

6.2. Infographic Editor (Main Screen)

  • Layout: As described in Section 5 (Top Nav, Left Sidebar, Main Canvas, Right Properties Panel).
  • Components: All elements detailed in Section 5.
  • Interaction: Drag and drop elements from sidebar to canvas, click elements to select and edit properties, use handles for resizing/rotating, contextual right-click menus for common actions.

6.3. Template Browser

  • Layout: Categorized grid view of templates.
  • Components: Template thumbnails, category filters (e.g., "Marketing," "Business," "Education," "Health"), search bar.
  • Interaction: Hover to preview, click to select and load into editor. "Start from Scratch" option.

6.4. Asset Library (Icons, Shapes, Images)

  • Layout: Tabbed interface within the Left Sidebar for different asset types. Search bar specific to the asset type.
  • Components: Categorized asset collections, recently used assets, upload custom assets button.
  • Interaction: Click to add to canvas, drag to specific position, search for relevant assets.

6.5. Data Integration Panel (within Left Sidebar or Right Properties Panel)

  • Layout: Input fields for manual data entry, "Upload CSV" button, "Connect Data Source" (e.g., Google Sheets, Excel - future).
  • Components: Table view of data, options to map data to chart axes/labels, real-time chart preview update.
  • Interaction: Enter data, upload file, select chart type, see instant visualization.

6.6. Export/Share Options Modal

  • Layout: Pop-up modal with clear options.
  • Components: File format selection (PNG, JPG, PDF, SVG), quality/resolution settings, background transparency toggle, social media sharing buttons (Facebook, Twitter, LinkedIn, Pinterest), embed code generation, direct link sharing.
  • Interaction: Select options, click "Download" or "Share."

7. Typography

  • System Fonts: A curated selection of professional, legible, and versatile Google Fonts or similar, covering a range of styles (serif, sans-serif, display).
  • Readability: Prioritize fonts optimized for digital screens.
  • Hierarchy: Provide clear options for headings (H1, H2, H3) and body text styles to ensure visual hierarchy.
  • Custom Fonts: Allow users to upload their own fonts (premium feature consideration).
  • Default Fonts: A sensible default font pairing for new projects to guide users.

8. Iconography

  • Style: Clean, modern, flat or subtly outlined style for UI icons. Consistent visual language across the platform.
  • Simplicity: Icons should be easily recognizable and convey their meaning clearly.
  • Scalability: SVG format for UI icons to ensure crispness at any size.
  • Asset Library Icons: A vast, searchable library of diverse icons in various styles (line, solid, duotone) for infographic content.

9. Imagery & Graphics

  • Stock Photo Integration: Seamless access to a high-quality, royalty-free stock photo library (e.g., Unsplash, Pexels integration).
  • Illustration Library: Curated sets of modern illustrations for different themes.
  • Image Editing: Basic tools like crop, resize, filters, opacity adjustment.
  • Vector Graphics: Support for SVG uploads and manipulation for advanced users.

10. Color Palettes

The color palettes will be designed for professionalism, clarity, and visual appeal, with distinct options for the UI and for infographic content.

10.1. Primary UI Palette (Brand & Interface)

This palette will define the look and feel of the application's interface.

  • Primary Brand Color: A distinctive color for primary buttons, active states, and key highlights.

Example:* #2C7BE5 (A vibrant, professional blue)

  • Secondary Brand Color: A complementary color for less prominent actions or secondary elements.

Example:* #00BFA6 (A fresh teal/green)

  • Neutral Colors (Grays): Essential for text, backgrounds, borders, and disabled states.

* #F8F9FA (Lightest Gray - Backgrounds)

* #E9ECEF (Light Gray - Borders, Dividers)

* #CED4DA (Medium Light Gray - Input fields, inactive states)

* #6C757D (Medium Gray - Secondary text, icons)

* #343A40 (Dark Gray - Primary text, headings)

  • Success/Error/Warning: Standard semantic colors.

* #28A745 (Green - Success)

* #DC3545 (Red - Error)

* #FFC107 (Yellow - Warning)

10.2. Infographic Content Palettes (Data Visualization & Elements)

Users should have access to a variety of pre-defined, harmonious color palettes for their infographic elements and data visualizations. These should be easily swappable and customizable.

  • Professional & Corporate:

* #4A90E2, #50E3C2, #F5A623, #BD10E0, #7ED321, #D0021B

  • Vibrant & Modern:

* #FF6B6B, #FFD93D, #6BCB77, #4D96FF, #9966CC, #FF9900

  • Earthy & Organic:

* #8E7D6A, #C3B5A1, #E0CCB8, #6F8A7C, #A6C1B8, #4D5C53

  • Monochromatic (Blue example):

* #0A2A4E, #1A4B7D, #3A7ECB, #6DA8EB, #A1D4F3, #D4F0FC

Key Color Features:

  • Automatic Palette Generation: Suggest harmonious colors based on a primary selection.
  • Color Picker: Full range HSL/RGB/Hex input.
  • Eyedropper Tool: Pick colors directly from the canvas.
  • Brand Kit Integration: Allow users to save and apply their brand's specific color palettes.

User Experience (UX) Recommendations

11. Intuitive Workflow

  • Linear Process: Guide users through the creation process (e.g., "Choose Template" -> "Add Elements" -> "Customize" -> "Export").
  • Minimal Learning Curve: Design for users who may have no prior experience with design software.
  • Clear Labeling: Use plain language for all buttons, menus, and options.

12. Drag-and-Drop Functionality

  • Core Interaction: Enable seamless dragging of elements from the sidebar onto the canvas.
  • Intuitive Resizing/Rotation: Standard handles for manipulating elements.
  • Smart Guides: Automatic alignment guides (red lines) when elements are moved near each other or the canvas edges.

13. Real-time Preview & Editing

  • Instant Feedback: All changes (text, color, size, position) should be reflected on the canvas immediately.
  • WYSIWYG: What You See Is What You Get editor experience.

14. Undo/Redo & Version History

  • Robust History: Multiple levels of undo/redo functionality.
  • Version Control: (Future consideration) Ability to revert to previous saved versions of an infographic.

15. Contextual Menus & Tooltips

  • Right-Click Menus: Provide quick access to common actions for selected elements (e.g., "Duplicate," "Delete," "Send to Front/Back," "Group").
  • Informative Tooltips: Hovering over icons or complex controls should display helpful explanations.

16. Accessibility Considerations

  • Keyboard Navigation: Ensure all interactive elements are reachable and operable via keyboard.
  • Color Contrast: Adhere to WCAG guidelines for text and background color contrast to ensure readability.
  • Alt Text for Images: Provide a mechanism for users to add alternative text to images for screen readers (relevant for export).
  • Scalable Text: Allow browser text scaling without breaking layout.

17. Performance & Responsiveness

  • Optimized Loading: Ensure the editor loads quickly, especially the asset libraries.
  • Smooth Interactions: No lag during drag-and-drop, resizing, or complex operations.
  • Responsive Layout: While the primary editing experience will be desktop-focused, ensure the overall application and exported infographics are responsive for viewing on different devices.

18. Onboarding & Help

  • Interactive Tutorial: A brief, optional walkthrough for first-time users highlighting key features.
  • Contextual Help: Small "i" icons or question marks that link to relevant help articles.
  • Knowledge Base: A comprehensive, searchable help center.

19. Feedback & Error Handling

  • Clear Error Messages: Informative messages that explain what went wrong and how to fix it.
  • Success Notifications: Confirmations for saving, exporting, or other successful actions.
  • Progress Indicators: For longer operations like uploading large files or exporting high-resolution images.
gemini Output

This document outlines comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "Infographic Creator." The goal is to create an intuitive, powerful, and visually appealing tool that enables users to effortlessly design professional infographics.


Infographic Creator: Design Specifications

1. Core Functionality & Features

The Infographic Creator will be a web-based application designed for ease of use, offering robust features for creating a wide range of infographics.

1.1. Project Management

  • New Project Creation: Start from scratch or select a template.
  • Save/Load Projects: Cloud-based storage for user projects, allowing access from anywhere.
  • Project Duplication: Create copies of existing projects.
  • Project Deletion: Remove unwanted projects.

1.2. Canvas & Layout

  • Drag-and-Drop Editor: Intuitive interface for placing and arranging elements.
  • Resizable Canvas: Adjust infographic dimensions (width, height) to common presets (e.g., A4, US Letter, Social Media sizes) or custom dimensions.
  • Grid & Snap-to-Grid: Optional visual grid for precise alignment and spacing.
  • Alignment Tools: Distribute, align left/right/top/bottom/center, group/ungroup elements.
  • Layer Management: Bring forward/send backward elements, lock/unlock layers, hide/show layers.
  • Zoom & Pan: Control view of the canvas for detailed work.
  • Undo/Redo: Unlimited history for actions.

1.3. Content Elements

  • Text:

* Multiple text boxes (headings, subheadings, body text).

* Rich text editing: Font family, size, color, bold, italic, underline, alignment, line height, letter spacing, bullet points, numbering.

* Text presets (e.g., predefined heading styles).

  • Images:

* Upload images from local device.

* Integrated stock photo library (e.g., Unsplash, Pixabay integration).

* Image editing: Crop, resize, rotate, opacity, basic filters (grayscale, sepia, blur).

* Image frames/masks.

  • Icons:

* Extensive library of vector icons (e.g., Font Awesome, Noun Project integration).

* Search functionality for icons.

* Icon color, size, rotation, opacity.

  • Shapes:

* Basic shapes: Rectangles, circles, triangles, lines, arrows.

* Customizable properties: Fill color, border color, border thickness, corner radius.

  • Data Visualization (Charts & Graphs):

* Types: Bar charts, line charts, pie charts, donut charts, area charts, scatter plots.

* Data Input: Manual data entry, CSV import, Google Sheets integration (optional for V2).

* Customization: Colors, labels, axes, legends, data series, chart titles.

  • Backgrounds:

* Solid colors, gradients.

* Patterns, textures.

* Image backgrounds (full bleed, tiled).

1.4. Templates & Assets

  • Template Library: Curated collection of professional, industry-specific, and general-purpose infographic templates.

* Search and filter templates by category (e.g., timeline, process, data-driven, comparison).

* Preview templates before selection.

  • Asset Library: Store uploaded images, custom icons, and frequently used elements for quick access across projects.

1.5. Export & Sharing

  • Export Formats: PNG, JPG (for web), PDF (for print), SVG (for vector scalability).
  • Quality Options: Adjustable resolution/DPI for raster formats.
  • Download: Directly download the created infographic.
  • Share: Generate a shareable link (view-only) or embed code (optional).

2. Wireframe Descriptions

The following describes the main user interface (UI) screens and their primary components.

2.1. Dashboard / Project Selection Screen

  • Header:

* App Logo/Name (left).

* User Profile/Account Menu (right).

  • Main Content Area:

* "Create New Infographic" Button: Prominently displayed, leading to template selection or a blank canvas.

* "My Projects" Section:

* Grid or list view of saved projects.

* Each project card/row displays: Thumbnail, Project Name, Last Modified Date.

* Context menu (three dots) on each project for: Open, Duplicate, Delete, Rename.

* Search Bar: To find projects by name.

* Filtering/Sorting Options: By date, name, etc.

2.2. Editor Interface (Main Workspace)

  • Top Bar (Header):

* App Logo/Name: Links back to Dashboard.

* Project Title: Editable text field.

* Undo/Redo Buttons.

* Save Button: Auto-save indicator.

* Export Button: Opens export options modal.

* Help/Tutorials Button.

* User Profile/Account Menu.

  • Left Sidebar (Tools & Elements Panel):

* Tabs/Sections:

* Templates: Browse and apply templates.

* Text: Predefined text styles, add text box.

* Images: Upload, stock photos, asset library.

* Icons: Searchable icon library.

* Shapes: Basic geometric shapes.

* Charts: Data visualization types.

* Backgrounds: Solid, gradient, patterns, images.

* Uploads: User's uploaded assets.

  • Central Canvas Area:

* The main working area where the infographic is assembled.

* Interactive elements (text boxes, images, shapes, charts) can be dragged, resized, rotated, and positioned.

* Visual guides for alignment and spacing.

* Zoom controls (bottom right or bottom bar).

  • Right Sidebar (Properties Panel):

* Contextual Panel: Displays properties of the currently selected element.

* Sections:

* Position & Size: X/Y coordinates, width, height, rotation.

* Styling:

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

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

For Images*: Opacity, filters, crop.

For Charts*: Data input, chart type, colors, labels, axes.

* Arrangement: Bring forward, send backward, group, ungroup, lock.

* Opacity.

* Link: Add hyperlink (for PDF export).

  • Bottom Bar (Canvas Controls):

* Zoom Slider/Percentage Input.

* Grid Toggle.

* Layers Panel Toggle (optional, could be part of Left/Right sidebar).

2.3. Template Browser Modal/Screen

  • Header: "Browse Templates", Close button.
  • Category Filters: (e.g., "Timeline", "Process", "Comparison", "Statistical", "Blank").
  • Search Bar.
  • Template Grid: Thumbnails of templates with names.
  • Preview: Hovering or clicking a template shows a larger preview.
  • "Use Template" Button: Applies the selected template to the canvas.

2.4. Export Options Modal

  • Header: "Export Infographic", Close button.
  • Format Selection: Radio buttons/dropdown for PNG, JPG, PDF, SVG.
  • Quality/Resolution Slider/Input: For raster formats (e.g., 72dpi, 150dpi, 300dpi).
  • Background Transparency Toggle: For PNG.
  • Page Range Selection: If multi-page infographic (for PDF).
  • "Download" Button.

3. Color Palettes

Professional and appealing color palettes are crucial for a visually engaging infographic creator. We will offer a default modern palette and suggest alternatives.

3.1. Default Palette: "Modern Professional"

This palette is clean, trustworthy, and versatile, suitable for corporate, educational, and general-purpose infographics.

  • Primary Accent: #4A90E2 (Bright Blue - for interactive elements, primary buttons, key data points)
  • Secondary Accent: #50E3C2 (Aqua Green - for highlights, secondary call-to-actions, contrasting data)
  • Text & UI Elements:

* #333333 (Dark Gray - for primary text, strong headings)

* #666666 (Medium Gray - for secondary text, labels)

  • Backgrounds & Neutrals:

* #FFFFFF (White - main canvas background, clean areas)

* #F5F7FA (Light Gray - subtle background for panels, inactive states)

* #E0E0E0 (Border Gray - for dividers, borders)

  • Success/Error:

* #28A745 (Success Green)

* #DC3545 (Error Red)

3.2. Alternative Palette 1: "Vibrant & Creative"

A more energetic palette, suitable for marketing, creative, or youth-oriented content.

  • Primary Accent: #FF6B6B (Coral Red)
  • Secondary Accent: #FFD166 (Sunny Yellow)
  • Tertiary Accent: #118AB2 (Deep Teal)
  • Text & UI Elements: #264653 (Dark Blue-Gray), #495057 (Charcoal)
  • Backgrounds & Neutrals: #F4F8FA (Off-White), #E9ECEF (Light Cool Gray)

3.3. Alternative Palette 2: "Minimalist & Elegant"

Focuses on subdued tones with a sophisticated touch, ideal for high-end, luxury, or artistic infographics.

  • Primary Accent: #8D6A9F (Muted Violet)
  • Secondary Accent: #A8DADC (Soft Cyan)
  • Text & UI Elements: #212529 (Darkest Gray), #495057 (Charcoal)
  • Backgrounds & Neutrals: #F8F9FA (Very Light Gray), #E9ECEF (Light Gray), #CED4DA (Medium Light Gray)

4. UX Recommendations

User experience is paramount for an intuitive and efficient infographic creator.

4.1. Intuitive Interaction

  • Drag-and-Drop Excellence: Ensure smooth, responsive drag-and-drop for all elements on the canvas.
  • Contextual Menus/Panels: The right sidebar (Properties Panel) should dynamically update based on the selected element, showing only relevant options.
  • Clear Visual Hierarchy: Use size, color, and spacing to guide the user's eye and indicate importance of UI elements.
  • Standard Iconography: Use widely recognized icons for common actions (e.g., save, export, undo, redo, delete, group).

4.2. Feedback & Responsiveness

  • Instant Visual Feedback:

* Highlight selected elements with a clear bounding box and resize handles.

* Show alignment guides when dragging elements near others or the canvas center/edges.

* Provide loading indicators for operations like image uploads or template loading.

  • Snapping & Alignment: Implement smart guides that appear when elements are aligned with each other or the canvas, promoting precise layouts.
  • Undo/Redo History: Clearly show the current state in the undo/redo stack, allowing users to revert multiple steps.

4.3. Efficiency & Productivity

  • Keyboard Shortcuts: Implement common shortcuts for copy, paste, cut, duplicate, group, ungroup, undo, redo, save.
  • Quick Access Toolbar (Contextual): A small, floating toolbar that appears near a selected element for frequently used actions (e.g., duplicate, delete, bring to front).
  • Templates & Presets: Provide a rich library of templates and element presets (e.g., text styles, chart types) to jumpstart creation and maintain consistency.
  • Batch Actions: Allow selection of multiple elements for simultaneous styling, grouping, or alignment.

4.4. Consistency & Accessibility

  • Consistent UI Elements: Buttons, dropdowns, sliders, and input fields should maintain a consistent look and behavior throughout the application.
  • Predictable Navigation: The layout of the editor (top bar, left sidebar, canvas, right sidebar) should remain consistent.
  • Accessibility Standards:

* Ensure sufficient color contrast for text and UI elements (WCAG AA compliance).

* Provide clear focus states for keyboard navigation.

* Use ARIA attributes where necessary for screen reader compatibility.

* Allow for adjustable font sizes in the UI if possible.

  • Error Prevention & Recovery:

* Confirmation dialogs for destructive actions (e.g., deleting a project or element).

* Clear and actionable error messages for failed operations (e.g., upload limits, invalid data).

4.5. Performance

  • Optimized Asset Loading: Lazy load templates and assets to ensure a fast initial load time.
  • Smooth Canvas Rendering: Optimize rendering performance to prevent lag, especially with many elements or high-resolution images.
  • Efficient Data Handling: Ensure data input for charts and saving/loading projects is quick and responsive.

By adhering to these detailed design specifications, wireframe descriptions, color palettes, and UX recommendations, the Infographic Creator will provide a professional, user-friendly, and powerful tool for generating impactful visual content.

gemini Output

Final Design Assets: Infographic Creator

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the Infographic Creator. The goal is to deliver a professional, intuitive, and visually appealing tool that empowers users to create high-quality infographics with ease and efficiency.


1. Design Vision & Guiding Principles

The Infographic Creator aims to be a robust yet user-friendly platform, balancing powerful customization with an intuitive drag-and-drop interface. Our design principles are centered around:

  • Clarity & Simplicity: Clean layouts and straightforward interactions to reduce cognitive load.
  • Flexibility & Customization: Empowering users with extensive options while maintaining ease of use.
  • Visual Appeal: Ensuring both the creator's interface and the generated infographics are aesthetically pleasing.
  • Accessibility: Designing for a broad audience with diverse needs.
  • Efficiency: Streamlined workflows to help users create infographics quickly.

2. Detailed Design Specifications

2.1. Layout and Grid System

The design will utilize a flexible, responsive 12-column grid system, primarily targeting desktop environments for creation, but with consideration for previewing on smaller devices.

  • Main Canvas Area: Dynamic, resizable, and zoomable, occupying the central and largest portion of the screen.
  • Side Panels (Left/Right): Fixed width (e.g., 280-320px) for asset libraries, layers, and property inspectors. Collapsible/expandable to maximize canvas space.
  • Top Navigation Bar: Fixed height (e.g., 64px) for global actions (save, undo/redo, preview, export) and branding.
  • Bottom Status Bar (Optional): For zoom level, page count, or quick toggles.

2.2. Typography

A clean, modern, and highly readable font stack will be used to ensure clarity across the UI and within the infographics themselves.

  • Primary UI Font (Sans-serif): Inter or Roboto (for excellent readability and versatility across various weights).

* Headings (UI): Semibold to Bold (e.g., 24px, 18px, 16px)

* Body Text (UI): Regular (e.g., 14px, 13px)

* Labels/Captions (UI): Regular to Medium (e.g., 12px)

  • Infographic Content Fonts: A curated selection of professional fonts will be available for users to choose from for their infographic content, including:

* Sans-serif: Open Sans, Lato, Montserrat

* Serif: Merriweather, Playfair Display

* Display/Accent: Oswald, Poppins (for impactful titles)

  • Font Sizing (Relative): Use rem or em units where appropriate for better scalability and accessibility.

2.3. Iconography

A consistent, modern icon set will be used throughout the application.

  • Style: Line-based (stroke weight 1.5px-2px) with rounded corners for a friendly yet professional feel. Filled icons can be used sparingly for active states or critical actions.
  • Set: Material Design Icons, Font Awesome Pro, or a custom-designed set for core functionalities.
  • Color: Primarily dark gray or accent color for interactive icons.
  • Consistency: All icons within the UI must adhere to the chosen style, size, and visual weight.
  • Examples: + (add), edit, delete, save, upload, download, undo, redo, group, ungroup, layers, text, image, chart, shape.

2.4. Imagery and Illustrations

  • Placeholder Imagery: Use neutral, high-quality stock photography or abstract patterns for image placeholders within templates.
  • Data Visualization: Implement a library of modern, clear, and customizable chart types (bar, line, pie, donut, area, scatter, bubble, radar, etc.) with options for color, labels, and data input.
  • Onboarding/Empty States: Custom, friendly illustrations can be used to guide new users, explain features, or indicate empty states (e.g., "No projects yet!"). These should align with the overall brand aesthetic.

2.5. Component Library (Key UI Elements)

A consistent library of UI components will ensure a cohesive user experience.

  • Buttons: Primary (filled, accent color), Secondary (outlined), Tertiary (text-only), Icon buttons. States: Default, Hover, Active, Disabled, Loading.
  • Input Fields: Text inputs, number inputs, dropdowns (select), checkboxes, radio buttons, sliders. States: Default, Focus, Error, Disabled.
  • Tooltips & Modals: Clear, concise, and non-intrusive for additional information or critical actions.
  • Tabs & Accordions: For organizing content within side panels.
  • Sliders & Color Pickers: Intuitive controls for property adjustments.
  • Drag-and-Drop Handles: Clearly visible indicators for resizing, rotating, and repositioning elements on the canvas.
  • Context Menus: Right-click menus for quick actions on selected elements.
  • Notifications/Toasts: Subtle, non-blocking messages for success, warning, or error states.

3. Wireframe Descriptions (Key Screens/Views)

3.1. Dashboard / Project Management

  • Layout: Grid-based display of "My Projects" (infographic drafts/completed), "Templates," and "Shared with Me."
  • Header: Brand logo, search bar, user profile/settings, "Create New Infographic" button (prominent).
  • Project Cards: Each card displays a thumbnail preview, title, last modified date, and quick action icons (edit, duplicate, delete, share).
  • Template Library: Categorized filters (e.g., Business, Marketing, Education, Health), search, and preview mode for templates.
  • Empty State: Friendly illustration and a call to action to "Create your first infographic."

3.2. Infographic Editor (Main Canvas)

  • Central Canvas: Large, interactive area for designing the infographic. Supports zooming, panning, and multi-selection. Rulers and guides (snap-to-grid, smart guides) are toggleable.
  • Top Bar:

* Left: Logo/Home link, Project Title (editable), Save status (Saved/Unsaved).

* Center: Global actions: Undo, Redo, Preview, Share, Export.

* Right: Zoom controls, Fit to screen, User profile.

  • Left Sidebar (Asset Library / Elements Panel):

* Sections: Text, Images, Shapes, Icons, Charts, Data, My Uploads, Templates.

* Drag-and-Drop: Elements are draggable directly onto the canvas.

* Search/Filters: Within each section to find specific assets.

  • Right Sidebar (Properties Panel / Layers Panel):

* Contextual: Displays properties of the currently selected element(s) (e.g., font, color, size, position, opacity, rotation, alignment, layer order).

* Layers Tab: Hierarchical view of all elements on the canvas, allowing reordering, locking, and visibility toggling.

* Canvas Settings Tab: Global settings for the infographic (e.g., canvas size, background color, grid settings).

3.3. Template Selection / Creation Flow

  • Initial Screen: After clicking "Create New," present options: "Start from Scratch" or "Choose a Template."
  • Template Browser: Similar to the Dashboard's template library, but with a clear "Use This Template" action.
  • Template Preview: Clicking a template shows a larger preview with more details before selection.

3.4. Preview and Export Screen

  • Full-Screen Preview: Shows the infographic exactly as it will be exported, without editor UI elements.
  • Export Options Panel (Sidebar/Modal):

* Format: PNG, JPG, SVG, PDF (with quality/resolution options).

* Quality/Resolution: Slider or dropdown (e.g., Low, Medium, High, Custom DPI).

* Background: Transparent or Solid color.

* Page Range: For multi-page infographics.

* Download Button: Prominent call to action.

  • Sharing Options: Direct link, embed code, social media sharing.

4. Color Palettes

A harmonious and functional color palette is crucial for both the UI and the generated infographics.

4.1. Primary UI Palette (Brand Colors)

These colors define the look and feel of the Infographic Creator application itself.

  • Primary Blue: #2176FF (A vibrant, trustworthy blue for primary actions, branding, and key interactive elements)
  • Secondary Accent Green: #00C853 (A fresh, positive green for success states, secondary calls to action, or highlights)
  • Neutral Dark Gray: #333333 (For primary text, icons, and strong outlines)
  • Neutral Light Gray: #F5F5F5 (For backgrounds, subtle dividers, and disabled states)
  • White: #FFFFFF (For backgrounds, card elements, and canvas area)

4.2. Grayscale Palette (UI Elements)

For text, borders, shadows, and subtle background variations.

  • Darkest Gray (Text): #333333
  • Medium Gray (Borders/Icons): #666666
  • Light Gray (Secondary Text/Placeholders): #999999
  • Lighter Gray (Disabled/Dividers): #CCCCCC
  • Even Lighter Gray (Backgrounds): #E0E0E0
  • Lightest Gray (Hover/Selected Backgrounds): #F0F0F0

4.3. Data Visualization Palette

A diverse yet cohesive set of colors optimized for charts and graphs, ensuring good contrast and accessibility. Users will have the option to customize these.

  • #2176FF (Primary Blue)
  • #00C853 (Accent Green)
  • #FFC107 (Amber - for warnings or secondary data)
  • #FF5252 (Red - for errors or critical data)
  • #673AB7 (Deep Purple)
  • #00BCD4 (Cyan)
  • #FF9800 (Orange)
  • #4CAF50 (Darker Green)
  • #E91E63 (Pink)
  • #795548 (Brown)

Note: This palette should be designed to be colorblind-friendly where possible, and users should have options to select alternative palettes.

4.4. Semantic Colors

For system messages and feedback.

  • Success: #00C853 (Green)
  • Warning: #FFC107 (Amber)
  • Error: #FF5252 (Red)
  • Info: #2196F3 (Standard Blue)

5. UX Recommendations

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

  • Interactive Tutorial: A brief, optional walkthrough highlighting key features (drag-and-drop, property panel, export).
  • Guided Template Selection: Prompt new users to choose a template relevant to their goal.
  • Contextual Help: Tooltips on hover for complex features, and a dedicated "Help" section with FAQs and video tutorials.

5.2. Drag-and-Drop & Direct Manipulation

  • Seamless Interaction: All elements (text boxes, images, shapes, charts) should be easily draggable from the asset library onto the canvas.
  • Resizing & Rotation: Intuitive handles on selected elements for direct manipulation.
  • Alignment & Distribution: Smart guides and alignment tools (snap-to-grid, distribute horizontally/vertically) for precise placement.

5.3. Real-time Preview & Feedback

  • "What You See Is What You Get" (WYSIWYG): The canvas should accurately reflect the final output.
  • Instant Updates: Changes made in the properties panel should immediately render on the canvas.
  • Undo/Redo History: Robust undo/redo functionality with a history panel for advanced users.

5.4. Robust Templating System

  • Variety: Offer a wide range of professionally designed, customizable templates across various categories.
  • User-Created Templates: Allow users to save their own designs as templates for future use or sharing.
  • Smart Content Fields: Templates can include placeholders for data or text that users can easily fill in.

5.5. Efficient Asset Management

  • Organized Libraries: Clearly categorized sections for different asset types (icons, shapes, charts, uploaded images).
  • Search & Filters: Powerful search capabilities within asset libraries.
  • "My Uploads" Section: Easy access to user-specific images and files.

5.6. Granular Customization & Control

  • Comprehensive Properties Panel: Provide extensive options for styling every aspect of an element (color, gradient, border, shadow, opacity, font, line height, letter spacing, etc.).
  • Data Integration: Simple ways to input data for charts (manual entry, CSV upload, Google Sheets integration).
  • Layer Management: An intuitive layers panel for complex designs, allowing users to lock, hide, group, and reorder elements.

5.7. Flexible Export Options

  • Multiple Formats: Support for high-resolution PNG, JPG, SVG, and PDF.
  • Quality Control: Options for resolution, compression, and background transparency.
  • Sharing: Direct links, embed codes, and social media sharing integration.

5.8. Accessibility Considerations

  • High Contrast: Ensure sufficient color contrast for text and interactive elements (WCAG 2.1 AA compliance).
  • Keyboard Navigation: All interactive elements should be reachable and operable via keyboard.
  • Alt Text: Provide fields for users to add alt text to images within their infographics.
  • Scalable Text: Allow for browser text scaling without breaking the layout.

5.9. Collaboration Features (Future Consideration)

  • Share & Edit: Ability to invite others to view or edit an infographic.
  • Comments: In-
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);}});}