Data Visualization Suite
Run ID: 69cccac93e7fb09ff16a51a02026-04-01Analytics
PantheraHive BOS
BOS Dashboard

Data Visualization Suite: Research & Design Requirements - Step 1 of 3

Project: Data Visualization Suite

Workflow Step: Research & Design Requirements

Date: October 26, 2023

Deliverable: Detailed Design Specifications, Wireframe Descriptions, Color Palettes, and UX Recommendations


1. Introduction & Project Overview

This document outlines the foundational design requirements for the Data Visualization Suite. As the first step in our workflow, "Research & Design Requirements," this deliverable sets the strategic and aesthetic direction for the suite, ensuring a professional, intuitive, and highly functional user experience. Our goal is to create a robust, scalable, and user-centric platform that empowers users to transform complex data into actionable insights through compelling visualizations.

2. Core Design Principles

The Data Visualization Suite will be built upon the following core design principles to ensure a superior user experience and powerful analytical capabilities:

  • Clarity & Readability: Visualizations and interface elements must be clean, uncluttered, and easy to interpret, minimizing cognitive load.
  • Interactivity & Engagement: Users should be able to dynamically explore data, apply filters, drill down, and interact with visualizations to uncover deeper insights.
  • Consistency & Predictability: A uniform design language, interaction patterns, and terminology across the suite will enhance learnability and user confidence.
  • Scalability & Performance: The design must accommodate diverse data volumes and types while maintaining optimal performance and responsiveness.
  • Customization & Flexibility: Users should have robust options to tailor dashboards, visualizations, and data presentations to their specific needs.
  • Accessibility & Inclusivity: Adherence to accessibility standards (WCAG 2.1 AA) to ensure the suite is usable by individuals with diverse abilities.
  • Security & Data Integrity: Design considerations will implicitly support robust security features and ensure data accuracy.

3. Detailed Design Specifications

3.1. Target Audience

The Data Visualization Suite is designed for a broad spectrum of users, including:

  • Business Analysts: For in-depth data exploration, trend identification, and report generation.
  • Executives & Managers: For high-level performance monitoring, strategic decision-making, and quick insight consumption.
  • Data Scientists & Researchers: For validating hypotheses, exploring complex datasets, and presenting findings.
  • Operational Teams: For real-time monitoring of key performance indicators (KPIs) and operational efficiency.

3.2. Key Features & Modules

  • Dashboard Management:

* Create/Edit/Delete Dashboards: Intuitive interface for building and modifying custom dashboards.

* Layout Options: Flexible grid-based and free-form layout managers for widgets.

* Templating: Pre-built dashboard templates for common use cases (e.g., Sales Performance, Marketing Analytics, Financial Overview).

* Versioning: Ability to save and revert to previous dashboard versions.

  • Data Source Integration:

* Connectors: Support for various data sources (e.g., SQL databases, NoSQL databases, cloud data warehouses, APIs, flat files like CSV/Excel).

* Data Preview & Schema Detection: Ability to preview data and automatically detect data types.

* Data Blending: Capability to combine data from multiple sources within a single dashboard/visualization.

* Scheduled Refresh: Configuration for automatic data updates.

  • Visualization Library:

* Extensive Chart Types: Bar charts, line charts, pie/donut charts, scatter plots, bubble charts, heatmaps, treemaps, gauge charts, funnel charts, bullet graphs, maps (choropleth, point), tables, KPIs, text boxes.

* Customization Options: Granular control over colors, labels, axes, legends, tooltips, and data formatting.

* Drill-down & Drill-through: Seamless navigation from summary to detailed data.

* Trend Lines & Forecasting: Basic analytical overlays for time-series data.

  • Interactivity & Filtering:

* Global Filters: Apply filters across an entire dashboard.

* Widget-Specific Filters: Apply filters to individual visualizations.

* Cross-Filtering: Selecting data points in one visualization filters data in others.

* Parameter Controls: User-input parameters to dynamically change calculations or views.

* Hover-over Tooltips: Display detailed data on interaction.

  • Collaboration & Sharing:

* Secure Sharing: Share dashboards with specific users or groups with defined permissions.

* Public/Embeddable Links: Option to generate secure, shareable links or embed visualizations into external applications (with appropriate access controls).

* Comments & Annotations: Allow users to add context or discuss insights directly on dashboards.

  • Export & Reporting:

* Export Formats: Export dashboards/visualizations to PDF, PNG, JPEG, CSV, Excel.

* Scheduled Reports: Configure and schedule automated email delivery of reports.

  • User Management & Permissions:

* Role-Based Access Control (RBAC): Define granular permissions for creating, viewing, editing, and sharing dashboards and data sources.

* User & Group Management: Admin interface for managing users and assigning roles.

  • Responsiveness:

* Adaptive Layouts: Dashboards should adapt gracefully to various screen sizes (desktop, tablet, mobile).

* Touch-Friendly Interactions: Optimized for touch input on mobile devices.

3.3. Technical Considerations (Design Impact)

  • Performance Optimization: Design will prioritize efficient rendering of visualizations, lazy loading of data, and optimized data querying to ensure fast load times.
  • API-First Approach: The UI design will assume underlying APIs for all data interactions and management functions, ensuring modularity and extensibility.

4. Wireframe Descriptions (Conceptual Layouts)

The following descriptions outline the conceptual layout and key components for primary screens within the Data Visualization Suite. These are functional blueprints, focusing on content hierarchy and interaction points.

4.1. Login/Authentication Screen

  • Layout: Centered, minimalist design.
  • Components:

* Branded header/logo.

* Input fields for "Username/Email" and "Password."

* "Remember Me" checkbox.

* "Forgot Password" link.

* Primary "Login" button.

* Optional: Single Sign-On (SSO) options (Google, Azure AD, Okta).

  • UX Focus: Simplicity, security, clear error messaging.

4.2. Main Dashboard Overview Screen

  • Layout:

* Top Header: Global navigation (Home, Dashboards, Data Sources, Admin), user profile (settings, logout), search bar for dashboards.

* Left Sidebar (Collapsible): Main navigation menu (e.g., "My Dashboards," "Shared with Me," "Templates," "Favorites").

* Main Content Area: Grid or list view of available dashboards.

  • Components:

* Dashboard Cards/Tiles: Each card displays dashboard title, last modified date, owner, a small preview image/icon, and quick action buttons (view, edit, share, delete).

* Filtering/Sorting: Options to filter dashboards by owner, tags, date, or sort by name, last modified.

* "Create New Dashboard" Button: Prominently placed.

  • UX Focus: Easy discoverability, quick access to frequently used dashboards, clear categorization.

4.3. Dashboard Editor/Builder Screen

  • Layout:

* Top Header: Dashboard title, save/discard buttons, preview mode toggle, share button, export button.

* Left Sidebar (Collapsible):

* Widget Library: Categorized list of available visualization types (e.g., Charts, Tables, KPIs, Text).

* Data Fields Panel: List of available data fields from connected sources, allowing drag-and-drop.

* Main Canvas: Interactive grid or free-form area where widgets are dragged and dropped. Each widget has resize handles and a context menu (edit, duplicate, delete).

* Right Sidebar (Contextual, Collapsible):

* Widget Configuration Panel: Appears when a widget is selected. Contains options for data mapping, chart type, colors, axes, filters, interactions.

* Dashboard Settings Panel: Appears when no widget is selected. Contains options for dashboard background, global filters, theme.

  • Components:

* Drag-and-Drop Functionality: For adding widgets and mapping data fields.

* Real-time Preview: Changes in configuration immediately reflect on the canvas.

* Undo/Redo: Standard editing functionality.

  • UX Focus: Intuitive drag-and-drop, immediate feedback, organized configuration options, flexible layout.

4.4. Data Source Connection Screen

  • Layout: Wizard-like, multi-step flow.
  • Components:

* Step 1: Choose Data Source Type: Grid of icons for various connectors (e.g., SQL Server, PostgreSQL, MySQL, Google Analytics, Salesforce, CSV).

* Step 2: Connection Details: Input fields for server address, port, username, password, database name, API keys, etc. (contextual based on type).

* Step 3: Data Selection/Query: Interface to select tables/views or write custom queries.

* Step 4: Preview & Save: Display a sample of the data, confirm schema, and save the connection.

  • UX Focus: Guided process, clear instructions, connection testing feature, secure input fields.

5. Color Palettes

A cohesive and accessible color palette is crucial for both brand identity and effective data communication.

5.1. Primary Interface Palette

  • Purpose: Core UI elements, backgrounds, text, and active states.
  • Colors:

* Primary Blue (e.g., #0056B3): For primary actions, brand identity, active states.

* Dark Gray (e.g., #343A40): Main text, primary icons.

* Medium Gray (e.g., #6C757D): Secondary text, disabled states, borders.

* Light Gray (e.g., #F8F9FA): Backgrounds for panels, secondary sections.

* White (#FFFFFF): Main content backgrounds, contrast.

  • Rationale: Professional, clean, and provides a strong contrast for readability. The blue adds a touch of trustworthiness and dynamism.

5.2. Secondary Accent Palette

  • Purpose: Interactive elements, highlights, secondary actions, indicators.
  • Colors:

* Accent Green (e.g., #28A745): Success messages, positive indicators.

* Accent Orange (e.g., #FFC107): Warning messages, attention-grabbing elements.

* Accent Red (e.g., #DC3545): Error messages, critical actions.

* Accent Purple (e.g., #6F42C1): Optional alternative for specific interactive elements or secondary branding.

  • Rationale: Provides clear visual cues for different states and actions, enhancing usability and immediate feedback.

5.3. Data Visualization Palette

  • Purpose: Representing data points in charts and graphs. Must be distinct, harmonious, and accessible.
  • Categorical Data Palette (e.g., for distinct categories):

* A set of 8-12 distinct colors, ensuring high contrast for colorblind users (e.g., using tools like ColorBrewer or custom-designed palettes).

* Example sequence: #1f77b4 (blue), #ff7f0e (orange), #2ca02c (green), #d62728 (red), #9467bd (purple), #8c564b (brown), #e377c2 (pink), #7f7f7f (gray), #bcbd22 (yellow-green), #17becf (cyan).

  • Sequential Data Palette (e.g., for gradients representing magnitude):

* A gradient from light to dark or a single hue (e.g., light blue to dark blue: #DEEBF7 -> #9ECAE1 -> #4292C6 -> #08519C).

  • Diverging Data Palette (e.g., for deviations from a central value):

* A central neutral color diverging to two contrasting hues (e.g., red-white-blue: #A50026 -> #FDDBC7 -> #FFFFFF -> #D1E5F0 -> #313695).

  • Rationale: Prioritizes data legibility and interpretability. Emphasis on colorblind-friendly options and intuitive mapping to data types (e.g., warm colors for higher values, cool for lower).

6. User Experience (UX) Recommendations

6.1. Clarity & Simplicity

  • Minimalist Interface: Reduce visual clutter, allowing data to be the focal point.
  • Progressive Disclosure: Show only relevant options at any given time, revealing more complex settings as needed.
  • Clear Labeling: Use descriptive and concise labels for all UI elements, charts, and data points.

6.2. Consistency

  • Uniform UI Elements: Standardize buttons, icons, input fields, and typography across the entire suite.
  • Predictable Interactions: Consistent behavior for common actions (e.g., clicking a filter, dragging a widget).
  • Shared Terminology: Use consistent language for data fields, chart types, and actions to avoid confusion.

6.3. Interactivity & Feedback

  • Immediate Feedback: Provide visual cues for user actions (e.g., hover states, active states, loading spinners).
  • Real-time Updates: When possible, changes to filters or data sources should update visualizations instantly.
  • Contextual Tooltips: Offer informative tooltips on hover for data points, complex icons, or configuration options.
  • Undo/Redo Functionality: Essential for dashboard editing to allow users to experiment without fear of irreversible mistakes.

6.4. Accessibility

  • WCAG 2.1 AA Compliance: Adhere to guidelines for perceivable, operable, understandable, and robust design.
  • Keyboard Navigation: Ensure all interactive elements are reachable
gemini Output

Data Visualization Suite: Design Specifications & UX Recommendations

This document outlines the detailed design specifications, wireframe descriptions, color palette, and user experience (UX) recommendations for the proposed Data Visualization Suite. The goal is to create an intuitive, powerful, and aesthetically pleasing platform that empowers users to explore, understand, and act upon their data effectively.


1. Detailed Design Specifications

The Data Visualization Suite will be a modular, interactive platform designed to cater to various analytical needs. It will comprise several key components and functionalities:

1.1 Core Dashboards & Modules

  • Executive Overview Dashboard:

* Purpose: Provide a high-level summary of key performance indicators (KPIs) and trends.

* Visualizations:

* Large, prominent KPI cards with current value, comparison to previous period (e.g., % change), and sparkline trends.

* High-level aggregate charts (e.g., total revenue, total users) with drill-down capabilities.

* Geographic heatmaps or choropleth maps for regional performance.

* Top N lists (e.g., Top 5 products, Top 5 regions).

* Interactivity: Time-range selectors, drill-down on KPIs, filter by major segments.

  • Performance Analytics Module:

* Purpose: Deep dive into specific performance metrics, allowing detailed analysis.

* Visualizations:

* Line charts for time-series analysis (e.g., daily sales, website traffic).

* Bar charts for categorical comparisons (e.g., sales by product category, user acquisition channels).

* Stacked bar/area charts for part-to-whole relationships over time.

* Scatter plots for correlation analysis.

* Data tables with sorting, filtering, and pagination for detailed record review.

* Interactivity: Granular time-range selectors (daily, weekly, monthly, quarterly, yearly, custom), multiple filter options (dimensions, measures), zoom/pan on charts, data export (CSV, PNG, PDF).

  • Trend Analysis & Forecasting Module:

* Purpose: Identify patterns, predict future outcomes, and understand historical context.

* Visualizations:

* Advanced line charts with trend lines (linear regression, moving averages).

* Forecast charts (e.g., ARIMA, Prophet models) with confidence intervals.

* Comparison charts for year-over-year, quarter-over-quarter analysis.

* Anomaly detection visualizations highlighting unusual data points.

* Interactivity: Toggle trend lines/forecasts, adjust forecast horizon, compare different time periods.

  • Custom Report Builder:

* Purpose: Empower users to create their own dashboards and reports from available data sources.

* Functionality:

* Drag-and-Drop Interface: Users can select data fields (dimensions, measures) and drag them onto a canvas.

* Visualization Selector: Choose from a gallery of chart types (bar, line, pie, scatter, table, KPI card, etc.).

* Filter & Sort Controls: Apply dynamic filters, define sorting logic.

* Layout Manager: Arrange visualizations on a grid-based or free-form canvas.

* Save & Share: Save custom reports, share with teams, set permissions.

* Data Source Selection: Ability to select from pre-configured data sources.

1.2 Core Functionalities & Features

  • Interactive Filters: Global and local filters for dimensions (e.g., product, region, user segment) and measures (e.g., min/max values).
  • Time-Range Selectors: Predefined (e.g., Last 7 days, This Month) and custom date ranges.
  • Drill-Down/Up Capabilities: Click on a data point to view more granular data or roll up to a higher level.
  • Tooltips & On-Hover Details: Provide additional context and data values when hovering over chart elements.
  • Data Export: Export charts (PNG, JPEG, SVG), data tables (CSV, Excel), and entire dashboards (PDF).
  • Scheduled Reporting: Ability to schedule automated email delivery of reports/dashboards.
  • Alerting System: Define thresholds for KPIs and receive notifications when breached.
  • User & Role Management: Control access to specific dashboards, data sources, and functionalities based on user roles.
  • Responsive Design: Optimized for various screen sizes (desktop, tablet, mobile).
  • Accessibility: Adherence to WCAG 2.1 guidelines for color contrast, keyboard navigation, and screen reader compatibility.

2. Wireframe Descriptions

The wireframes will prioritize a clean, uncluttered interface, ensuring data is the central focus.

2.1 Global Layout Structure

  • Header (Top Bar):

* Left: Suite Logo, Application Title ("Data Visualization Suite").

* Center: Global Search Bar (for dashboards, reports, data points).

* Right: User Profile/Settings (Avatar, Username, Logout), Notifications Icon, Help/Feedback Icon.

  • Sidebar Navigation (Left Panel):

* Collapsible/Expandable.

* Main Navigation Items: Executive Overview, Performance Analytics, Trend Analysis, Custom Reports, Data Sources, Settings.

* Sub-items: (e.g., under Performance Analytics: Sales Performance, Marketing Performance, Operations Performance).

* Active link clearly highlighted.

  • Main Content Area:

* Occupies the majority of the screen.

* Dynamically loads selected dashboard or module content.

* Dashboard Title: Prominent title indicating the current view.

* Control Panel (Top of Content Area):

* Global time-range selector.

* Primary filters (e.g., "Region," "Product Category").

* Export/Share buttons.

* Visualization Grid/Layout: Arranges charts, tables, and KPI cards in a responsive grid. Each visualization will have its own title, options menu (e.g., export, maximize), and interactive elements.

2.2 Dashboard Specific Layouts

  • Executive Overview Dashboard:

* Top Row: 3-5 large KPI cards (e.g., Total Revenue, New Users, Conversion Rate) with sparklines and comparison percentages.

* Middle Section: 1-2 prominent full-width charts (e.g., Overall Revenue Trend, Geographic Performance Map).

* Bottom Section: 2-3 smaller, comparative charts or top N lists (e.g., Top Products by Revenue, Customer Acquisition Channels).

* Layout designed for quick scanning and immediate insights.

  • Performance Analytics Module:

* Filter Panel (Left/Top): A dedicated area for detailed filters (checkboxes, dropdowns, range sliders) that can be expanded/collapsed.

* Chart Area (Main): A flexible grid allowing multiple charts to be displayed simultaneously, or a single large chart with tabs for different views.

* Data Table (Below Charts): A scrollable, sortable, and filterable data table providing the underlying data for the displayed charts.

* Emphasis on granular control and detailed data exploration.

  • Custom Report Builder:

* Left Panel: Data Source explorer (lists available dimensions and measures).

* Center Canvas: Drag-and-drop area where users build their report. Grid lines will assist with alignment.

* Right Panel: Configuration panel for selected visualization (chart type, axis labels, colors, filters specific to the chart).

* Top Bar: Save, Share, Preview, Undo/Redo actions.

* Designed for intuitive report creation with immediate visual feedback.


3. Color Palettes

The chosen color palette aims for professionalism, clarity, and accessibility, ensuring data stands out without being overwhelming.

3.1 Primary Brand Palette

  • Primary Blue: #007BFF (A strong, trustworthy blue for primary actions, navigation highlights, and key brand elements).
  • Secondary Accent Green: #28A745 (A vibrant green for success indicators, positive trends, and secondary calls to action).
  • Neutral Grey: #6C757D (For secondary text, borders, inactive states, and backgrounds that need to recede).
  • Background White: #FFFFFF (Clean, crisp background for content areas).
  • Dark Text/Primary Text: #343A40 (High contrast for readability).

3.2 Data Visualization Palette

A carefully curated sequential and divergent color palette will be used for charts, ensuring distinctiveness and meaning.

  • Sequential Palette (for quantitative data, e.g., sales volume):

* Lightest: #E0F2F7

* Mid-Light: #B3DDE5

* Mid: #85C7D3

* Mid-Dark: #5AB1C1

* Darkest: #2E9BB0 (or a variation of the Primary Blue)

Alternative:* A gradient of blues or greens for single-series data.

  • Categorical Palette (for distinct categories, e.g., product types):

* Blue: #007BFF

* Green: #28A745

* Orange: #FFC107

* Red: #DC3545

* Purple: #6F42C1

* Teal: #20C997

* Pink: #E83E8C

Note:* This palette will be designed to be distinguishable by individuals with common color vision deficiencies.

  • Semantic Colors (for status, alerts):

* Success: #28A745 (Green)

* Warning: #FFC107 (Amber/Yellow)

* Danger/Alert: #DC3545 (Red)

* Info: #17A2B8 (Light Blue)

3.3 Accessibility Considerations

  • All color combinations (text on background, chart elements) will be tested to meet WCAG 2.1 AA contrast ratio standards.
  • The categorical palette will be chosen to maximize distinctiveness for color-blind users, potentially using different shades, patterns, or direct labels where necessary.
  • Users will have an option to switch to a high-contrast mode if preferred.

4. UX Recommendations

User experience is paramount for a data visualization suite. The following recommendations aim to make the platform intuitive, efficient, and enjoyable to use.

4.1 Navigation & Information Architecture

  • Clear Hierarchy: Organize dashboards and reports logically within the sidebar navigation, using parent-child relationships where appropriate.
  • Consistent Placement: Ensure interactive elements like filters, export buttons, and settings are consistently located across dashboards.
  • Breadcrumbs: Implement breadcrumbs for complex multi-level navigation to help users understand their current location within the suite.
  • Search Functionality: A powerful global search that can find dashboards, reports, and even specific data points or metrics.

4.2 Interactivity & Feedback

  • Direct Manipulation: Allow users to directly interact with charts (e.g., click on a bar to filter, drag to zoom).
  • Immediate Feedback: Provide instant visual feedback for user actions (e.g., loading spinners for data fetches, highlighting selected filter options).
  • Tooltips: Comprehensive tooltips on hover for all chart elements, providing detailed data values and context.
  • Clear State Indication: Clearly indicate active filters, selected time ranges, and applied sorting orders.
  • Undo/Redo: Implement undo/redo functionality for actions within the Custom Report Builder.

4.3 Data Presentation & Readability

  • Chart Junk Reduction: Minimize non-essential chart elements (e.g., unnecessary grid lines, excessive labels) to emphasize the data.
  • Meaningful Titles & Labels: Ensure all charts, axes, and legends have clear, concise, and descriptive titles and labels.
  • Consistent Scales: Use consistent scales across comparable charts where possible to avoid misinterpretation.
  • Data Density: Balance data density with readability; allow users to zoom or drill down for more detail.
  • Annotations & Context: Provide options for users to add annotations to charts or view contextual information about the data.
  • Progressive Disclosure: Initially show aggregated data and allow users to progressively reveal more detail as needed.

4.4 Performance & Responsiveness

  • Fast Loading Times: Optimize data queries and rendering processes to ensure dashboards load quickly. Implement lazy loading for off-screen elements.
  • Caching: Utilize caching mechanisms for frequently accessed data and dashboard states.
  • Responsive Layouts: Design layouts that adapt gracefully to different screen sizes (desktop, tablet, mobile) without losing functionality or readability.
  • Efficient Data Processing: For large datasets, implement server-side processing or data aggregation to ensure smooth interactions.

4.5 Accessibility

  • Keyboard Navigation: Ensure all interactive elements are reachable and operable via keyboard.
  • Screen Reader Compatibility: Provide appropriate ARIA labels and alt text for images/charts to be interpretable by screen readers.
  • Color Contrast: Adhere to WCAG 2.1 AA guidelines for all text and interactive elements.
  • Scalable Text: Allow users to adjust text size without breaking the layout.
  • Alternative Text for Charts: Provide descriptive text alternatives for complex charts for users who cannot perceive visual information.

By adhering to these detailed design specifications and UX recommendations, the Data Visualization Suite will deliver a powerful, intuitive, and accessible experience, empowering users to derive maximum value from their data.

gemini Output

We are pleased to present the finalized design assets for the Data Visualization Suite. This comprehensive deliverable outlines the detailed design specifications, wireframe descriptions for key views, a professional color palette, and critical User Experience (UX) recommendations. Our aim is to ensure the suite is not only aesthetically pleasing but also highly functional, intuitive, and scalable for your data visualization needs.


1. Detailed Design Specifications

These specifications define the visual and interactive characteristics of the Data Visualization Suite, ensuring consistency, usability, and a premium user experience.

1.1. Layout & Grid System

  • Responsive Design: The entire suite will be fully responsive, adapting seamlessly to various screen sizes (desktop, tablet, mobile) and orientations. Breakpoints will be defined for optimal viewing on common device resolutions.
  • 12-Column Grid: A flexible 12-column grid system will be utilized for content arrangement, ensuring proper alignment, spacing, and responsiveness across all layouts.
  • Modular Components: The UI will be built using modular, reusable components (e.g., cards, panels, buttons, forms), promoting consistency and accelerating development.
  • Header & Sidebar: A persistent global header for branding, navigation, and user actions, complemented by a collapsible left-hand sidebar for primary module navigation.

1.2. Typography

  • Primary Font (Headings): "Inter" (or similar modern sans-serif like "Roboto" or "Open Sans") for headings (H1-H6) and key metrics. Chosen for its legibility and modern aesthetic.

* H1: 36px, Bold

* H2: 28px, Semibold

* H3: 22px, Medium

* H4: 18px, Medium

* H5: 16px, Medium

* H6: 14px, Medium

  • Body Font (Text & Labels): "Inter" (or similar) for body text, labels, tooltips, and data points. Ensures consistency and readability at smaller sizes.

* Body Large: 16px, Regular

* Body Medium: 14px, Regular

* Body Small: 12px, Regular

* Line Height: Optimal line height (e.g., 1.5x font size) for enhanced readability.

1.3. Iconography

  • Consistent Style: A unified icon set will be used, preferably an "outlined" or "filled" style (e.g., Material Icons, Feather Icons, or a custom set) for clarity and visual harmony.
  • Purpose-Driven: Icons will be used to enhance comprehension, guide users, and save space, always accompanied by text labels where meaning might be ambiguous.
  • Scalability: Icons will be vector-based (SVG) to ensure crispness at any resolution.

1.4. Interactive Components & States

  • Buttons: Clearly defined primary, secondary, tertiary, and destructive button styles, with distinct hover, active, focus, and disabled states.
  • Form Elements: Consistent design for input fields, text areas, dropdowns, checkboxes, radio buttons, and toggles, including validation states (error, success, warning).
  • Tooltips & Popovers: Non-intrusive, context-sensitive information displays for complex elements or data points.
  • Data Tables: Sortable columns, pagination, filtering, and row selection capabilities. Hover states for rows and clickable elements.
  • Charts & Graphs:

* Hover Effects: Highlighted data points, series, or segments on hover, accompanied by tooltips displaying detailed values.

* Click-to-Drill: Interactive elements allowing users to click on data points to reveal underlying details or navigate to a more granular view.

* Zoom & Pan: For complex charts (e.g., time series, scatter plots) allowing users to explore data subsets.

* Legends: Interactive legends to toggle data series visibility.

1.5. Data Visualization Elements

  • Chart Types: Support for a diverse range of chart types including Bar Charts (stacked, grouped), Line Charts, Area Charts, Pie/Donut Charts, Scatter Plots, Heatmaps, Treemaps, and Geographical Maps.
  • Axis & Labels: Clear, concise axis labels with appropriate scaling and formatting. Time-series axes will use intelligent date/time formatting.
  • Legends: Prominently displayed, clear, and interactive legends.
  • Data Point Labels: Optional direct data point labels for enhanced readability, especially for smaller datasets.
  • Consistent Color Mapping: Ensure consistent use of colors for specific data categories across different visualizations within the same report or dashboard.

1.6. Accessibility (WCAG 2.1 AA Compliance Goals)

  • High Contrast: Sufficient color contrast between text and background elements (at least 4.5:1 for normal text, 3:1 for large text).
  • Keyboard Navigation: Full keyboard navigability for all interactive elements.
  • Screen Reader Support: Semantic HTML and ARIA attributes to provide meaningful context for screen readers.
  • Focus Indicators: Clear visual focus indicators for all interactive elements.
  • Alternative Text: Provide alt text for all meaningful images and charts.

1.7. Animations & Transitions

  • Subtle & Functional: Animations will be used sparingly and purposefully (e.g., chart loading, state changes, navigation transitions) to enhance user experience without being distracting.
  • Performance Optimized: Animations will be lightweight and optimized for smooth performance across various devices.

2. Wireframe Descriptions (Key Views)

These descriptions outline the structural layout and key components of the primary screens within the Data Visualization Suite.

2.1. Main Dashboard View

  • Header (Global):

* Left: Suite Logo & Name.

* Center: Global Search Bar.

* Right: User Avatar (with dropdown for Profile, Settings, Logout), Notifications Icon, Help/Support Icon.

  • Left Sidebar (Primary Navigation):

* Collapsed/Expanded Toggle.

* Menu Items: Dashboard, Reports, Data Explorer, Data Sources, Users & Roles, Settings.

  • Main Content Area (Dashboard Canvas):

* Dashboard Title & Description: Clear title and optional brief description of the dashboard's purpose.

* Global Filters/Date Range Selector: Prominently placed filters affecting all visualizations on the dashboard (e.g., date range, geographical region, specific dimension).

* KPI Cards: A row of prominent cards displaying key performance indicators (KPIs) with current values, trend indicators (up/down arrow, percentage change), and sparkline charts.

* Visualization Grid: A flexible grid layout allowing users to arrange multiple charts, graphs, and data tables. Each visualization will reside within a draggable/resizable panel.

* Add Widget Button: A prominent button to add new visualizations or data components to the dashboard.

  • Footer: Copyright information, version number, privacy policy, terms of service links.

2.2. Report View

  • Header (Global): (Same as Dashboard View)
  • Left Sidebar (Primary Navigation): (Same as Dashboard View)
  • Main Content Area (Report Details):

* Report Title & Description: Clearly displayed.

* Report-Specific Filters: Panel for filters pertinent to the current report (e.g., specific product categories, customer segments).

* Export/Share Options: Buttons for exporting the report (PDF, CSV, Image), sharing via link, or scheduling.

* Report Sections: The report content will be organized into logical sections, each potentially containing multiple visualizations and explanatory text.

* Interactive Visualizations: Charts and tables with drill-down capabilities, tooltips, and sorting options.

* Data Table Details: For reports requiring granular data, a detailed, paginated, and sortable data table.

2.3. Data Explorer View

  • Header (Global): (Same as Dashboard View)
  • Left Sidebar (Primary Navigation): (Same as Dashboard View)
  • Main Content Area (Interactive Data Exploration):

* Data Source Selector: Dropdown or panel to choose the active data source.

* Dimensions & Measures Panel:

* List of available dimensions (categorical data) and measures (numerical data) from the selected data source.

* Drag-and-drop functionality to 'Rows', 'Columns', 'Filters', and 'Values' areas.

* Visualization Type Selector: A gallery of available chart types (bar, line, pie, scatter, etc.) that dynamically update based on selected dimensions/measures.

* Chart Configuration Panel:

* Options specific to the selected chart type (e.g., axis labels, colors, sorting, aggregations).

* Filter application area for ad-hoc filtering.

* Visualization Preview Area: A large canvas displaying the generated chart or table in real-time as users configure it.

* Save/Add to Dashboard Button: Button to save the created visualization or add it to an existing dashboard.

2.4. Settings / Admin View

  • Header (Global): (Same as Dashboard View)
  • Left Sidebar (Primary Navigation): (Same as Dashboard View)
  • Main Content Area (Configuration & Management):

* Settings Sub-Navigation: A secondary left-hand navigation within the main content area for various settings categories (e.g., General Settings, User Management, Role Permissions, Data Source Management, API Keys, Notifications).

* Content Panel: Displays forms, tables, and configuration options corresponding to the selected settings sub-category.

* User Management: Table of users, add/edit user forms, role assignment.

* Data Source Management: List of connected data sources, add new data source forms (connection details, credentials).

* Role Permissions: Matrix or list for configuring permissions per role.

* Save/Apply Changes Buttons: Standard form submission buttons.


3. Color Palettes

A cohesive and accessible color palette is crucial for brand identity, readability, and effective data communication.

3.1. Primary & Secondary Brand Colors

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

* Usage: Main call-to-action buttons, active navigation states, primary headers, key branding elements.

  • Secondary Brand Color: #6c757d (A sophisticated, neutral grey)

* Usage: Less prominent buttons, secondary navigation, subtle accents, disabled states.

3.2. Neutral & Background Colors

  • Dark Text: #212529 (Near black for primary text, ensuring high contrast)
  • Light Text/Subtle Text: #6c757d (For secondary text, labels, and less emphasized information)
  • Page Background: #f8f9fa (Light grey for the overall application background, reducing eye strain)
  • Card/Panel Background: #ffffff (Pure white for content cards, dashboards, and modal backgrounds)
  • Border/Divider: #dee2e6 (Subtle grey for separators and borders)
  • Hover Background: #e9ecef (Slightly darker grey for hover states on interactive elements)

3.3. Semantic Colors (Status & Feedback)

  • Success: #28a745 (Green)

* Usage: Positive actions, successful operations, completion messages.

  • Warning: #ffc107 (Orange/Amber)

* Usage: Cautionary messages, potential issues, pending states.

  • Error: #dc3545 (Red)

* Usage: Critical errors, invalid input, failed operations.

  • Information: #17a2b8 (Cyan/Light Blue)

* Usage: Informational messages, tips, neutral alerts.

3.4. Data Visualization Palette

A carefully selected, accessible palette for various data series in charts. This palette will prioritize distinctness and contrast, especially for users with color vision deficiencies.

  • Primary Data Series:

1. #007bff (Brand Blue)

2. #28a745 (Success Green)

3. #ffc107 (Warning Orange)

4. #dc3545 (Error Red)

5. #17a2b8 (Info Cyan)

6. #6c757d (Secondary Grey)

7. #6f42c1 (Purple)

8. #fd7e14 (Dark Orange)

9. #20c997 (Teal)

10. #e83e8c (Pink)

  • Sequential Palette (for heatmaps, intensity): A gradient from light to dark versions of the primary brand blue or a chosen accent color.

* Example: #e6f2ff -> #b3d9ff -> #80bfff -> #4da6ff -> #1a8cff -> #007bff

  • Diverging Palette (for comparisons around a central value): A transition from a cool color (e.g., blue) through a neutral (e.g., grey) to a warm color (e.g., red).

* Example: #007bff (Negative) -> #f8f9fa (Neutral) -> #dc3545 (Positive)


4. UX Recommendations

These recommendations are crucial for ensuring the Data Visualization Suite is intuitive, efficient, and delightful to use.

4.1. Clarity & Simplicity

  • De-clutter: Prioritize essential information. Remove unnecessary visual elements, text, or interactions that do not add value.
  • Direct Manipulation: Allow users to interact directly with charts and data where possible (e.g.,
data_visualization_suite.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
"); 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' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); 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' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

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

"+slugTitle(pn)+"

Built with PantheraHive BOS

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

"); h+="

"+hc+"

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