User Onboarding Flow
Run ID: 69cb81a361b1021a29a89ac92026-03-31UX Design
PantheraHive BOS
BOS Dashboard

User Onboarding Flow: Design Requirements & Specifications

This document outlines the comprehensive design requirements, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "User Onboarding Flow." The goal is to create an intuitive, engaging, and efficient onboarding experience that quickly guides new users to understand the core value of our product and encourages successful adoption.


1. Introduction & Objectives

The User Onboarding Flow is a critical sequence designed to welcome new users, gather essential information, demonstrate key features, and facilitate their first successful interaction with the application. A well-designed onboarding process significantly impacts user retention and satisfaction.

Key Objectives:

  • Reduce Time-to-Value: Help users experience the core benefit of the product quickly.
  • Increase Activation Rate: Guide users to complete critical first actions.
  • Educate Effectively: Introduce essential features without overwhelming the user.
  • Personalize Experience: Gather data to tailor the application to individual needs.
  • Build Trust & Confidence: Establish a positive first impression and reinforce brand identity.

2. General Design Principles

These principles will guide the visual and interactive design across the entire onboarding flow.

  • Clarity & Simplicity: Information should be easy to understand, and interactions straightforward. Avoid jargon.
  • Consistency: Maintain a consistent visual language (typography, colors, iconography, component styles) throughout the flow and with the broader application.
  • Progressive Disclosure: Introduce information gradually, revealing more detail as the user progresses.
  • Feedback & Guidance: Provide clear visual and textual feedback for user actions and guide them through each step.
  • Empowerment: Give users control, allowing them to skip steps or revisit information.
  • Delight: Incorporate subtle animations, engaging illustrations, and positive reinforcement to create an enjoyable experience.
  • Accessibility: Ensure the design adheres to WCAG guidelines for color contrast, typography, and interactive elements.

3. Overall Color Palette & Typography

This section defines the core visual identity for the onboarding flow.

3.1. Color Palette

The chosen palette aims for professionalism, approachability, and clarity.

  • Primary Brand Color (e.g., #007BFF - Ocean Blue): Used for primary call-to-action (CTA) buttons, active states, key highlights, and brand elements. Conveys trust and professionalism.
  • Secondary Brand Color (e.g., #6C757D - Slate Gray): Used for secondary buttons, less prominent actions, and supporting UI elements. Provides visual hierarchy.
  • Accent Color (e.g., #28A745 - Emerald Green): Used for success indicators, positive feedback, and subtle highlights. Conveys completion and positive outcomes.
  • Neutral Colors:

* Backgrounds (e.g., #F8F9FA - Light Gray): Clean, spacious feel.

* Text (Primary: #212529 - Dark Gray; Secondary: #495057 - Medium Gray): Ensures readability.

* Borders/Dividers (e.g., #DEE2E6 - Light Silver): Subtle separation.

  • Semantic Colors:

* Success (e.g., #28A745 - Emerald Green): For successful actions.

* Error (e.g., #DC3545 - Crimson Red): For validation errors and critical alerts.

* Warning (e.g., #FFC107 - Amber Yellow): For cautionary messages.

* Info (e.g., #17A2B8 - Sky Blue): For informative hints.

Contrast Ratio: All color combinations for text and interactive elements will meet WCAG AA standards (minimum 4.5:1 for normal text, 3:1 for large text).

3.2. Typography

A clean, legible, and modern font family will be used.

  • Primary Font Family (e.g., Inter / Open Sans): Modern sans-serif, highly readable across various sizes.
  • Headings (H1, H2, H3): Bold or Semi-bold weights, increasing in size for hierarchy.

* H1 (Screen Title): 28-36px

* H2 (Section Title): 20-24px

* H3 (Subtitle/Question): 18-20px

  • Body Text: Regular weight, 16-18px for optimal readability on all devices.
  • Labels/Small Text: Regular weight, 12-14px for input labels, helper text, and secondary information.
  • Line Height: Optimized for readability (e.g., 1.5 for body text).

4. Onboarding Flow Steps: Detailed Specifications

This section details each step of the user onboarding journey, including design, wireframe, and UX considerations.

4.1. Step 1: Welcome & Value Proposition

Purpose: Greet the user, articulate the product's primary value, and set a positive tone.

4.1.1. Design Specifications

  • Content:

* Large, welcoming headline (e.g., "Welcome to [App Name]!").

* Concise sub-headline explaining the core benefit (e.g., "Streamline your projects, boost productivity.").

* Engaging, high-quality illustration or animation relevant to the product's core function.

* Primary Call-to-Action (CTA) button: "Get Started" or "Create Account".

* Secondary CTA/Link: "Log In" (for existing users).

* Optional: Short, punchy bullet points highlighting 2-3 key benefits.

  • Imagery: Custom vector illustration or abstract animation that conveys motion, collaboration, or efficiency.
  • Icons: Minimal, simple line icons if bullet points are used.
  • Components: Large, prominent primary button. Link-style secondary button.

4.1.2. Wireframe Description

  • Layout: Centered content layout.

* Top: Illustration/Animation (occupying ~40-50% vertical space).

* Middle: H1 Welcome message, H2 Value Proposition.

* Bottom: Primary CTA button, followed by a smaller "Log In" link.

  • Responsiveness: Elements scale proportionally. On smaller screens, the illustration may shrink or adapt its aspect ratio; text sizes adjust slightly.
  • Navigation:

* "Get Started" -> Sign Up screen.

* "Log In" -> Log In screen.

4.1.3. Color Usage

  • Background: Light Gray (#F8F9FA).
  • Headline: Dark Gray (#212529).
  • Sub-headline: Medium Gray (#495057).
  • Primary CTA: Primary Brand Color (#007BFF) with white text.
  • Secondary Link: Primary Brand Color (#007BFF) as text color, no background.
  • Illustration: Incorporates brand colors and complementary tones.

4.1.4. UX Recommendations

  • Engaging Visuals: Use high-quality, brand-aligned visuals to create an immediate positive impression.
  • Clear Value Prop: Ensure the core benefit is immediately obvious and compelling.
  • Single Primary Action: Focus the user on the "Get Started" action; keep "Log In" secondary.
  • Loading State: If animation is complex, consider a subtle loading indicator.

4.2. Step 2: Sign Up / Log In

Purpose: Allow new users to create an account and existing users to log in.

4.2.1. Design Specifications

  • Content:

* Screen Title: "Create Your Account" / "Welcome Back!"

* Input Fields: Email, Password (with "Show/Hide" toggle), Confirm Password (for sign-up).

* Optional: "Full Name" or "Username" field.

* Social Sign-up Options: Buttons for "Continue with Google," "Continue with Apple," etc. (with respective brand icons).

* "Forgot Password?" link (for log-in).

* Terms of Service/Privacy Policy links (for sign-up).

* Primary CTA: "Sign Up" / "Log In".

* Toggle/Link to switch between "Sign Up" and "Log In" forms.

  • Icons: Eye icon for password visibility toggle, brand logos for social sign-up.
  • Components: Standard input fields, primary buttons, social login buttons (with clear borders/backgrounds). Checkbox for "Remember Me" (log-in) or "Agree to Terms" (sign-up).

4.2.2. Wireframe Description

  • Layout: Forms are typically left-aligned or centered within a card-like container.

* Top: Screen Title.

* Middle: Social login buttons (horizontally stacked or side-by-side), followed by a "OR" divider. Input fields, stacked vertically.

* Bottom: Checkbox (if any), "Forgot Password" link (if log-in), Primary CTA button. Link to switch between Sign Up/Log In.

  • Responsiveness: Input fields and buttons stack vertically on smaller screens. Social login buttons may wrap.
  • Navigation:

* Successful Sign Up/Log In -> Profile Setup or Feature Tour screen.

* "Forgot Password" -> Password Reset flow.

4.2.3. Color Usage

  • Background: Light Gray (#F8F9FA).
  • Form Container: White with subtle border (#DEE2E6).
  • Text: Dark Gray (#212529) for labels, Medium Gray (#495057) for helper text.
  • Input Borders: Neutral, turning to Primary Brand Color (#007BFF) on focus, Crimson Red (#DC3545) on error.
  • Primary CTA: Primary Brand Color (#007BFF) with white text.
  • Social Login Buttons: Brand-specific colors or white background with brand icon/text.
  • Error Messages: Crimson Red (#DC3545).

4.2.4. UX Recommendations

  • Password Requirements: Display password requirements dynamically as the user types.
  • Error Handling: Provide immediate, clear, and actionable inline error messages for invalid inputs.
  • Social Login: Prioritize social login options for convenience.
  • "Show/Hide Password": Essential for usability and security.
  • Clear Call to Action: Ensure the primary button clearly states its action (e.g., "Create Account," "Log In").
  • Keyboard Navigation: Ensure full keyboard accessibility and logical tab order.

4.3. Step 3: Initial Profile Setup / Personalization

Purpose: Gather essential information to personalize the user's experience and configure initial settings.

4.3.1. Design Specifications

  • Content:

* Screen Title: "Tell Us About Yourself" / "Let's Get Started!"

* Progress Indicator: Visual element showing current step (e.g., "Step 1 of 3").

* Questions/Fields:

* User Role (e.g., "What best describes your role?").

* Industry (e.g., "Which industry are you in?").

* Team Size (e.g., "How many people are on your team?").

* Primary Goal (e.g., "What do you hope to achieve with [App Name]?").

* Input Types: Radio buttons, checkboxes, dropdowns, short text inputs.

* Primary CTA: "Continue" or "Next".

* Secondary CTA: "Skip for now" (prominently visible but less emphasized).

  • Imagery: Subtle icons or small illustrations accompanying questions/options to make them more engaging.
  • Components: Custom radio buttons/checkboxes for better branding, clear dropdowns.

4.3.2. Wireframe Description

  • Layout:

* Top: Progress indicator, Screen Title.

* Middle: Questions presented one at a time or grouped logically. Each question followed by its input fields/options.

* Bottom: Primary "Continue" button, "Skip for now" link/button.

  • Responsiveness: Questions and options stack vertically. Input fields expand to full width.
  • Navigation:

* "Continue" -> Next step in Profile Setup or Feature Tour.

* "Skip for now" -> Feature Tour or directly to Dashboard.

4.3.3. Color Usage

  • Background: Light Gray (#F8F9FA).
  • Text: Dark Gray (#212529) for questions, Medium Gray (#495057) for descriptions.
  • Active/Selected Options: Primary Brand Color (#007BFF) for radio buttons/checkboxes.
  • Primary CTA: Primary Brand Color (#007BFF) with white text.
  • Skip CTA: Secondary Brand Color (#6C757D) as text or a ghost button.

4.3.4. UX Recommendations

  • Progress Indicator: Crucial for managing user expectations and reducing abandonment.
  • Keep it Short: Limit the number of questions to avoid overwhelming users. Only ask for truly essential information.
  • Clear Value: Explain why you're asking for certain information (e.g., "This helps us tailor your workspace.").
  • Default Selections: Pre-select common options if possible to reduce cognitive load.
  • "Skip" Option: Always provide an escape hatch.
  • Engaging Copy: Use friendly, encouraging language.

4.4. Step 4: Feature Tour / Onboarding Checklist

Purpose: Introduce key features, demonstrate basic functionality, and guide users towards their first successful action.

4.4.1. Design Specifications

  • Content (Choose one or combine):

* Interactive Tour: Overlay tool

gemini Output

User Onboarding Flow: Detailed Design Specifications

This document outlines the comprehensive design specifications for the "User Onboarding Flow," serving as a definitive guide for design and development teams. The goal is to create an intuitive, engaging, and efficient onboarding experience that maximizes user activation and minimizes drop-off rates, ultimately leading to higher user retention and satisfaction.


1. Introduction & Core Objectives

The User Onboarding Flow is critical for establishing a strong first impression and guiding new users to quickly discover the core value of our platform.

Primary Objectives:

  • High Completion Rate: Design a frictionless path to account creation and initial setup.
  • Value Realization: Help users understand and experience the immediate benefits of the product.
  • Personalization Data Collection: Gather essential user preferences to tailor the experience from the outset.
  • Reduced Time-to-Value (TTV): Enable users to achieve their first "win" or complete a key action swiftly.
  • Engagement & Retention: Foster early engagement to build a foundation for long-term use.

Core Design Principles:

  • Clarity & Simplicity: Each step should be easy to understand with minimal cognitive load.
  • Progress & Feedback: Users must always know where they are in the process and what's next.
  • Value-Driven: Emphasize benefits and outcomes rather than just features.
  • Empowerment: Provide options to skip, go back, or get help.
  • Brand Consistency: Maintain a consistent look, feel, and tone throughout the journey.

2. User Onboarding Flow: Stages & Detailed Specifications

The onboarding flow is broken down into distinct, logical stages. Each stage is designed to achieve a specific objective while maintaining a cohesive user experience.

2.1. Stage 1: Welcome & Introduction

  • Purpose: Greet the user, articulate the core value proposition, and set expectations for the onboarding journey.
  • Wireframe Description:

* Layout: Full-screen modal or dedicated landing page section with a clear visual hierarchy.

* Header: Prominent brand logo (e.g., [Your Company Logo]).

* Title: Compelling headline (e.g., "Welcome to [Your Product Name]! Let's Get Started.").

* Description: Short, benefit-oriented paragraph explaining what the user will achieve (e.g., "Unlock your potential with our powerful tools. We'll guide you through a quick setup to tailor your experience.").

* Illustration/Animation: Engaging, brand-aligned visual that subtly hints at product functionality or user benefits.

* Call-to-Action (CTA): Primary button (e.g., "Get Started," "Create My Account").

* Secondary Option (Optional): Link for "Sign In" (for existing users).

* Progress Indicator (Optional): Subtle "1 of X steps" if the flow is very short and upfront.

  • User Interactions:

* Clicking "Get Started" transitions smoothly to Stage 2.

* Clicking "Sign In" redirects to the login page.

  • Error Handling: N/A for this stage.
  • Success State: Seamless transition to the next step.
  • UX Recommendations:

* Keep text concise and benefit-focused.

* Use high-quality imagery or custom illustrations to create a positive first impression.

* Ensure the primary CTA is highly visible and actionable.

2.2. Stage 2: Account Creation / Sign-Up

  • Purpose: Allow users to create an account using email/password or social login options.
  • Wireframe Description:

* Layout: Full-screen modal or dedicated page, with a clear form structure.

* Header: Title (e.g., "Create Your Account").

* Progress Indicator: Clear visual (e.g., "2 of X steps").

* Form Fields:

* Email Address (Input type="email", placeholder="your@email.com")

* Password (Input type="password", placeholder="Enter a strong password")

* Confirm Password (Input type="password", placeholder="Confirm your password")

* Password Requirements: Display inline as user types (e.g., "Min 8 characters, 1 uppercase, 1 number").

* Social Login Options: Buttons for "Continue with Google," "Continue with Apple," etc., with respective icons.

* Terms & Privacy: Checkbox for "I agree to the Terms of Service and Privacy Policy" with clickable links.

* Call-to-Action (CTA): Primary button (e.g., "Create Account," "Sign Up").

* Secondary Option: Link for "Already have an account? Sign In."

  • User Interactions:

* Typing in fields should trigger real-time validation.

* Clicking social login buttons initiates the respective OAuth flow.

* Clicking "Create Account" submits the form.

* Clicking "Sign In" redirects to the login page.

  • Error Handling:

* Inline Validation: Red borders/text for invalid email format, weak password, mismatched passwords.

* Server Errors: Toast notification or banner for "Email already registered," "Failed to create account."

* Password Reset Link: For "Email already registered" errors, suggest a password reset.

  • Success State: Account created, user logged in, smooth transition to Stage 3.
  • UX Recommendations:

* Prioritize clear, concise error messages.

* Offer password visibility toggle.

* Social login should be prominent but not overshadow email/password if that's the preferred method for data collection.

* Pre-check "Terms & Privacy" checkbox if legally permissible and clearly disclosed.

2.3. Stage 3: Profile Setup / Basic Information

  • Purpose: Collect essential user profile information to personalize their experience.
  • Wireframe Description:

* Layout: Form-based, potentially with multiple small steps or a single scrollable form.

* Header: Title (e.g., "Tell Us About Yourself").

* Progress Indicator: Clear visual (e.g., "3 of X steps").

* Form Fields:

* First Name (Input type="text", placeholder="John")

* Last Name (Input type="text", placeholder="Doe")

* Profile Picture (Optional): Upload button with preview area, or option to "Choose Avatar."

* Optional: Role/Industry (Dropdown or text input with autocomplete).

* Call-to-Action (CTA): Primary button (e.g., "Continue," "Next Step").

* Secondary Option: "Skip for now" link.

  • User Interactions:

* Typing in fields.

* Clicking "Upload" opens file picker.

* Clicking "Continue" saves data and moves to Stage 4.

* Clicking "Skip for now" moves to Stage 4 without saving.

  • Error Handling:

* Inline validation for required fields.

* File upload errors (e.g., "File too large," "Invalid format").

  • Success State: Profile data saved, transition to Stage 4.
  • UX Recommendations:

* Clearly mark optional fields.

* Provide clear instructions for profile picture upload (e.g., recommended size, file types).

Emphasize why* this information is being collected (e.g., "This helps us personalize your dashboard.").

2.4. Stage 4: Personalization / Preferences

  • Purpose: Gather specific preferences to tailor the user's initial experience and content.
  • Wireframe Description:

* Layout: Card-based selection, multi-select checkboxes, or radio buttons. Can be one or more screens.

* Header: Title (e.g., "What are your interests?" or "How do you plan to use [Product Name]?").

* Description: (e.g., "Select topics that interest you to get personalized recommendations.").

* Progress Indicator: Clear visual (e.g., "4 of X steps").

* Options:

* List of categories/interests with checkboxes or clickable cards.

* Dropdowns for specific settings (e.g., "Preferred language").

* Optional: "What's your primary goal?" (e.g., "Learn new skills," "Connect with peers," "Manage projects").

* Call-to-Action (CTA): Primary button (e.g., "Finish," "Explore My Feed," "Save Preferences").

* Secondary Option: "Skip for now" link.

  • User Interactions:

* Clicking on cards/checkboxes toggles selection.

* Clicking "Finish" saves preferences and completes onboarding.

  • Error Handling: N/A for this stage.
  • Success State: Preferences saved, user directed to their personalized dashboard/home screen.
  • UX Recommendations:

* Limit the number of choices to avoid decision fatigue.

* Use clear, descriptive labels for each option.

* Visually indicate selected options clearly.

* Provide a "Skip" option, as not all users want to personalize upfront.

2.5. Stage 5: Feature Introduction / Quick Tour (Optional, Post-Onboarding)

  • Purpose: (Optional, often implemented after initial onboarding) Introduce key features or guide the user through their first critical action.
  • Wireframe Description:

* Layout: Overlay tooltips, interactive walkthrough, or a short video tutorial.

* Elements:

* Highlighting specific UI elements.

* Short descriptive text for each step.

* "Next," "Back," "Skip Tour" buttons.

* Progress indicator for the tour (e.g., "1 of 5").

  • User Interactions:

* Clicking "Next" advances the tour.

* Clicking "Skip Tour" dismisses it.

* Interaction with highlighted elements can trigger the next step.

  • Error Handling: N/A.
  • Success State: Tour completed, user can freely interact with the product.
  • UX Recommendations:

* Keep tours short and focused on critical features that deliver immediate value.

* Make it easy to exit the tour at any point.

* Consider contextual tours that activate when a user first encounters a specific feature.


3. General UX Recommendations for Onboarding

  • Progress Indicators: Always show the user their progress (e.g., "Step 2 of 4," progress bar). This reduces anxiety and encourages completion.
  • Clear Call-to-Actions (CTAs): Use strong, action-oriented language for buttons. Ensure CTAs are visually distinct.
  • Minimize Cognitive Load: Only ask for necessary information. Break down complex forms into smaller, manageable steps.
  • Visual Appeal: Utilize high-quality graphics, illustrations, or animations to make the process engaging.
  • Mobile Responsiveness: Ensure the entire flow is fully optimized and intuitive on all screen sizes (desktop, tablet, mobile).
  • "Skip for now" Options: Provide an escape hatch for users who want to jump straight into the product, especially for optional steps.
  • Tooltips & Help: Offer subtle inline help or tooltips for complex fields or concepts.
  • Positive Reinforcement: Use positive language and celebratory messages upon completion of key steps.
  • Analytics Integration: Implement robust analytics to track completion rates, drop-off points, and user behavior within the onboarding flow. This data is crucial for continuous optimization.

4. Visual Design Guidelines

4.1. Color Palette

A consistent color palette reinforces brand identity and guides user attention.

  • Primary Brand Color: #007BFF (A vibrant blue, signifying trust, professionalism, and innovation)

Usage:* Primary CTAs, active states, progress indicators, brand elements.

  • Secondary Brand Color: #28A745 (A confident green, for success, positive feedback, and growth)

Usage:* Success messages, positive highlights, secondary actions.

  • Accent Color: #FFC107 (A warm yellow/orange, for emphasis, alerts, or interactive elements)

Usage:* Highlighted elements, warnings, interactive icons.

  • Neutral Colors:

* Dark Text/Heading: #212529 (Deep charcoal for strong readability)

* Body Text: #495057 (Softer charcoal for body copy)

* Light Grey (Borders/Dividers): #DEE2E6 (Subtle grey for UI separation)

* Background Grey: #F8F9FA (Very light grey for subtle contrast)

* White: #FFFFFF (For backgrounds, cards, and prominent UI elements)

  • System Colors:

* Error Red: #DC3545 (Standard red for error messages and invalid input)

* Success Green: #28A745 (As above, for success messages)

* Warning Yellow: #FFC107 (As above, for warnings)

gemini Output

Project: User Onboarding Flow - Finalized Design Assets

Step: geminifinalize_design_assets

This document outlines the comprehensive and detailed design specifications for the "User Onboarding Flow." It encompasses visual design elements, user experience (UX) recommendations, and structural descriptions for all key assets, ensuring a professional, engaging, and effective onboarding journey for new users.


Executive Summary

The finalized design assets for the User Onboarding Flow are crafted to create a seamless, intuitive, and delightful first-time user experience. The design prioritizes clarity, user guidance, and brand consistency, aiming to quickly demonstrate value and facilitate successful account setup and initial engagement. This deliverable includes detailed specifications for visual identity, interactive elements, and content presentation across all onboarding screens and components.


1. Overall Design Principles & Brand Identity

The onboarding flow will adhere to the following core design principles, reflecting the PantheraHive brand:

  • Clarity & Simplicity: Minimize cognitive load with clear calls-to-action, concise copy, and intuitive layouts.
  • Engagement & Delight: Utilize subtle animations, positive reinforcement, and visually appealing graphics to create an enjoyable experience.
  • Consistency: Maintain a consistent visual language, tone of voice, and interaction patterns throughout the entire flow and across the product.
  • Empowerment: Give users control with clear progress indicators, skip options, and understandable choices.
  • Accessibility: Design with WCAG 2.1 guidelines in mind, ensuring readability, sufficient contrast, and navigable elements for all users.

Tone of Voice: Friendly, encouraging, professional, and helpful. Avoid jargon.


2. Color Palette

The chosen color palette is designed to be modern, approachable, and brand-aligned, ensuring visual hierarchy and emotional resonance throughout the onboarding process.

  • Primary Brand Color:

* Panthera Blue: #007BFF (RGB: 0, 123, 255)

Usage:* Main CTAs, progress indicators, active states, key brand elements.

  • Secondary Brand Color:

* Panthera Green: #28A745 (RGB: 40, 167, 69)

Usage:* Success messages, positive affirmations, secondary CTAs, feature highlights.

  • Accent Colors:

* Panthera Gold: #FFC107 (RGB: 255, 193, 7)

Usage:* Highlighted features, optional elements, subtle decorative elements.

* Panthera Grey (Accent): #6C757D (RGB: 108, 117, 125)

Usage:* Inactive states, secondary text, subtle borders.

  • Neutral Colors (Text & Backgrounds):

* Dark Text: #212529 (RGB: 33, 37, 41)

Usage:* Primary body text, headings.

* Light Text/Icons: #F8F9FA (RGB: 248, 249, 250)

Usage:* Text on dark backgrounds, primary icons.

* Background Light: #FFFFFF (RGB: 255, 255, 255)

Usage:* Primary screen backgrounds.

* Background Medium: #E9ECEF (RGB: 233, 236, 239)

Usage:* Input fields, subtle card backgrounds, dividers.

Usage Guidelines:

  • Primary Blue for core actions, guiding the user forward.
  • Green for positive feedback and completion.
  • Neutral colors for readability and clean layouts.
  • Ensure a minimum contrast ratio of 4.5:1 for text against its background.

3. Typography

A clean and modern sans-serif typeface will be used to ensure readability and maintain a contemporary feel.

  • Font Family: Inter (or similar Google Font like Roboto, Open Sans)

Rationale:* Highly readable across devices, versatile with multiple weights, and professional.

  • Usage:

* Headings (H1): Inter Bold, 32px - 36px (e.g., "Welcome to PantheraHive!")

* Subheadings (H2): Inter Semi-Bold, 24px - 28px (e.g., "Discover Our Features")

* Body Text: Inter Regular, 16px - 18px (e.g., feature descriptions, explanations)

* Call-to-Action (CTA) Text: Inter Semi-Bold, 18px - 20px (e.g., "Get Started", "Next")

* Small Text/Captions: Inter Regular, 12px - 14px (e.g., disclaimers, hints)

* Input Field Text: Inter Regular, 16px

  • Line Height: Optimized for readability (e.g., 1.5 for body text, 1.2 for headings).

4. Iconography

Icons will be used to visually represent concepts, enhance clarity, and reduce text where possible.

  • Style: Line-art, consistent stroke weight, rounded corners where appropriate. Icons should be easily recognizable and scalable.
  • Library: Material Design Icons, Font Awesome, or a custom set adhering to the defined style.
  • Purpose:

* Feature representation on value proposition screens.

* Navigation within the onboarding flow (e.g., back arrows, close buttons).

* Status indicators (e.g., success checkmarks, error warnings).

* Input field adornments (e.g., email, password visibility).


5. Onboarding Flow Breakdown & Design Assets

This section details the design specifications, wireframe descriptions, color/typography usage, and UX recommendations for each key screen within the User Onboarding Flow.

5.1. Welcome/Splash Screen

  • Design Specifications:

* Purpose: First impression, brand reinforcement, and initiation of the onboarding journey.

* Content: Large, inviting headline; concise tagline; prominent call-to-action (CTA).

* Visuals: Full-screen hero image or animation (subtle, engaging loop) relevant to PantheraHive's core value.

  • Wireframe Description:

* Layout: Centered content with a background visual.

* Top: Optional company logo (small, subtle).

* Middle:

* H1: "Welcome to PantheraHive!" (Panthera Blue)

* Body Text: "Your platform for [key benefit/value proposition]." (Dark Text)

* Bottom:

* Primary Button: "Get Started" (Panthera Blue background, Light Text)

* Secondary Link (Optional): "Already have an account? Log in" (Panthera Blue text)

  • Color & Typography Usage:

* Headline: Inter Bold, Panthera Blue.

* Body text: Inter Regular, Dark Text.

* CTA button: Panthera Blue background, Light Text, Inter Semi-Bold.

* Background: Full-screen image/animation with a subtle overlay to ensure text readability.

  • UX Recommendations:

* Speed: Load quickly to avoid user drop-off.

* Visual Appeal: Use high-quality, relevant imagery or animation.

* Clear CTA: Make "Get Started" the most prominent action.

5.2. Value Proposition / Feature Showcase Screens (Carousel)

  • Design Specifications:

* Purpose: Educate users on the product's core benefits and key features.

* Content: Each screen highlights one main feature/benefit with a concise title, short description, and a supporting visual.

* Navigation: Dot indicators for progress, "Next" button, and "Skip" option.

  • Wireframe Description:

* Layout: Vertical stack: Visual at top, title, description, progress dots, navigation buttons.

* Top:

* Image/Illustration: High-quality, feature-specific graphic (e.g., icon with supporting visual elements).

* Middle:

* H2: "Feature Title / Key Benefit" (Dark Text)

* Body Text: "Brief, compelling description of the feature and its value." (Dark Text)

* Bottom:

* Progress Dots: Series of small circles, one active (Panthera Blue), others inactive (Panthera Grey Accent).

* Primary Button: "Next" (Panthera Blue background, Light Text)

* Secondary Link: "Skip" (Panthera Grey Accent text)

  • Color & Typography Usage:

* Headings: Inter Semi-Bold, Dark Text.

* Body text: Inter Regular, Dark Text.

* CTA: Panthera Blue background, Light Text, Inter Semi-Bold.

* Progress dots: Active in Panthera Blue, inactive in Panthera Grey Accent.

  • UX Recommendations:

* Conciseness: Keep text brief and scannable.

* Visual Support: Ensure illustrations clearly represent the feature.

* Swiping: Enable horizontal swiping between screens for natural navigation.

* Skip Option: Provide a clear "Skip" or "I Understand" option for impatient users.

5.3. Sign-up / Login Screen

  • Design Specifications:

* Purpose: Facilitate account creation or access for returning users.

* Content: Input fields for credentials, clear labels, password visibility toggle, forgot password link, social login options.

* Error Handling: Inline validation and clear error messages.

  • Wireframe Description:

* Layout: Form-centric, clearly structured with appropriate spacing.

* Top:

* H2: "Create Your Account" / "Welcome Back!" (Dark Text)

* Middle (Sign-up):

* Input Field: "Email" (with placeholder, clear label)

* Input Field: "Password" (with placeholder, password toggle icon)

* Input Field: "Confirm Password" (for sign-up)

* Checkbox (Optional): "Agree to Terms & Conditions" (link to T&Cs)

* Primary Button: "Sign Up" (Panthera Blue background, Light Text)

* Middle (Login):

* Input Field: "Email"

* Input Field: "Password" (password toggle)

* Link: "Forgot Password?" (Panthera Blue text)

* Primary Button: "Log In" (Panthera Blue background, Light Text)

* Bottom:

* Divider: "OR"

* Social Login Buttons: (e.g., "Continue with Google", "Continue with Apple") - branded icons, neutral backgrounds.

* Secondary Link: "Already have an account? Log In" / "Don't have an account? Sign Up" (Panthera Blue text)

  • Color & Typography Usage:

* Headings: Inter Semi-Bold, Dark Text.

* Labels/Placeholders: Inter Regular, Panthera Grey Accent.

* Input borders: Background Medium (inactive), Panthera Blue (active/focused).

* Buttons: Panthera Blue background (primary), Light Text. Social login buttons with neutral background, Dark Text, and respective brand icons.

* Error messages: Red (#DC3545), Inter Regular.

  • UX Recommendations:

* Form Clarity: Use clear labels and helpful placeholder text.

* Password Visibility: Implement a toggle for password fields.

* Inline Validation: Provide real-time feedback on input validity.

* Social Login: Offer convenient alternatives to traditional sign-up.

* Accessibility: Ensure all input fields have proper labels and are keyboard navigable.

5.4. Personalization / Preferences Screen(s)

  • Design Specifications:

* Purpose: Collect user preferences to tailor their experience and demonstrate immediate value.

* Content: Questions presented clearly, with intuitive selection mechanisms (e.g., radio buttons, checkboxes, dropdowns, sliders).

* Progress: Clear indication of current step within a multi-step process.

  • Wireframe Description:

* Layout: Question-answer format, one question or a small group of related questions per screen.

* Top:

* Progress Indicator: "Step X of Y" (Panthera Grey Accent)

* H2: "Tell us about yourself" / "What are your interests?" (Dark Text)

* Middle:

* Question Text: "How do you plan to use PantheraHive?" (Dark Text)

* Input/Selection Options:

* Option 1: (e.g., Radio button, Checkbox, Slider, Dropdown)

* Option 2: ...

* Image/Icon (Optional): To visually represent choices.

* Bottom:

* Primary Button: "Continue" / "Next"

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