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

Project: User Onboarding Flow

Step 1 of 3: Research & Design Requirements (gemini → research_design_requirements)

Date: October 26, 2023

Prepared For: [Customer Name/Organization]

Prepared By: PantheraHive AI Assistant


1. Executive Summary

This document outlines the comprehensive research and design requirements for the proposed User Onboarding Flow. The primary objective is to create an intuitive, engaging, and efficient onboarding experience that maximizes user activation, reduces early churn, and facilitates rapid product adoption. This foundational step details the functional and technical specifications, conceptual wireframe descriptions for key screens, a defined color palette, and a robust set of User Experience (UX) recommendations. This deliverable serves as the blueprint for subsequent design and development phases, ensuring a cohesive and user-centric approach.


2. Design Principles & Goals for Onboarding

Our user onboarding flow will be guided by the following core principles and aimed at achieving specific goals:

2.1 Core Design Principles

  • Simplicity & Clarity: Minimize cognitive load, use clear language, and provide intuitive navigation.
  • Progressive Disclosure: Introduce information and features gradually, preventing overwhelm.
  • Value Proposition: Clearly communicate the product's benefits and how it solves user problems at each stage.
  • Personalization: Offer opportunities to tailor the experience, making the product immediately relevant.
  • Feedback & Guidance: Provide continuous feedback on progress and clear instructions for next steps.
  • Efficiency: Streamline the process to get users to their "Aha! Moment" as quickly as possible.
  • Empowerment: Allow users control, including options to skip steps or revisit sections.

2.2 Key Onboarding Goals

  • Increase Activation Rate: Ensure new users successfully complete core setup tasks and experience initial value.
  • Reduce Early Churn: Minimize the number of users who abandon the product shortly after signing up.
  • Improve Product Adoption: Guide users to understand and utilize key features effectively.
  • Enhance User Satisfaction: Create a positive first impression that fosters long-term engagement.
  • Gather Essential User Data: Collect necessary information for personalization and service delivery without friction.

3. Detailed Design Specifications

This section details the functional requirements and technical considerations necessary for building a robust onboarding experience.

3.1 Functional Requirements

  • Account Creation:

* Support for email/password registration with strong password policies.

* Integration with popular social login providers (e.g., Google, Apple, Facebook).

* "Forgot Password" and "Resend Verification Email" functionalities.

  • User Data Collection:

* Progressive collection of user profile information (e.g., name, organization, role, interests) across multiple, non-overwhelming steps.

* Optional fields clearly marked, with "Skip for now" options.

  • Onboarding Progress Tracking:

* Visual progress indicator (e.g., "Step X of Y") to manage user expectations.

* Ability for users to pause and resume the onboarding flow.

  • Product Tour / Feature Introduction:

* Interactive tooltips, hotspots, or overlay modals to highlight key UI elements and features.

* Contextual guidance based on user roles or selected preferences.

* Ability to skip the tour or revisit it later from settings.

  • First Action / "Aha! Moment" Prompt:

* Clear call-to-action (CTA) guiding users to perform a critical first task that demonstrates immediate value.

* Examples of a critical first task could be: "Create your first project," "Invite a team member," "Connect your first data source."

  • Success & Completion:

* Confirmation screen upon successful onboarding completion.

* Smooth transition to the main application dashboard or a personalized landing page.

  • Error Handling & Validation:

* Real-time inline validation for form fields (e.g., email format, password strength).

* Clear, actionable error messages for failed submissions or missing information.

  • Analytics Integration:

* Tracking of user progression through the onboarding flow.

* Recording of drop-off points, completion rates, and time spent on each step.

3.2 Technical Considerations

  • Cross-Platform Compatibility:

* Responsive design for seamless experience across desktop, tablet, and mobile devices.

* Compatibility with major web browsers (Chrome, Firefox, Safari, Edge).

  • Performance Optimization:

* Fast loading times for all onboarding screens and assets.

* Optimized image and media delivery.

* Efficient API calls for registration and data submission.

  • Security:

* Industry-standard encryption for data in transit (SSL/TLS) and at rest.

* Secure authentication protocols (e.g., OAuth 2.0 for social logins).

* Protection against common web vulnerabilities (e.g., XSS, CSRF).

  • Backend Integration:

* Robust API endpoints for user registration, profile updates, and authentication.

* Integration with user management systems and databases.

* Compatibility with chosen analytics platforms (e.g., Google Analytics, Mixpanel, Segment).

  • Scalability:

* Architecture designed to handle a growing number of concurrent users.

* Flexible database schema to accommodate future profile attributes.


4. Wireframe Descriptions (Conceptual)

This section provides conceptual descriptions for the key screens within the user onboarding flow. These descriptions will guide the creation of low-fidelity wireframes in the next phase.

4.1 Welcome Screen

  • Layout: Full-screen background image or video showcasing product benefits, or a clean, minimalist design with strong brand presence.
  • Key Elements:

* Catchy Headline: A concise, benefit-oriented statement (e.g., "Unlock Your Potential with [Product Name]").

* Sub-headline/Value Proposition: 2-3 bullet points or a short paragraph highlighting key benefits.

* Primary Call-to-Action (CTA): Prominent "Sign Up" or "Get Started" button.

* Secondary CTA: "Log In" link for existing users.

* Optional: Carousel of product screenshots or testimonials.

  • User Interaction: Users can either sign up to create a new account or log in if they already have one.

4.2 Registration / Sign-Up Screen

  • Layout: Clean, focused form with minimal distractions. Progress indicator at the top.
  • Key Elements:

* Progress Indicator: "Step 1 of X" or a visual progress bar.

* Headline: "Create Your Account."

* Email Field: Input for user's email address.

* Password Field: Input for password, with "Show/Hide Password" toggle and strength indicator.

* Social Login Buttons: Prominent buttons for Google, Apple, Facebook, etc.

* Primary CTA: "Sign Up" or "Create Account" button.

* Secondary Links: "Already have an account? Log In" link, "Terms of Service" and "Privacy Policy" links.

  • User Interaction: Users enter their credentials or choose a social login option. Real-time validation provides immediate feedback.

4.3 Profile Setup / Personalization Screen (Optional, Multi-Step if needed)

  • Layout: Focused form or series of questions, often with visual cues or selections. Progress indicator.
  • Key Elements:

* Progress Indicator: "Step 2 of X."

* Headline: "Tell Us About Yourself" or "Personalize Your Experience."

* Input Fields: Name, company/organization, role, industry.

* Preference Selectors: Checkboxes, radio buttons, or dropdowns for interests, use cases, or preferred notifications.

* Optional: Avatar upload functionality.

* Primary CTA: "Continue" or "Save & Proceed."

* Secondary CTA: "Skip for now" link.

  • User Interaction: Users provide information that helps tailor their experience. The "Skip" option allows faster access to the product.

4.4 Key Feature Introduction / Product Tour

  • Layout: Overlay or modal window appearing over the main application interface, highlighting specific UI elements.
  • Key Elements:

* Highlighted Area: A specific feature or UI element is visually emphasized.

* Tooltip/Callout: A concise explanation of the highlighted feature's purpose and benefit.

* Progress Indicator: "1 of 5" for tour steps.

* Navigation Buttons: "Next," "Back," and "Skip Tour" or "End Tour."

  • User Interaction: Users can click "Next" to advance through the tour, "Back" to review, or "Skip" to proceed directly to the application.

4.5 First Action Prompt

  • Layout: Can be integrated into the dashboard, a prominent modal, or a dedicated "getting started" section.
  • Key Elements:

* Headline: "Your First Step: [Specific Action]" (e.g., "Create Your First Project").

* Guiding Text: Short explanation of why this action is important and how it benefits the user.

* Primary CTA: Direct link or button to initiate the first action (e.g., "Start a New Project").

* Optional: Short instructional video or quick tips.

  • User Interaction: Users are encouraged to perform a core action that delivers immediate value, reinforcing the product's utility.

4.6 Onboarding Completion / Dashboard

  • Layout: The main application dashboard or a celebratory landing page.
  • Key Elements:

* Celebration Message: "Welcome to [Product Name]!" or "You're All Set!"

* Quick Links/Widgets: Access to key features, common tasks, or personalized recommendations.

* Support & Resources: Links to help documentation, tutorials, or customer support.

* Optional: A "What's New" section or a personalized checklist of next steps.

  • User Interaction: Users have full access to the product and are guided towards continued engagement.

5. Color Palettes

A consistent and thoughtfully chosen color palette is crucial for brand identity, usability, and conveying information effectively.

5.1 Primary Palette

  • Purpose: Dominant brand color, used for primary CTAs, main headers, and core branding elements.
  • Example:

* Brand Blue: #007BFF (Vibrant, trustworthy, professional)

* Usage: Buttons, active states, key icons, primary branding.

5.2 Secondary Palette

  • Purpose: Complementary to the primary color, used for secondary actions, progress indicators, or distinct sections.
  • Example:

* Accent Green: #28A745 (Growth, success, positive feedback)

*Usage

gemini Output

This document outlines the detailed design specifications for the "User Onboarding Flow," serving as a comprehensive guide for the development and implementation phases. The goal is to create an intuitive, engaging, and efficient onboarding experience that quickly introduces users to the product's value, encourages initial engagement, and reduces churn.


1. Introduction & Overview

The User Onboarding Flow is a critical sequence of interactions designed to guide new users through their initial experience with the platform. Its primary objectives are:

  • Reduce Time to Value (TTV): Enable users to quickly understand and experience the core benefits of the product.
  • Increase User Engagement: Foster early interaction and encourage users to complete key setup tasks.
  • Improve User Retention: Set users up for long-term success by providing a clear path to utilize the product effectively.
  • Gather Essential Information: Collect necessary user data for personalization and account management in a non-intrusive manner.
  • Educate & Orient: Familiarize users with the product's interface, key features, and navigation.

This deliverable provides detailed design specifications, wireframe descriptions, color palettes, and UX recommendations to achieve these objectives.

2. Design Specifications

2.1. User Onboarding Flow Stages

The onboarding process is broken down into the following logical and progressive stages:

  1. Welcome & Sign-Up/Login: Initial entry point, offering options to create an account or log in.
  2. Account Creation: Secure and guided process for new user registration.
  3. Basic Profile Setup: Collection of essential user information (e.g., name, avatar).
  4. Personalization & Preferences: Tailoring the user experience based on interests, roles, or goals.
  5. Feature Introduction / Product Tour (Optional but Recommended): A brief, interactive tour highlighting key functionalities.
  6. First Action / Goal Prompt: Guiding the user to complete their first meaningful task within the application.
  7. Onboarding Completion & Dashboard Access: Confirmation of successful onboarding and access to the main application interface.

2.2. Key Design Principles

The onboarding flow will adhere to the following design principles:

  • Clarity & Simplicity: Each step should have a clear purpose and minimal cognitive load. Use concise language and intuitive UI elements.
  • Progressive Disclosure: Present information and tasks incrementally, avoiding overwhelming the user.
  • Feedback & Guidance: Provide immediate visual and textual feedback for user actions and clear instructions for next steps.
  • Empowerment & Control: Allow users to skip optional steps, revisit previous steps, and understand the value of each input.
  • Consistency: Maintain a consistent visual language, interaction patterns, and tone of voice throughout the flow and with the overall application.
  • Delight & Engagement: Incorporate subtle animations, engaging copy, and a visually appealing design to make the process enjoyable.

2.3. Technical Considerations

  • Responsive Design: The onboarding flow must be fully responsive, providing an optimal experience across all devices (desktop, tablet, mobile).
  • Performance Optimization: Fast loading times and smooth transitions are crucial to maintain user engagement. Optimize images and assets.
  • Security: Implement robust security measures for account creation, password management, and data handling (e.g., HTTPS, secure password hashing, input validation).
  • Accessibility (A11Y): Adhere to WCAG 2.1 AA standards. Ensure keyboard navigation, screen reader compatibility, sufficient color contrast, and clear focus states.
  • Analytics Integration: Integrate tracking for each step completion, drop-off points, and user engagement metrics to enable continuous optimization.
  • Backend API Integration: Clearly define API endpoints for user registration, profile updates, and preference storage.

3. Wireframe Descriptions (Screen-by-Screen Breakdown)

This section details the layout, elements, and interactions for each screen in the onboarding flow.

3.1. Screen 1: Welcome & Sign-Up/Login

Purpose: The user's initial entry point, offering a clear path to begin their journey.

Layout:

  • Header: Prominent brand logo and application name.
  • Hero Section: Engaging headline conveying the product's core value proposition (e.g., "Unlock Your Potential," "Simplify Your Workflow").
  • Illustration/Animation: A relevant, high-quality visual that reinforces the value proposition and sets a positive tone.
  • Call to Action (CTA) Buttons:

* Primary CTA: "Get Started" / "Create Account" (prominent, primary brand color).

* Secondary CTA: "Log In" (less prominent, often text link or outlined button).

  • Optional: Brief, compelling testimonials or key feature highlights below the CTAs.

Elements:

  • Brand Logo
  • Catchy Headline (H1)
  • Value Proposition Subtitle (H2/P)
  • Illustrative Graphic/Animation
  • "Get Started" Button
  • "Log In" Link/Button

Interactions:

  • Clicking "Get Started" navigates to Screen 2 (Account Creation).
  • Clicking "Log In" navigates to a separate login screen.

3.2. Screen 2: Account Creation

Purpose: Securely gather essential information for creating a new user account.

Layout:

  • Header: Brand logo, "Create Your Account" title.
  • Progress Indicator: Visual representation of onboarding progress (e.g., "Step 1 of X").
  • Form Fields: Clearly labeled input fields for account details.
  • Password Requirements: Live feedback on password strength and criteria.
  • Social Login Options: Prominent buttons for "Continue with Google," "Continue with Apple," etc.
  • Privacy Policy/Terms & Conditions: Checkbox or link for user consent.
  • Navigation Buttons: "Continue" (primary) and "Back" (secondary/text link).

Elements:

  • "Create Your Account" Title (H2)
  • Progress Bar/Indicator
  • Email Address Input Field
  • Password Input Field

* Toggle for "Show Password"

* Password strength indicator

* Password requirements checklist (e.g., "Min 8 characters," "One uppercase," "One number")

  • "I agree to the [Terms of Service] and [Privacy Policy]" Checkbox
  • "Continue" Button
  • "Back" Button / Text Link
  • Separator: "OR"
  • Social Login Buttons (Google, Apple, etc.)

Interactions:

  • Real-time validation for email format and password criteria.
  • "Continue" button enabled only when all required fields are valid and terms are accepted.
  • Clicking "Continue" proceeds to Screen 3.
  • Clicking "Back" returns to Screen 1.
  • Social login redirects to respective authentication providers.

3.3. Screen 3: Basic Profile Setup

Purpose: Collect fundamental user profile information for a personalized experience.

Layout:

  • Header: Brand logo, "Tell Us About Yourself" title.
  • Progress Indicator: Updated progress bar.
  • Form Fields: Inputs for name, optionally avatar.
  • Skip Option: A clear "Skip for now" link/button for optional fields.
  • Navigation Buttons: "Continue" (primary) and "Back" (secondary/text link).

Elements:

  • "Tell Us About Yourself" Title (H2)
  • Progress Bar/Indicator
  • First Name Input Field
  • Last Name Input Field
  • Avatar Upload Component (Optional)

* Default avatar placeholder

* "Upload Image" button

* Preview of uploaded image

  • "Continue" Button
  • "Back" Button / Text Link
  • "Skip for now" Text Link (for the entire step, or per optional field)

Interactions:

  • "Continue" button enabled when required fields are filled.
  • Clicking "Continue" proceeds to Screen 4.
  • Clicking "Back" returns to Screen 2.
  • Clicking "Skip for now" proceeds to Screen 4, leaving optional fields blank.

3.4. Screen 4: Personalization & Preferences

Purpose: Allow users to tailor their experience based on their interests, roles, or goals, making the app more relevant.

Layout:

  • Header: Brand logo, "What brings you here?" / "Customize Your Experience" title.
  • Progress Indicator: Updated progress bar.
  • Selection Components: Multiple-choice options, tag selectors, or dropdowns for preferences.
  • Explanation: Brief text explaining how these choices will personalize the experience.
  • Skip Option: A clear "Skip for now" link/button.
  • Navigation Buttons: "Continue" (primary) and "Back" (secondary/text link).

Elements:

  • "Customize Your Experience" Title (H2)
  • Brief explanatory text (e.g., "This helps us tailor your dashboard and recommendations.")
  • Progress Bar/Indicator
  • Preference Selection (e.g., as a multi-select grid of cards/tags):

* "I am a..." (e.g., Creator, Marketer, Developer, Student)

* "My main goal is..." (e.g., Grow my audience, Learn new skills, Manage projects)

* "I'm interested in..." (e.g., AI, Web Development, Design, Productivity)

  • "Continue" Button
  • "Back" Button / Text Link
  • "Skip for now" Text Link

Interactions:

  • Users can select one or more options.
  • "Continue" button is always enabled (as this step is often optional).
  • Clicking "Continue" proceeds to Screen 5 (or Screen 6 if Screen 5 is skipped).
  • Clicking "Back" returns to Screen 3.
  • Clicking "Skip for now" proceeds to the next step without saving preferences.

3.5. Screen 5: Feature Introduction / Product Tour (Optional but Recommended)

Purpose: Briefly introduce key features and their locations within the application to reduce friction in initial exploration.

Layout:

  • Header: Brand logo, "Quick Tour" / "Get to Know [Product Name]" title.
  • Carousel/Slideshow: A series of short, visually engaging slides, each highlighting a core feature.
  • On-screen Hotspots/Tooltips: If an interactive tour, highlight specific UI elements.
  • Progress Indicator: Dots or numbers indicating current slide.
  • Navigation: "Next," "Previous," "Skip Tour" buttons.

Elements:

  • "Quick Tour" Title (H2)
  • Carousel Component:

* Image/Screenshot of a feature in action

* Short, descriptive text for each feature (e.g., "Collaborate Seamlessly," "Track Your Progress Effortlessly").

* "Next" button

* "Previous" button (after the first slide)

* Pagination dots/numbers

  • "Skip Tour" Button / Text Link

Interactions:

  • Clicking "Next" advances to the next slide.
  • Clicking "Previous" goes back to the previous slide.
  • Clicking "Skip Tour" proceeds directly to Screen 6.
  • The last slide's "Next" button transforms into "Finish Tour" or "Go to Dashboard" and proceeds to Screen 6.

3.6. Screen 6: First Action / Goal Prompt

Purpose: Guide the user to complete their first meaningful action, providing an immediate sense of accomplishment and value.

Layout:

  • Header: Brand logo, "Your First Step!" / "Let's Get Started" title.
  • Clear Call to Action: A prominent button or link encouraging the user to perform a specific, simple action.
  • Context/Benefit: Brief explanation of why this action is important.
  • Illustration/Icon: A visual cue related to the action.
  • Optional: Alternative actions or resources.

Elements:

  • "Your First Step!" Title (H2)
  • Motivational Text (e.g., "Create your first project to see the magic happen!").
  • Relevant Icon/Illustration
  • Primary CTA: "Create My First Project" / "Invite Your Team" / "Explore Templates"
  • Secondary Link: "Maybe later" / "Browse examples"

Interactions:

  • Clicking the Primary CTA navigates to the relevant feature area within the application.
  • Clicking "Maybe later" or the secondary link proceeds to Screen 7.

3.7. Screen 7: Onboarding Completion & Dashboard Access

Purpose: Confirm successful onboarding and provide a clear entry point to the main application dashboard, along with continued support.

Layout:

  • Header: Brand logo, "You're All Set!" / "Welcome to [Product Name]!" title.
  • Celebratory Visual: A positive illustration or animation (e.g., confetti, high-five).
  • Confirmation Message: A warm welcome and confirmation of readiness.
  • Primary CTA: "Go to Dashboard" / "Start Using [Product Name]".
  • Secondary Links: Quick links to helpful resources (e.g., "Help Center," "Tutorials," "Community Forum").
  • Persistent Help: Optionally, a small, subtle prompt for help or a tour reminder.

Elements:

  • "You're All Set!" Title (H2)
  • Celebratory Graphic/Animation
  • Welcome Message (e.g., "Your journey with [Product Name] begins now. We're excited to have you!")
  • "Go to Dashboard" Button
  • Helpful Resources Section (Optional):

* "Explore Tutorials" Link

* "Visit Help Center" Link

* "Join Our Community" Link

  • (Optional) A subtle "Need a quick refresher?" link to re-start the product tour.

Interactions:

  • Clicking "Go to Dashboard" navigates the user to the main application interface
gemini Output

User Onboarding Flow: Finalized Design Assets & UX Recommendations

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for your User Onboarding Flow. The goal is to create an intuitive, engaging, and value-driven experience that guides new users effectively and encourages long-term engagement.


1. Overall Design Philosophy & Goals

Our design philosophy for the onboarding flow centers on clarity, value, and empowerment. We aim to:

  • Communicate Value Quickly: Clearly articulate the core benefits and unique selling points of the product.
  • Minimize Friction: Streamline the process, reducing cognitive load and unnecessary steps.
  • Guide with Purpose: Lead users through key features that deliver their "Aha!" moment.
  • Build Confidence: Empower users to take their first meaningful action successfully.
  • Maintain Brand Consistency: Ensure the onboarding experience aligns seamlessly with the overall brand identity.

2. Core Design Principles

The following principles will govern the design of all onboarding screens:

  • Consistency: Uniformity in UI elements, typography, colors, and interaction patterns across all screens.
  • Clarity: Use simple language, clear visual hierarchies, and intuitive iconography.
  • Engagement: Employ visually appealing illustrations, subtle animations, and personalized content where appropriate.
  • Efficiency: Allow users to progress quickly, offer "skip" options for non-essential steps, and save progress.
  • Feedback: Provide immediate and clear feedback for user actions (e.g., success messages, error states).

3. Proposed Color Palette

A harmonious and accessible color palette is crucial for brand recognition and user comfort.

  • Primary Brand Colors:

* Dominant Accent (e.g., Brand Blue): #007BFF (RGB: 0, 123, 255)

Usage:* Primary call-to-action buttons, key interactive elements, progress indicators, prominent headings.

* Secondary Accent (e.g., Brand Green): #28A745 (RGB: 40, 167, 69)

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

  • Neutral Colors:

* Background (Light Gray): #F8F9FA (RGB: 248, 249, 250)

Usage:* Main screen backgrounds, subtle separation.

* Surface (White): #FFFFFF (RGB: 255, 255, 255)

Usage:* Card backgrounds, input fields, modals, content areas.

* Dark Text (Charcoal): #343A40 (RGB: 52, 58, 64)

Usage:* Primary body text, main headings for readability.

* Medium Text (Gray): #6C757D (RGB: 108, 117, 125)

Usage:* Secondary text, descriptions, labels, helper text.

  • Semantic Colors:

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

Warning: #FFC107 (RGB: 255, 193, 7) - Amber*

Error: #DC3545 (RGB: 220, 53, 69) - Red*

Info: #17A2B8 (RGB: 23, 162, 184) - Cyan*


4. Typography

A clear and readable type hierarchy enhances comprehension and guides the user's eye.

  • Primary Font (Headings & Key Information): "Inter" (or similar modern sans-serif like Montserrat, Poppins)

Rationale:* Modern, clean, highly readable at various sizes.

* H1 (Screen Title): 32px - 36px, Semi-Bold (#343A40)

* H2 (Section Title): 24px - 28px, Medium (#343A40)

* Body Lead: 18px, Regular (#343A40)

* Button Text: 16px - 18px, Semi-Bold (#FFFFFF for primary, #007BFF for secondary)

  • Secondary Font (Body Text & Details): "Roboto" (or similar highly readable sans-serif like Open Sans, Lato)

Rationale:* Excellent for long-form text, good contrast with the primary font.

* Body Text: 16px, Regular (#343A40)

* Small Text/Helper Text: 14px, Regular (#6C757D)

* Captions/Legal: 12px, Regular (#6C757D)


5. Iconography

Icons will be used to visually support text, enhance navigation, and clarify actions.

  • Style: Outlined or Line-Art style for a modern, clean, and lightweight feel. Icons should be consistent in stroke weight and corner radius.
  • Purpose: To quickly convey meaning, reduce cognitive load, and add visual interest without distraction.
  • Usage:

* Feature highlights.

* Navigation elements (e.g., "Skip," "Back").

* Progress indicators.

* Feedback messages (e.g., checkmark for success).


6. Wireframe Descriptions & Design Specifications (Step-by-Step Onboarding Screens)

We will break down the onboarding into logical, digestible steps.

6.1. Screen 1: Welcome & Value Proposition

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

* Header: (Optional) Small logo in top-left. "Skip" or "X" icon in top-right (light gray, 16px) allowing users to bypass onboarding.

* Central Content:

* Hero Illustration/Animation: A high-quality, brand-aligned illustration or subtle animation (centered, occupying ~40% of screen height) visually representing the product's primary benefit.

* Headline (H1): "Welcome to [Product Name]!" or "Unlock Your Potential with [Product Name]." (Centered, Primary Font, 36px, #343A40).

* Sub-headline/Description (Body Lead): A concise 1-2 sentence explanation of the product's main benefit. (Centered, Primary Font, 18px, #343A40).

* Navigation:

* Primary CTA Button: "Get Started" or "Next" (Full width, Primary Brand Color, 18px, White text, Semi-Bold).

* Progress Indicator: Small dots or a progress bar at the bottom (e.g., 1/5).

  • Design Specifications:

* Layout: Vertical stacking, generous white space around elements.

* UI Elements: Rounded corners for buttons (e.g., 8px).

* Imagery: Custom vector illustration or Lottie animation for engagement.

* Text: Clear hierarchy.

  • UX Recommendations:

* Emotional Connection: Use inviting language and a positive visual tone.

* Clear Value: Immediately answer "What's in it for me?"

* Low Commitment: "Get Started" feels less daunting than "Sign Up."

* Skippable: Always provide an option to skip the onboarding for experienced users or those in a hurry.

6.2. Screen 2-3: Feature Showcase / Benefit Tour

  • Purpose: Highlight 2-3 key features or benefits, demonstrating how the product solves user problems. Each feature can be a separate screen or combined with clear separation.
  • Wireframe Description:

* Header: Logo (top-left), "Skip" (top-right), "Back" arrow (top-left, next to logo, if previous screen was interactive).

* Central Content:

* Feature Icon/Mini-Illustration: A distinct icon or small illustration representing the feature. (Centered or left-aligned, e.g., 64x64px).

* Feature Title (H2): Concise title for the feature (e.g., "Streamline Your Workflow"). (Centered, Primary Font, 24px, #343A40).

* Feature Description (Body Text): 2-3 bullet points or a short paragraph explaining the benefit and how it works. (Centered, Secondary Font, 16px, #343A40).

* Navigation:

* Primary CTA Button: "Next" (Full width, Primary Brand Color, 18px, White text).

* Progress Indicator: Updated to reflect current step (e.g., 2/5, 3/5).

  • Design Specifications:

* Layout: Consistent padding, clear separation between text and visuals.

* UI Elements: Cards can be used for each feature if multiple are on one screen, with subtle shadows (#000000 with 10% opacity, 4px blur).

* Imagery: Consistent icon style.

  • UX Recommendations:

Focus on Benefits: Don't just list features; explain why* they matter to the user.

* Bite-sized Information: Keep descriptions brief and easy to scan.

* Visual Reinforcement: Use icons or illustrations that clearly represent the feature.

* Interactive Elements (Optional): Consider a subtle "hotspot" animation on a screenshot if demonstrating a complex interaction.

6.3. Screen 4: Personalization / Profile Setup

  • Purpose: Gather essential information to tailor the user experience and make the product more relevant.
  • Wireframe Description:

* Header: Logo, "Skip" (top-right).

* Central Content:

* Headline (H2): "Tell us a bit about yourself" or "Customize Your Experience." (Left-aligned, Primary Font, 24px, #343A40).

* Description (Small Text): "This helps us tailor [Product Name] to your needs." (Left-aligned, Secondary Font, 14px, #6C757D).

* Input Fields:

* Text inputs (e.g., "Your Name," "Company Name," "Role").

* Dropdowns/Radio buttons (e.g., "Industry," "Goals").

* Checkboxes for preferences.

* Each input field with clear label, placeholder text, and error state styling (e.g., red border, error message in Error Color).

* Navigation:

* Primary CTA Button: "Continue" or "Save & Continue" (Full width, Primary Brand Color, 18px, White text).

* Progress Indicator: Updated (e.g., 4/5).

  • Design Specifications:

* Layout: Forms should be well-aligned, with consistent spacing between labels, inputs, and helper text.

* UI Elements: Standardized input field height (e.g., 48px), 4px border radius. Focus state with Primary Brand Color border.

* Text: Labels in Medium Text color, placeholder text in Medium Text color.

  • UX Recommendations:

Minimalist Approach: Only ask for truly essential* information. Offer optional fields later.

* Clear Labels & Placeholders: Guide users on expected input.

* Inline Validation: Provide immediate feedback on input validity.

* Privacy Assurance: Briefly mention why the data is collected and how it's used (e.g., "We use this to personalize your dashboard").

* Progress Saving: If the user exits, their progress should be saved.

6.4. Screen 5: First Action / "Aha!" Moment

  • Purpose: Guide the user to take their first meaningful action within the product, leading to their "Aha!" moment.
  • Wireframe Description:

* Header: Logo, "Skip" (top-right).

* Central Content:

* Headline (H2): "Let's Get Started!" or "Your First Step." (Left-aligned, Primary Font, 24px, #343A40).

* Instructional Text (Body Lead): Clear, concise instructions on what to do. (e.g., "Create your first project," "Invite your team," "Connect your first integration"). (Left-aligned, Primary Font, 18px, #343A40).

* Visual Cue: A screenshot or animated GIF demonstrating the first action, or an icon pointing to the relevant area in the actual product.

* Navigation:

* Primary CTA Button: Specific to the action (e.g., "Create First Project," "Go to Dashboard"). (Full width, Primary Brand Color, 18px, White text).

* Secondary CTA Link (Optional): "Explore Dashboard" or "Learn More." (Text link, Primary Brand Color, 16px).

* Progress Indicator:

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