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

User Onboarding Flow: Research & Design Requirements

This document outlines the comprehensive design specifications, 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 journey that seamlessly integrates new users into the platform, highlights core value, and minimizes friction.


1. Design Specifications

This section details the functional and technical requirements that will govern the design and development of the onboarding flow.

1.1 Functional Requirements

  • Guided Progression: A clear, step-by-step flow with visual indicators (e.g., "Step X of Y") to show progress and manage user expectations.
  • Optionality & Flexibility: Users should have the option to skip non-essential steps (e.g., detailed profile setup, feature tour) and complete them later.
  • Clear Call-to-Actions (CTAs): Prominent and descriptive buttons for "Continue," "Skip," "Back," and "Complete."
  • Input Validation & Error Handling: Real-time validation for form fields (e.g., email format, password strength) with clear, actionable error messages.
  • Account Creation Options: Support for traditional email/password registration and social logins (Google, Apple, Facebook where applicable).
  • Data Privacy & Consent: Clear presentation of Terms of Service and Privacy Policy, with explicit user consent prompts where necessary.
  • Responsiveness: The entire onboarding flow must be fully responsive and optimized for various screen sizes (desktop, tablet, mobile).
  • Revisit Onboarding: Users should have the option to revisit or complete skipped onboarding steps from their profile or settings.
  • Analytics Integration: Mechanisms to track user progression, drop-off points, and completion rates to enable continuous optimization.
  • Personalization Inputs: Ability to collect initial user preferences or interests to tailor the subsequent application experience.

1.2 Technical Considerations

  • API Endpoints: Robust backend API endpoints for user registration, profile updates, preference storage, and authentication token management.
  • Frontend Framework Agnostic: Design should be adaptable to common frontend frameworks (e.g., React, Vue, Angular) with clear component separation.
  • Authentication Service Integration: Seamless integration with OAuth providers for social logins.
  • Database Schema: Appropriate database design to store user profiles, preferences, and onboarding status.
  • Performance Optimization: Ensure fast loading times for each step, smooth transitions, and efficient resource loading to prevent user frustration.
  • Accessibility Standards: Adherence to WCAG 2.1 AA guidelines for color contrast, keyboard navigation, screen reader compatibility, and ARIA attributes.
  • Security: Implementation of industry-standard security practices for data transmission and storage (e.g., HTTPS, password hashing).

2. Wireframe Descriptions

This section outlines the key screens and their primary elements within the user onboarding journey.

2.1 Screen 1: Welcome & Value Proposition

  • Purpose: Greet the user, articulate the core value proposition of the platform, and encourage initial engagement.
  • Elements:

* Hero Section: Prominent headline (e.g., "Unlock Your Potential," "Simplify Your Workflow"), concise sub-headline explaining benefits.

* Visual: Engaging hero image, animation, or short video demonstrating a key benefit.

* Primary CTA: "Get Started" or "Create My Account" button.

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

* Branding: Company logo prominently displayed.

2.2 Screen 2: Account Creation / Sign-Up

  • Purpose: Facilitate new user registration through various methods.
  • Elements:

* Headline: "Create Your Account" or "Join Us."

* Email/Password Fields: Input fields for email, password (with show/hide toggle), and password confirmation.

* Social Login Buttons: Prominent buttons for "Continue with Google," "Continue with Apple," "Continue with Facebook."

* Divider: "OR" separator between email/password and social login options.

* Primary CTA: "Sign Up" button.

* Secondary Link: "Already have an account? Log In" link.

* Legal Links: Links to "Terms of Service" and "Privacy Policy."

* Progress Indicator: "Step 1 of X."

2.3 Screen 3: Basic Profile Setup (Optional)

  • Purpose: Collect essential user information for initial personalization and identity.
  • Elements:

* Headline: "Tell Us About Yourself" or "Set Up Your Profile."

* Input Fields: Name (First & Last), optional username.

* Avatar Upload: Option to upload a profile picture (with default avatar).

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

* Secondary CTA: "Skip for now" link.

* Progress Indicator: "Step 2 of X."

2.4 Screen 4: Personalization & Preferences

  • Purpose: Gather information about user interests, goals, or roles to tailor the platform experience.
  • Elements:

* Headline: "What brings you here?" or "Personalize Your Experience."

* Question/Options: Multiple choice or multi-select options (e.g., "I want to learn X," "I need to manage Y," "My role is Z").

* Input Fields (Optional): Short text input for "Other" or specific details.

* Visuals: Engaging icons or illustrations for each option.

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

* Secondary CTA: "Skip for now" link.

* Progress Indicator: "Step 3 of X."

2.5 Screen 5: Feature Tour / Interactive Walkthrough (Optional)

  • Purpose: Introduce key features and demonstrate basic functionality.
  • Elements:

* Headline: "Quick Tour of [Platform Name]" or "Discover Key Features."

* Carousel/Slides: Series of screens, each highlighting a core feature with a screenshot/short animation and a concise description.

* Interactive Hotspots (Optional): Small, clickable areas on a mock-up screen that reveal tooltips about specific elements.

* Navigation: "Next Feature" button, dot indicators for carousel, "Previous" button.

* Secondary CTA: "Skip Tour" or "Go to Dashboard."

* Progress Indicator: "Step 4 of X."

2.6 Screen 6: First Action / Onboarding Completion

  • Purpose: Guide the user to perform their first meaningful action within the platform, reinforcing value.
  • Elements:

* Celebratory Message: "You're All Set!" or "Welcome Aboard!"

* Personalized Greeting: "Hi [User's Name]!"

* Primary CTA: A clear, actionable button leading to the core value (e.g., "Create Your First Project," "Explore Recommendations," "Start Browsing").

* Secondary CTAs: Links to helpful resources (e.g., "Visit Help Center," "Watch a Tutorial").

* Optional Animation: Confetti or a subtle celebratory animation.

* Progress Indicator: "Step X of X (Complete)."


3. Color Palettes

The chosen color palette aims for professionalism, approachability, and optimal readability, aligning with modern UI/UX principles.

3.1 Primary Palette

  • Primary Brand Color: [#3366FF] (Example: A vibrant, trustworthy blue)

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

* Rationale: Evokes trust, reliability, and professionalism. Highly visible and draws attention effectively.

  • Dark Primary: [#0047CC]

* Usage: Hover states for primary CTAs, darker text elements, accents.

* Rationale: Provides depth and visual feedback on interaction.

3.2 Secondary Palette

  • Secondary Accent Color: [#66CC99] (Example: A fresh, complementary green)

* Usage: Secondary CTAs, subtle highlights, success indicators, illustrations.

* Rationale: Offers a pleasant contrast to the primary color, adds a touch of vibrancy without overpowering.

  • Light Secondary: [#E6F5EC]

* Usage: Backgrounds for success messages, light accents.

3.3 Neutral Palette

  • Background White: [#FFFFFF]

* Usage: Main screen backgrounds, card elements.

* Rationale: Clean, spacious, and provides excellent contrast for content.

  • Light Gray: [#F5F5F5]

* Usage: Section dividers, subtle backgrounds for optional elements, inactive states.

* Rationale: Adds subtle visual separation without being distracting.

  • Medium Gray: [#CCCCCC]

* Usage: Borders, disabled states, placeholder text.

* Rationale: Provides clear visual cues for non-interactive or secondary elements.

  • Dark Gray (Text): [#333333]

* Usage: Primary text, headings.

* Rationale: Optimal for readability on light backgrounds.

  • Light Gray (Text): [#666666]

* Usage: Secondary text, descriptions, helper text.

* Rationale: Good readability, less emphasis than primary text.

3.4 Semantic Colors

  • Success: [#4CAF50] (Green) - For successful actions, completion.
  • Warning: [#FFC107] (Amber) - For warnings, attention needed.
  • Error: [#F44336] (Red) - For validation errors, critical alerts.

3.5 Typography

  • Font Family: [Inter] (Example: A clean, modern sans-serif font)

* Usage: All text elements.

* Rationale: Highly readable across various screen sizes and maintains a professional aesthetic.

  • Heading Sizes: H1, H2, H3 for clear hierarchy.
  • Body Text: Standard and small sizes for descriptions and helper text.

4. UX Recommendations

These recommendations focus on optimizing the user experience to ensure a smooth, enjoyable, and effective onboarding process.

4.1 Clarity & Guidance

  • Progress Indicators: Implement clear, visual progress bars or step-by-step indicators at the top of each screen (e.g., "Step 3 of 5").
  • Descriptive Headings & Subheadings: Use concise and informative headings to clearly state the purpose of each step.
  • Contextual Help: Provide small info icons or tooltips for complex fields or concepts, offering brief explanations without cluttering the interface.

4.2 User Control & Flexibility

  • "Skip for now" Options: Clearly visible "Skip for now" links for optional steps, allowing users to proceed without feeling forced.
  • "Back" Button: A prominent "Back" button or arrow to allow users to easily review or correct previous inputs.
  • Exit/Close Option: For multi-step flows, offer an option to close or exit the onboarding entirely (with a confirmation prompt if progress would be lost).

4.3 Engagement & Feedback

  • Micro-interactions: Incorporate subtle animations for button clicks, form field focus, and progress bar updates to provide instant visual feedback.
  • Personalized Content: Use collected data (e.g., name, preferences) to personalize messages and recommendations within the onboarding and the initial application experience.
  • Visual Storytelling: Use engaging illustrations, icons, or short animations to make the onboarding process more visually appealing and less text-heavy.
  • Positive Reinforcement: Use celebratory messages or animations upon completion of key steps or the entire onboarding.

4.4 Efficiency & Performance

  • Real-time Validation: Implement immediate feedback for form field errors (e
gemini Output

User Onboarding Flow: Detailed Design Specifications

This document outlines the comprehensive design specifications for the "User Onboarding Flow," translating the core requirements into actionable visual and interactive elements. The goal is to create an intuitive, engaging, and efficient onboarding experience that guides new users to their first moment of value quickly and successfully.


1. Overall Onboarding Flow Strategy & Goals

Goal: To seamlessly introduce new users to the platform, facilitate account setup, highlight key features, and encourage initial engagement, ultimately reducing churn and increasing user retention.

Key Objectives:

  • Reduce Time to Value (TTV): Enable users to experience the core benefit of the platform as quickly as possible.
  • Increase Account Completion Rate: Maximize the number of users who successfully set up their profiles and preferences.
  • Enhance User Understanding: Clearly communicate the platform's purpose and key functionalities.
  • Build Early Engagement: Encourage users to perform their first meaningful action.
  • Establish Brand Trust: Convey professionalism and ease of use.

Core Principles:

  • Progressive Disclosure: Introduce information and actions in manageable chunks.
  • Clear Guidance: Provide explicit instructions and visual cues.
  • Personalization: Offer opportunities to tailor the experience where appropriate.
  • Feedback & Reinforcement: Acknowledge user actions and progress.
  • Optionality: Allow users to skip or return to steps if desired (with clear guidance).

2. Key Stages of the Onboarding Flow

The onboarding flow is broken down into distinct, logical stages, each with a specific purpose.

  1. Welcome & Value Proposition: Hook the user and set expectations.
  2. Account Creation/Sign Up: Securely register the user.
  3. Basic Profile Setup: Gather essential information for personalization.
  4. Onboarding Preferences/Goals: Understand user intent and tailor subsequent steps.
  5. Feature Introduction/Quick Tour (Optional): Highlight critical functionalities.
  6. First Action / Call to Value: Guide the user to their initial success.
  7. Completion & Dashboard Entry: Seamless transition to the main application.

3. Detailed Design Specifications Per Stage

3.1. Stage 1: Welcome & Value Proposition

  • Purpose: Capture user attention, reiterate the core value, and initiate the signup process.
  • Wireframe Description:

* Layout: Full-screen hero section with a compelling background image/illustration.

* Elements:

* Headline: Large, impactful statement summarizing the core benefit (e.g., "Unlock Your Creative Potential," "Streamline Your Workflow").

* Sub-headline/Tagline: Concise explanation of how the platform delivers the benefit.

* Call-to-Action (CTA) Button: Prominently displayed, primary button (e.g., "Get Started," "Sign Up for Free").

* Optional: Small, secondary CTA for existing users ("Log In").

* Social Proof (Optional): Testimonials, partner logos, or user count to build trust.

* Visual Element: High-quality, relevant image or animation that conveys the platform's essence.

  • User Interactions:

* Clicking "Get Started" proceeds to Account Creation.

* Clicking "Log In" (if present) redirects to the login page.

  • UX Recommendations:

* Use clear, benefit-oriented language.

* Ensure the primary CTA stands out visually.

* Optimize for fast loading times.

3.2. Stage 2: Account Creation/Sign Up

  • Purpose: Collect necessary credentials for user account creation.
  • Wireframe Description:

* Layout: Centered form on a clean background, potentially with a brand-aligned sidebar or header.

* Elements:

* Progress Indicator: (e.g., "Step 1 of 6") to manage expectations.

* Headline: "Create Your Account."

* Input Fields:

* Email Address (primary login identifier)

* Password (with "Show/Hide" toggle and strength indicator)

* Confirm Password

* Social Sign-Up Options: Prominent buttons for "Continue with Google," "Sign up with Apple," etc., above or below the standard form.

* Terms & Privacy Checkbox: Required, with links to legal documents.

* Primary CTA: "Create Account" or "Next."

* Secondary CTA: "Already have an account? Log In."

* Error Messages: Clear, inline validation messages.

  • User Interactions:

* Form submission via "Create Account" button.

* Clicking social sign-up buttons initiates respective OAuth flows.

* Password visibility toggle.

* Real-time input validation.

  • UX Recommendations:

* Prioritize social sign-up for ease.

* Provide strong password requirements and visual feedback.

* Use clear, concise error messages that guide the user to correction.

* Autofill suggestions where possible.

3.3. Stage 3: Basic Profile Setup

  • Purpose: Gather essential user information for initial personalization and communication.
  • Wireframe Description:

* Layout: Multi-step form or a single, scrollable form with logical sections.

* Elements:

* Progress Indicator: Updated to reflect current step.

* Headline: "Tell Us About Yourself" or "Complete Your Profile."

* Input Fields:

* First Name

* Last Name

* Company/Organization (Optional, if B2B)

* Role/Industry (Dropdown or text input)

* Profile Picture Upload (Optional, with default avatar)

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

* Secondary CTA: "Skip for now" (optional, but recommended for non-critical fields).

* Contextual Help: Small info icons or tooltips for complex fields.

  • User Interactions:

* Input data into fields.

* Select options from dropdowns.

* Upload an image (if applicable).

* Navigation via "Continue" or "Skip."

  • UX Recommendations:

* Clearly label optional fields.

* Use smart defaults where possible.

* Provide a visual indicator of profile completeness.

* Ensure responsive design for image upload.

3.4. Stage 4: Onboarding Preferences/Goals

  • Purpose: Understand user intent and tailor the subsequent experience, providing a personalized path to value.
  • Wireframe Description:

* Layout: Card-based selection, multi-choice questions, or a "choose your path" interface.

* Elements:

* Progress Indicator: Updated.

* Headline: "What brings you here?" or "How do you plan to use [Platform Name]?"

* Option Selection:

* Cards with icons and short descriptions (e.g., "Manage Projects," "Create Content," "Learn New Skills").

* Multiple-choice questions with radio buttons or checkboxes.

* Optional: "Other" text input for specific use cases.

* Primary CTA: "Continue" or "Personalize My Experience."

* Secondary CTA: "Skip for now" (if the customization is not critical).

  • User Interactions:

* Select one or more options.

* Submit choices to proceed.

  • UX Recommendations:

* Limit the number of choices to avoid decision fatigue.

* Use clear, benefit-oriented language for each option.

* Visually highlight selected options.

* Use these preferences to dynamically adjust the following steps or initial dashboard view.

3.5. Stage 5: Feature Introduction/Quick Tour (Optional)

  • Purpose: Briefly introduce core functionalities relevant to the user's stated goals. This step can be optional or context-sensitive.
  • Wireframe Description:

* Layout:

* Option A (Interactive Tour): Overlay/modal with highlighted elements and descriptive tooltips, guiding the user through the actual UI.

* Option B (Carousel/Walkthrough): Full-screen slides with illustrations, short text, and a "Next" button.

* Elements:

* Progress Indicator: (e.g., "1 of 3") if a carousel.

* Headline: "Quick Tour" or "Getting Started with [Feature Name]."

* Content: Short, benefit-driven explanations of key features.

* Visuals: Screenshots, short GIFs, or custom illustrations.

* CTAs: "Next," "Back," "Skip Tour," "End Tour," "Go to [Feature]."

  • User Interactions:

* Navigate through tour steps.

* Click "Skip Tour" to exit.

* Interact with highlighted UI elements (if interactive tour).

  • UX Recommendations:

* Keep tours concise (max 3-5 steps).

* Focus on "why" a feature is useful, not just "what" it is.

* Allow users to skip the tour at any point.

* Consider micro-interactions and animations for engagement.

* Make it context-aware based on previous preferences.

3.6. Stage 6: First Action / Call to Value

  • Purpose: Guide the user to perform a meaningful action that demonstrates the platform's core value. This is crucial for early retention.
  • Wireframe Description:

* Layout: Often a dedicated "empty state" or a clear prompt within the main application interface.

* Elements:

* Headline: "Time to create your first [item/project]!" or "Let's get started."

* Instructional Text: Clear, concise instructions on how to take the first step.

* Primary CTA: Direct link to initiate the action (e.g., "Create New Project," "Upload First File," "Invite Team Member").

* Illustrations/Animations: Engaging visuals that represent the success of performing the action.

* Optional: Links to helpful resources (tutorials, documentation).

  • User Interactions:

* Click the primary CTA to perform the first action.

* Access support resources.

  • UX Recommendations:

* Make this action as simple and low-friction as possible.

* Ensure the action directly delivers value.

* Provide positive reinforcement upon completion of the first action.

* Tailor this action based on user preferences from Stage 4.

3.7. Stage 7: Completion & Dashboard Entry

  • Purpose: Celebrate onboarding completion and seamlessly transition the user into the main application dashboard.
  • Wireframe Description:

* Layout: Full-screen confirmation or a smooth fade/slide into the main dashboard.

* Elements:

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

* Optional: Small celebratory animation or graphic.

* Primary CTA (if a separate screen): "Go to Dashboard" or "Start Exploring."

* Contextual Information: A brief overview of what the user can do next on the dashboard.

* Initial Dashboard State: The dashboard should be populated with relevant, personalized content or clear prompts for further action based on the onboarding journey.

  • User Interactions:

* Clicking the CTA transitions to the dashboard.

  • UX Recommendations:

* Make this transition smooth and quick.

* Ensure the dashboard doesn't feel overwhelming.

* Consider subtle in-app prompts for continued engagement (e.g., "What's next for you?").

* Send a welcome email shortly after this stage.


4. General UX Recommendations Across the Flow

  • Accessibility:

* Ensure sufficient color contrast for all text and UI elements.

* Provide clear focus states for keyboard navigation.

* Use semantic HTML and ARIA attributes for screen reader compatibility.

* Support text resizing and provide captions/transcripts for any videos.

  • Performance:

* Optimize image sizes and use efficient loading strategies (e.g., lazy loading).

* Minimize JavaScript and CSS to ensure quick load times between steps.

* Implement client-side validation for immediate feedback.

  • Responsiveness:

* Design and test the entire flow across various screen sizes (desktop, tablet, mobile) to ensure a consistent and usable experience.

  • Error Handling:

* Provide clear, actionable, and user-friendly error messages that explain the problem and suggest a solution.

* Use inline validation for forms to prevent submission errors.

  • Feedback & Reinforcement:

* Use micro-interactions (e.g., button presses, form field changes) to provide immediate feedback.

* Employ positive reinforcement (e.g., "Great job!", "Profile updated!") upon successful completion of tasks.

  • Progress Indicators:

* Utilize clear, visually distinct progress bars or step indicators to show users where they are in the flow and how much is left.

  • Consistency:

* Maintain consistent branding, terminology, and UI patterns throughout the entire onboarding process.

  • Localization (Future Consideration):

* Design with internationalization in mind, allowing for easy translation of text and adaptation of cultural norms.


5. Color Palettes

A cohesive color palette is crucial for brand identity and user experience.

  • Primary Brand Color: [#4A90E2] (A vibrant, trustworthy blue - Example: Use for main CTAs, headers, active states)
  • Secondary Brand Color: [#50E3C2] (A refreshing, engaging teal - Example: Use for secondary CTAs, highlights, progress indicators)
  • Accent Color: [#F5A623] (A warm, inviting orange/yellow - Example: Use for alerts, important notifications, subtle highlights)
  • Neutral Palette:

* Dark Gray (Text/Headers): [#333333]

* Medium Gray (Secondary Text/Borders): [#888888]

* Light Gray (Backgrounds/Dividers): [#F5F5F5]

* White (Primary Background): [#FFFFFF]

  • Semantic Colors:

* Success: [#7ED321] (Green - for successful actions, confirmations)

* Warning: [#F8E71C] (Yellow - for warnings, cautionary messages)

* Error: [#D0021B] (Red - for error messages, critical alerts)

Usage Guidelines:

  • Use primary and secondary colors strategically to guide user attention.
  • Maintain a high contrast ratio for text on backgrounds (WCAG 2.1 AA compliant).
  • Avoid using too many colors simultaneously to prevent visual clutter.

6. Typography

Typography plays a significant role in readability and brand perception.

  • Primary Font Family (Headings & Key UI): Montserrat (or similar modern sans-serif like Lato, Open Sans)

* Rationale: Clean, professional, highly readable at various sizes.

  • Secondary Font Family (Body Text & Forms): Roboto (or similar highly legible sans-serif like Noto Sans, Source Sans Pro)

* Rationale: Excellent readability for long-form content and form inputs.

  • Font Weights:

* Light (300) - For subtle details or secondary information.

* Regular (400) - Standard body text.

* Medium (500) - For emphasis, button text.

* Semi-Bold (600) / Bold (700) - For headlines, strong emphasis, CTAs.

  • Font Sizes (Responsive Scale - examples for Desktop):

* Headlines (H1): 48px - 36px

* Section Titles (H2): 32px - 28px

*

gemini Output

Finalized Design Assets: User Onboarding Flow

This document provides a comprehensive overview of the finalized design assets for the User Onboarding Flow, including detailed design specifications, wireframe descriptions, a defined color palette, and key User Experience (UX) recommendations. This deliverable aims to ensure a smooth, engaging, and effective first-time user experience.


1. Design Specifications

Our design approach prioritizes clarity, modernity, and user-centricity to create an intuitive and visually appealing onboarding journey.

1.1. Overall Aesthetic & Principles

  • Modern & Clean: Minimalist design with ample white space to reduce cognitive load.
  • Intuitive & Guided: Clear visual hierarchy and progressive disclosure to guide users step-by-step.
  • Engaging & Welcoming: Use of friendly typography, relevant illustrations, and a warm color palette to create a positive first impression.
  • Consistent: Uniformity in design elements (typography, iconography, button styles) across all screens for a cohesive brand experience.
  • Accessible: Adherence to WCAG guidelines for contrast, typography, and interactive element sizing.

1.2. Typography

  • Primary Font Family: [e.g., Inter / Open Sans]

* Purpose: Headings, prominent text, and primary UI elements.

* Styles: Regular, Medium, Semi-Bold, Bold.

  • Secondary Font Family: [e.g., Lato / Roboto]

* Purpose: Body text, labels, and less prominent information.

* Styles: Light, Regular, Medium.

  • Font Sizing (Responsive Scale - examples):

* H1 (Screen Titles): 32px - 48px (Mobile - Desktop)

* H2 (Section Headers): 24px - 36px

* Body Text (Paragraphs): 16px - 18px

* Labels/Small Text: 12px - 14px

1.3. Iconography

  • Style: Line-based, slightly rounded corners, consistent stroke weight.
  • Purpose: To visually represent concepts, enhance navigation, and break up text.
  • Source: Utilize a well-known icon library (e.g., Font Awesome, Material Icons, or custom-designed SVG icons) for scalability and consistency.

1.4. Imagery & Illustrations

  • Style: Flat or slightly textured illustrations, reflecting the brand's personality (e.g., abstract, character-based, geometric).
  • Purpose: To visually communicate value propositions, explain features, and add personality to the onboarding flow. Avoid stock photos where custom illustrations can convey brand uniqueness.
  • Placement: Strategically placed on welcome and feature showcase screens to support the messaging.

1.5. Layout & Spacing

  • Grid System: 8pt grid system for consistent spacing and alignment of elements.
  • Margins & Padding: Generous use of white space around elements and sections to improve readability and focus.
  • Responsiveness: Designs will be optimized for various screen sizes (mobile, tablet, desktop) ensuring a seamless experience across devices.

1.6. Interaction Design

  • Button States: Clear visual feedback for default, hover, active, and disabled states.
  • Input Fields: Well-defined states for default, focused, error, and success.
  • Transitions: Subtle, smooth transitions and animations (e.g., slide, fade) to enhance perceived performance and delight users, without being distracting.

2. Wireframe Descriptions

Below are detailed descriptions of the key screens within the User Onboarding Flow, outlining their purpose, layout, and interactive elements.

2.1. Screen 1: Welcome / Splash Screen

  • Purpose: To make a strong first impression, introduce the brand, and invite users to begin their journey.
  • Layout:

* Top: Brand Logo (prominently displayed).

* Middle: Large, engaging illustration or hero image relevant to the product's core value. Below the illustration, a concise, catchy headline (H1) and a short, welcoming tagline (H2/Body text).

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

  • User Interaction: Tapping the primary CTA advances the user to the next step.

2.2. Screen 2: Value Proposition / Feature Showcase (3-4 screens)

  • Purpose: To highlight the core benefits and key features of the product, building excitement and demonstrating value.
  • Layout (per screen):

* Top: Progress Indicator (e.g., dots or a progress bar) showing the user's position within the showcase. Optional "Skip" button.

* Middle: Large, clear illustration or icon representing the feature/benefit. Below, a compelling headline (H2) describing the feature, followed by 1-2 sentences of concise body text explaining its value.

* Bottom: Primary CTA button "Next" (for all but the last screen), or "Continue" (for the last screen).

  • User Interaction:

* Tapping "Next" or swiping navigates to the subsequent value proposition screen.

* Tapping "Skip" bypasses the remaining showcase screens and moves the user directly to the Sign Up/Log In screen.

2.3. Screen 3: Sign Up / Log In

  • Purpose: To allow new users to create an account and existing users to log in.
  • Layout:

* Top: "Sign Up" and "Log In" tabs/buttons for easy toggling between modes.

* Middle (Sign Up Mode):

* Input fields for Email, Password, Confirm Password.

* Optional: "I agree to Terms & Conditions" checkbox with a link.

* Social login options (e.g., "Continue with Google," "Continue with Apple").

* Middle (Log In Mode):

* Input fields for Email, Password.

* "Forgot Password?" link.

* Social login options.

* Bottom: Primary CTA button "Sign Up" or "Log In" (contextual to the mode).

  • User Interaction:

* Users enter credentials and tap the respective CTA.

* Tapping social login options initiates the third-party authentication flow.

* Tapping "Forgot Password?" navigates to a password reset flow.

2.4. Screen 4: Profile Setup / Personalization (Optional)

  • Purpose: To gather basic user preferences or information to tailor the initial experience, making it more relevant.
  • Layout:

* Top: Progress bar indicating completion percentage. Clear headline (H2) asking a specific question (e.g., "What brings you here?", "Tell us about your interests"). Optional "Skip for now" link.

* Middle: Interactive elements for input (e.g., dropdowns, radio buttons, checkboxes, multi-select tags, text input fields).

* Bottom: Primary CTA button "Continue" or "Finish Setup".

  • User Interaction:

* Users select/input their preferences.

* Tapping "Continue" saves preferences and moves to the next screen.

* Tapping "Skip for now" bypasses this step.

2.5. Screen 5: Permissions Request (If Applicable)

  • Purpose: To clearly explain why certain device permissions (e.g., notifications, location, camera) are needed and request them.
  • Layout:

* Top: Headline (H2) explaining the permission (e.g., "Enable Notifications to Stay Updated").

Middle: Clear, concise body text explaining the benefit* to the user of granting the permission. Supporting illustration or icon.

* Bottom: Two CTA buttons: Primary "Allow [Permission]" and Secondary "Not Now" or "Deny".

  • User Interaction:

* Tapping "Allow" triggers the native device permission prompt.

* Tapping "Not Now" dismisses the request, potentially with an option to enable later in settings.

2.6. Screen 6: Onboarding Complete / Dashboard / First Task

  • Purpose: To celebrate the successful completion of onboarding and guide the user to their first meaningful interaction or the main dashboard.
  • Layout:

* Top: "You're All Set!" or "Welcome!" headline (H1).

* Middle: Engaging illustration or animation (e.g., confetti) for a celebratory feel. Short, encouraging message about what to do next.

* Bottom: Primary CTA button "Go to Dashboard" or "Start Your First [Task]". Optional: Secondary CTA "Take a Quick Tour" or "Explore Features."

  • User Interaction: Tapping the primary CTA takes the user to the core product experience.

3. Color Palettes

The chosen color palette is designed to be inviting, professional, and brand-aligned, ensuring accessibility and clear visual hierarchy.

3.1. Primary Brand Colors

  • Primary Accent: #3498DB (Vibrant Blue)

* Usage: Main Call-to-Action buttons, active states, key headings, brand elements.

  • Secondary Accent: #2ECC71 (Emerald Green)

* Usage: Secondary CTAs, success indicators, complementary brand elements.

3.2. Neutral Palette

  • Dark Text/Primary: #2C3E50 (Dark Charcoal)

* Usage: Main body text, important labels, large headings.

  • Subtle Text/Secondary: #7F8C8D (Medium Gray)

* Usage: Secondary text, helper text, less prominent information.

  • Light Gray/Borders: #DCE4E7 (Light Gray)

* Usage: Input field borders, dividers, subtle backgrounds.

  • Background White: #FFFFFF

* Usage: Primary screen backgrounds, content cards.

3.3. Semantic Colors

  • Success: #2ECC71 (Emerald Green - same as Secondary Accent)

* Usage: Confirmation messages, successful actions.

  • Warning: #F39C12 (Orange)

* Usage: Cautionary alerts, non-critical warnings.

  • Error: #E74C3C (Red)

* Usage: Error messages, invalid input states.


4. UX Recommendations

These recommendations are crucial for optimizing the user onboarding experience, ensuring high completion rates and early user engagement.

4.1. Keep it Concise and Focused

  • Minimal Steps: Aim for 3-5 core onboarding screens (excluding sign-up/login). Each screen should have a single, clear purpose.
  • Short, Actionable Text: Use plain language and avoid jargon. Keep headlines brief and body text to 1-2 sentences.

4.2. Show, Don't Just Tell

  • Visuals Over Text: Leverage engaging illustrations, icons, and even short animations to explain features and benefits more effectively than lengthy text.
  • Contextual Examples: If input is required, provide examples of expected input within fields.

4.3. Provide Clear Progress and Control

  • Progress Indicators: Use dots, a progress bar, or step numbers to visually communicate how far along the user is in the onboarding process. This reduces anxiety.
  • Skip Options: Offer a "Skip" or "Skip for now" option on non-essential screens (e.g., feature showcase, personalization) to allow experienced users or those in a hurry to bypass them.
  • Back Button: Ensure a clear and functional back button on multi-step forms to allow users to correct mistakes.

4.4. Guide to the "Aha!" Moment

  • Early Value: Design the onboarding to quickly lead users to the core value proposition or their first successful interaction with the product. The goal is to get them to experience the "Aha!" moment as soon as possible.
  • First Task Guidance: After onboarding, provide clear guidance or a small, achievable first task to help users get started with the product's core functionality.

4.5. Personalization (When Appropriate)

  • Tailored Experience: If applicable, incorporate optional personalization steps to make the user's initial experience more relevant. However, ensure these steps are quick and clearly beneficial to the user.

4.6. Robust Error Handling

  • Inline Validation: Provide real-time feedback for input fields (e.g., "Password too short," "Invalid email format").
  • Clear Error Messages: Error messages should be specific, helpful, and suggest a solution rather than just stating a problem.
  • Preventative Measures: Disable buttons until all required fields are correctly filled.

4.7. Accessibility Considerations

  • High Contrast: Ensure sufficient color contrast for text and interactive elements (WCAG AA standards).
  • Legible Typography: Use appropriate font sizes and line heights for readability.
  • Touch Targets: Ensure interactive elements (buttons, links) have adequate touch target sizes (minimum
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);}});}