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

User Onboarding Flow: Design Requirements & Strategy (Step 1 of 3)

This document outlines the comprehensive design requirements and strategic recommendations for the "User Onboarding Flow." This foundational step ensures a clear vision for creating an intuitive, engaging, and effective first-time user experience.


1. Project Overview & Goals

Project Title: User Onboarding Flow Design Strategy

Step Description: Research and define detailed design requirements, wireframe concepts, color palettes, and UX recommendations for the User Onboarding Flow. This output serves as the blueprint for subsequent design and development phases.

Overall Goal of Onboarding:

To seamlessly guide new users through their initial interaction with the product, enabling them to understand its core value proposition, set up their account effectively, and achieve their first "Aha! Moment" quickly and effortlessly. A successful onboarding flow will reduce churn, increase user engagement, and accelerate feature adoption.

Target Audience:

The onboarding flow is designed for new users who may vary in technical proficiency and familiarity with similar products. The design should cater to:

  • Novice Users: Requiring clear guidance, minimal jargon, and intuitive steps.
  • Experienced Users: Appreciating efficiency, options to skip steps, and quick access to advanced features.
  • Diverse Backgrounds: Ensuring accessibility and clarity across different demographics.

2. Design Principles & Philosophy

The onboarding experience will be built upon the following core principles:

  • Clarity & Simplicity: Each step should have a clear purpose, minimal cognitive load, and straightforward actions.
  • Value-Driven: Highlight the immediate benefits and core functionality of the product early on.
  • Progressive Disclosure: Introduce information and features gradually, avoiding overwhelming the user.
  • Empowerment & Control: Provide users with options (e.g., skip, customize) and clear feedback on their progress.
  • Engaging & Delightful: Incorporate subtle animations, positive reinforcement, and a friendly tone to create a positive first impression.
  • Efficient: Minimize the number of steps and time required to reach the "Aha! Moment."
  • Accessible: Ensure the design adheres to accessibility standards (WCAG) for all users.

3. Detailed Design Specifications

3.1. Functional Requirements (Core Steps & Data)

The onboarding flow will typically comprise the following sequence, with variations possible based on product complexity:

  1. Welcome & Value Proposition Screen:

* Purpose: Greet the user, briefly explain the product's primary benefit, and set expectations.

* Elements: Catchy headline, concise benefit-oriented text, illustrative imagery/animation, clear Call-to-Action (CTA) to start.

* Data Collected: None.

  1. Account Creation/Login Screen:

* Purpose: Allow users to create a new account or log in if they already have one.

* Elements: Email/Username field, Password field (with show/hide toggle), "Remember Me" option, "Forgot Password" link, Social Login options (e.g., Google, Apple, Facebook), Terms of Service/Privacy Policy links, Primary CTA (Sign Up/Login).

* Data Collected: Email, Password, (Optional: Full Name for registration).

  1. Profile Setup / Basic Information (Optional/Conditional):

* Purpose: Gather essential information to personalize the experience or enable core functionality.

* Elements: Fields for Name, Company/Organization (if B2B), Role/Industry, Profile Picture upload, Checkboxes for preferences/interests.

* Data Collected: Name, Company, Role, Preferences.

  1. Personalization / Goal Setting (Optional/Conditional):

* Purpose: Understand user needs and tailor the initial experience or recommend relevant features.

* Elements: Multiple-choice questions (e.g., "What do you want to achieve with [Product Name]?"), sliders, tags for selecting interests/skills.

* Data Collected: User goals, preferences, use cases.

  1. Product Tour / Key Feature Introduction (Optional):

* Purpose: Briefly highlight 1-3 critical features necessary for initial success or demonstrating core value.

* Elements: Interactive walkthroughs, tooltip-guided tours, short video tutorials, carousels with feature descriptions and screenshots.

* Data Collected: None (though interaction data can be logged for analytics).

  1. Onboarding Completion / Dashboard Access:

* Purpose: Confirm successful onboarding and provide a clear path to start using the product.

* Elements: Congratulatory message, primary CTA to "Go to Dashboard" or "Start Using Product," secondary CTAs for advanced setup or inviting team members.

* Data Collected: None.

3.2. Non-Functional Requirements

  • Performance:

* Each screen load time: Max 2 seconds.

* Responsiveness: Flow must be fully responsive across desktop, tablet, and mobile devices.

* Minimal data usage during initial load.

  • Security:

* All data transmission encrypted (HTTPS/SSL).

* Strong password policies enforced (length, complexity).

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

* Compliance with relevant data protection regulations (e.g., GDPR, CCPA).

  • Accessibility (WCAG 2.1 AA Compliance):

* Keyboard navigation support for all interactive elements.

* Screen reader compatibility (ARIA labels, semantic HTML).

* Sufficient color contrast ratios.

* Clear focus indicators.

* Descriptive alt text for images.

  • Scalability:

* Architecture should support a growing number of users without performance degradation.

* Modular design to allow for easy addition or modification of onboarding steps.

  • Maintainability:

* Clean, well-documented code.

* Automated testing for critical paths.

  • Internationalization & Localization:

* Support for multiple languages (text strings externalized).

* Consideration for date/time formats, currency, and cultural nuances.


4. Conceptual Wireframe Descriptions

The following outlines the conceptual layout and key interactions for each primary screen within the onboarding flow. These descriptions are high-level and will be translated into detailed wireframes in the next design phase.

4.1. Welcome Screen

  • Layout: Full-screen hero section.
  • Elements:

* Header: Product Logo (top left).

* Main Content (Centered):

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

* Concise, benefit-oriented paragraph explaining the core value.

* Engaging illustration or animation relevant to the product's purpose.

* Call-to-Action: Prominent primary button (e.g., "Get Started," "Create Account").

* Secondary Action: Subtle link for "Already have an account? Log In."

  • User Interaction: Click "Get Started" to proceed.

4.2. Account Creation / Login Screen

  • Layout: Split-screen or centered modal/card. One side for visual appeal/product branding, the other for forms.
  • Elements:

* Branding/Visual (Left/Top): Product logo, an aspirational image/quote, or brief product benefit.

* Form (Right/Bottom):

* Headline: "Create Your Account" or "Log In."

* Input fields for Email and Password (with "show password" toggle).

* Checkbox for "Remember Me" (Login only).

* Links: "Forgot Password?", "Terms of Service," "Privacy Policy."

* Social Login Buttons (e.g., "Continue with Google").

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

* Toggle/Link: "Already have an account? Log In" / "Don't have an account? Sign Up."

  • User Interaction: Fill out form, click CTA. Social login initiates OAuth flow.

4.3. Profile Setup Screen

  • Layout: Clear, multi-step form within a centered card or full-width section. Progress indicator at the top.
  • Elements:

* Header: "Set Up Your Profile" with a clear step indicator (e.g., "Step 1 of 3").

* Form Fields:

* Name (First, Last).

* Company Name (if applicable).

* Role/Industry (dropdown or text input).

* Optional: Profile Picture Upload (with default avatar).

* Navigation: "Back" button, Primary CTA "Continue," "Skip for now" link.

  • User Interaction: Fill in fields, upload image, click "Continue" or "Skip."

4.4. Personalization / Goal Setting Screen

  • Layout: Engaging, visually-driven screen, possibly using cards, checkboxes, or interactive elements.
  • Elements:

* Header: "What brings you to [Product Name]?" or "Help us tailor your experience."

* Options: Visually distinct cards or buttons representing different goals/use cases/interests. Users can select one or multiple.

* Optional: Short descriptive text for each option.

* Navigation: "Back" button, Primary CTA "Continue," "Skip for now" link.

  • User Interaction: Select options, click "Continue" or "Skip."

4.5. Product Tour / Key Feature Introduction Screen

  • Layout: Overlay/modal over a simplified product interface, or a dedicated carousel.
  • Elements:

* Tour Steps: Each step highlights a specific area/feature with a tooltip, overlay, or short animation.

* Navigation: "Next," "Previous," "Skip Tour" buttons, progress dots for carousel.

* Content: Short, benefit-focused text explaining the feature.

* Optional: Short video embedded.

  • User Interaction: Click "Next" to advance, "Skip Tour" to exit, or interact with highlighted elements.

4.6. Onboarding Completion Screen

  • Layout: Full-screen or prominent modal with celebratory tone.
  • Elements:

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

* Message: Congratulatory text, reinforcing product value.

* Optional: Small animation (e.g., confetti).

* Primary CTA: "Go to Dashboard" or "Start Using [Product Name]."

* Secondary CTAs (Optional): "Invite Your Team," "Explore Tutorials," "Connect Integrations."

  • User Interaction: Click primary CTA to enter the main product interface.

5. Color Palette & Typography Recommendations

This palette aims for a modern, professional, and inviting aesthetic, ensuring accessibility and brand consistency.

5.1. Color Palette

  • Primary Brand Color (e.g., Blue/Teal): #2C7BE5 (A vibrant, trustworthy blue)

Usage:* Primary CTAs, key interactive elements, brand accents.

Rationale:* Conveys trust, professionalism, innovation.

  • Secondary Accent Color (e.g., Green/Orange): #00D27A (A refreshing green)

Usage:* Success messages, secondary CTAs, positive indicators, subtle highlights.

Rationale:* Suggests growth, success, freshness.

  • Neutral Colors (Grayscale for text, backgrounds, borders):

* Dark Text: #212529 (Near black for optimal readability)

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

* Light Gray: #CED4DA (Borders, subtle dividers)

* Background Gray: #F8F9FA (Light, clean background)

* White: #FFFFFF (Card backgrounds, content areas)

Rationale:* Provides a clean, minimalist foundation, ensuring content readability and visual hierarchy.

  • Status Colors:

* Success: #28A745 (Standard green)

* Warning: #FFC107 (Standard yellow/orange)

* Error: #DC3545 (Standard red)

Rationale:* Standardized colors for universal recognition of status messages.

5.2. Typography

  • Primary Font (Sans-serif):

* Recommendation: Inter, Rubik, or Lato.

Rationale:* Highly readable, modern, clean, and available via Google Fonts for easy implementation. Excellent legibility across various screen sizes.

  • Font Sizes:

* Headlines (H1-H3): Varied, bold, commanding attention.

* Body Text: 16px - 18px for optimal readability on most screens.

* Labels/Small Text: 12px - 14px for supplementary information.

  • Font Weights: Use a range (e.g., Regular, Medium, Semibold, Bold) to establish hierarchy.

6. User Experience (UX) Recommendations

6.1. General UX Best Practices

  • Progress Indicators: Clearly show users where they are in the flow (e.g., "Step 2 of 4," progress bar).
  • "Skip" Options: Provide a "Skip for now" or "Skip Tour" option for experienced users or those in a hurry.
  • Clear Call-to-Actions (CTAs): Use concise, action-oriented button labels.
  • Micro-interactions & Animations: Subtle animations (e.g., button hovers, form field focus, successful submission) can delight users and provide immediate feedback.
  • Positive Reinforcement: Use encouraging language, celebratory messages upon completion of steps.
  • Contextual Help: Offer small tooltips or "i" icons for fields that might need explanation.
  • Mobile-First Approach: Design for the smallest screen first to ensure optimal mobile experience, then scale up.
  • User Data Privacy: Clearly state how user data is used and provide links to privacy policies.
  • Keep it Short & Sweet: Aim for the minimum number of steps required to deliver initial value.

6.2. Interaction Design

  • Form Validation: Real-time inline validation for form fields (e.g., "Email is invalid," "Password too short").
  • Input Masks: For specific inputs like phone numbers or dates, if applicable.
  • **Visual Feedback
gemini Output

User Onboarding Flow: Design Specifications

This document outlines the comprehensive design specifications for the "User Onboarding Flow," detailing the user journey, wireframe descriptions, visual design elements, and user experience recommendations. The goal is to create an intuitive, engaging, and efficient onboarding experience that quickly demonstrates value and guides users to their first successful interaction with the platform.


1. Executive Summary

The User Onboarding Flow is critical for user retention and satisfaction. Our design philosophy centers on a progressive, value-driven, and personalized experience. We aim to minimize friction, clearly communicate the platform's benefits, and empower users to quickly set up their profile and engage with core features. The flow will be modular, allowing for future A/B testing and optimization.

Key Objectives:

  • High Completion Rate: Design an intuitive flow that users can easily navigate.
  • Value Proposition Clarity: Clearly communicate the platform's benefits at each stage.
  • Personalization: Tailor the experience based on user input and preferences.
  • Reduced Time-to-Value: Guide users to their first successful interaction quickly.
  • Brand Reinforcement: Maintain a consistent and professional brand identity throughout.

2. Onboarding Flow Stages & User Journey

The onboarding process is broken down into distinct, logical stages, each designed to build user confidence and understanding.

2.1. Stage 1: Welcome & Value Proposition

  • Purpose: Greet the user, articulate the primary benefit of the platform, and motivate them to begin.
  • User Action: View welcome message, click "Get Started" or "Sign Up".
  • Key Elements: Engaging headline, concise value statement, illustrative imagery/animation, clear call-to-action (CTA).

2.2. Stage 2: Account Creation/Sign Up

  • Purpose: Collect necessary credentials for account creation. Offer multiple sign-up options for user convenience.
  • User Action: Enter email/password, use social login, or accept terms.
  • Key Elements: Email/password fields, "Confirm Password" field, social login buttons (Google, Apple, etc.), "Terms of Service" and "Privacy Policy" links, "Log In" option for existing users.

2.3. Stage 3: Profile Setup & Personalization

  • Purpose: Gather essential user information and preferences to tailor their experience. This is crucial for demonstrating immediate relevance.
  • User Action: Input basic profile details (name, role), select interests/preferences, upload avatar (optional).
  • Key Elements: Step-by-step progress indicator, input fields, multiple-choice selections (e.g., checkboxes, radio buttons, tags), optional avatar upload, "Skip for now" option.

2.4. Stage 4: Feature Introduction / Product Tour (Contextual)

  • Purpose: Briefly highlight key features relevant to the user's selected preferences or role. This is designed to be concise and not overwhelming.
  • User Action: Navigate through a short interactive tour or dismiss a feature highlight modal.
  • Key Elements: Short, animated tutorial (e.g., tooltips, hotspots), short video, or a concise carousel of key features. This stage should be skippable.

2.5. Stage 5: First Action & Completion

  • Purpose: Guide the user towards their first meaningful interaction or the core dashboard, reinforcing successful onboarding.
  • User Action: Click a primary CTA (e.g., "Create First Project", "Explore Dashboard"), land on the main application interface.
  • Key Elements: Celebratory message, primary CTA to the core product, secondary CTA for further exploration/help.

3. Wireframe Descriptions

The following outlines the key screens in the onboarding flow, detailing their primary elements and intended user interaction.

3.1. Screen: Welcome/Introduction

  • Layout: Full-screen hero section.
  • Elements:

* Header (H1): "Welcome to [Platform Name]!" or "Unlock Your Potential with [Platform Name]"

* Sub-header/Value Proposition (H2/Body): "Achieve [core benefit] with our intuitive tools and vibrant community."

* Hero Image/Animation: Visually appealing graphic or short animation demonstrating platform value.

* Primary CTA Button: "Get Started" or "Sign Up Free" (Prominent, centered).

* Secondary Link: "Log In" (Subtle, for existing users, bottom right or top right).

* Optional: Small "Learn More" link.

3.2. Screen: Sign Up/Log In

  • Layout: Centered modal or a two-column layout (left: brand visuals/benefits, right: form).
  • Elements:

* Header (H2): "Create Your Account" / "Sign Up"

* Social Sign-Up Buttons: "Continue with Google," "Continue with Apple," "Continue with [Other]" (Prominent, full-width buttons).

* Divider: "OR"

* Input Field: "Email Address" (Standard text input)

* Input Field: "Password" (Password input with toggle to show/hide)

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

* Checkbox: "I agree to the [Terms of Service] and [Privacy Policy]" (Links to respective documents).

* Primary CTA Button: "Sign Up" / "Create Account"

* Secondary Link: "Already have an account? Log In" (Links to login form/page).

* Error Messages: Inline validation for input fields.

3.3. Screen: Basic Profile Setup

  • Layout: Stepped form with a progress indicator at the top.
  • Elements:

* Progress Indicator: "Step 1 of 3: Your Profile" (Visual indicator: e.g., dots, progress bar).

* Header (H2): "Tell Us About Yourself"

* Input Field: "First Name"

* Input Field: "Last Name"

* Optional Input Field: "Role/Industry" (Dropdown or text input with suggestions).

* Optional Avatar Upload: Circular placeholder with "Upload Photo" button.

* Primary CTA Button: "Continue" / "Next"

* Secondary Link: "Skip for now" (Subtle, bottom left).

3.4. Screen: Personalization/Preferences

  • Layout: Stepped form with a progress indicator. Grid or list of selectable options.
  • Elements:

* Progress Indicator: "Step 2 of 3: Your Interests"

* Header (H2): "What Are You Interested In?" / "How Will You Use [Platform Name]?"

* Instructional Text: "Select at least 3 to personalize your experience."

* Selection Options: A grid or list of cards/checkboxes with icons and labels (e.g., "Project Management," "Creative Design," "Data Analysis," "Team Collaboration").

* Primary CTA Button: "Continue" / "Next" (Enabled when minimum selections are met).

* Secondary Link: "Skip for now"

3.5. Screen: Feature Highlights/Quick Tour (Optional)

  • Layout: Full-screen overlay or a multi-step carousel.
  • Elements:

* Progress Indicator: "Tour 1 of 3" (Dots or numerical).

* Header (H3): "Dashboard Overview" / "Understanding Your Workspaces"

* Illustration/Screenshot: Annotated screenshot or simple animation demonstrating the feature.

* Descriptive Text: Brief explanation of the feature's value.

* Navigation Buttons: "Back," "Next"

* Primary CTA Button: "Skip Tour" or "Finish Tour" (At the end).

3.6. Screen: First Action Prompt

  • Layout: Centered modal or a distinct section on the initial dashboard.
  • Elements:

* Header (H2): "You're All Set!" / "Ready to Get Started?"

* Celebratory Message/Animation: Small animation (e.g., confetti) or encouraging text.

* Personalized Recommendation: "Based on your interests, we recommend you [Action]."

* Primary CTA Button: "Create Your First [Item]" (e.g., "Create First Project," "Start a New Chat").

* Secondary CTA Button/Link: "Explore Dashboard" / "Go to Home"

3.7. Screen: Onboarding Complete/Dashboard

  • Layout: The main application dashboard.
  • Elements:

* Persistent Navigation: Sidebar/top bar.

* Personalized Content: Based on preferences from Stage 3 & 4.

* Empty States with CTAs: If no content yet, provide clear calls to action to create/add content.

* Help/Resources: Easily accessible links to tutorials or support.


4. Color Palette & Typography

A consistent and appealing visual language is crucial for brand recognition and user comfort.

4.1. Primary Color Palette

  • Brand Primary: #345995 (A deep, trustworthy blue - for primary buttons, active states, key branding elements).
  • Brand Secondary: #E4FDE1 (A light, fresh green - for accents, success states, subtle backgrounds).

4.2. Secondary & Accent Colors

  • Accent 1 (Action/Highlight): #FF6B6B (A vibrant red - for alerts, warnings, or prominent calls to attention).
  • Accent 2 (Support/Engagement): #FFD166 (A warm yellow - for notifications, highlights, or secondary interactive elements).
  • Success: #4CAF50 (Standard green for success messages).
  • Warning: #FFC107 (Standard orange for warning messages).
  • Error: #F44336 (Standard red for error messages).

4.3. Neutral Colors

  • Dark Text/Heading: #212121
  • Body Text: #424242
  • Subtle Text/Placeholder: #757575
  • Light Grey (Borders/Dividers): #E0E0E0
  • Background Grey: #F5F5F5
  • White: #FFFFFF (For cards, modals, primary backgrounds).

4.4. Typography

  • Primary Font Family: Inter (or similar modern sans-serif like Roboto, Open Sans).

* Purpose: Excellent readability across devices, professional and clean.

  • Headings (H1, H2, H3): Bold or Semi-Bold weights for emphasis.
  • Body Text: Regular weight for optimal readability.
  • Font Sizes (Responsive):

* H1: 32px - 48px

* H2: 24px - 36px

* H3: 20px - 28px

* Body: 16px - 18px

* Small Text/Labels: 12px - 14px


5. User Experience (UX) Recommendations

To ensure a seamless and delightful onboarding experience, the following UX principles and recommendations will be applied:

5.1. Progressive Disclosure

  • Principle: Only show information and options relevant to the current step. Avoid overwhelming users with too many fields or choices upfront.
  • Application: Break down forms into logical, short steps. Use "Continue" buttons rather than displaying all fields at once.

5.2. Feedback & Micro-interactions

  • Principle: Provide immediate and clear feedback for user actions.
  • Application:

* Loading States: Use spinners or skeleton screens during data fetching.

* Button States: Visual feedback on hover, focus, and click (e.g., slight color change, shadow).

* Form Validation: Real-time inline validation for input fields (e.g., "Password too short" message appearing as user types).

* Success Messages: Brief, non-intrusive toasts or banners for successful actions (e.g., "Profile updated!").

5.3. Error Handling

  • Principle: Guide users gracefully through errors, providing clear explanations and actionable solutions.
  • Application:

* Inline Error Messages: Display error messages directly below the problematic input field.

* Specific Instructions: Instead of "Invalid input," use "Please enter a valid email address."

* Highlight Errors: Visually highlight problematic fields (e.g., red border).

* Preventative Measures: Disable buttons until required fields are filled correctly.

5.4. Personalization & Adaptability

  • Principle: Tailor the experience to individual users based on their input.
  • Application:

* Dynamic Content: Display features or content suggestions on the dashboard based on selected interests.

* Personalized CTAs: "Create your first project" instead of a generic "Start."

* Responsive Design: Ensure the onboarding flow is fully responsive and optimized for all device sizes (mobile, tablet, desktop).

5.5. Skip & Exit Options

  • Principle: Give users control and the ability to opt-out or skip non-essential steps.
  • Application:

* "Skip for now" links: For profile setup, personalization, and product tours.

* Clear Exit Points: An easily identifiable "X" icon or "Back" button for stepping back or closing modals.

* Saved Progress: If a user exits mid-flow, their progress should ideally be saved, allowing them to resume later.

5.6. Accessibility Considerations

  • Principle: Ensure the onboarding flow is usable by individuals with diverse abilities.
  • Application:

* High Contrast Ratios: For text and interactive elements.

* Keyboard Navigation: All interactive elements should be reachable and operable via keyboard.

* ARIA Labels: Implement appropriate ARIA attributes for screen readers.

* Clear Focus States: Visual indicators for focused elements.

* Descriptive Alt Text: For all images and icons.

5.7. Performance

  • Principle: The onboarding flow should be fast and responsive.
  • Application:

* Optimized Assets: Use compressed images and efficient animations.

* Minimalistic Design: Avoid unnecessary visual clutter.

* Efficient Code: Ensure the underlying code for each step loads quickly.


6.

gemini Output

Deliverable: Finalized Design Assets for User Onboarding Flow

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and critical UX recommendations for your new User Onboarding Flow. This deliverable serves as the blueprint for the visual and interactive design, ensuring a cohesive, engaging, and effective first-time user experience.


1. Introduction & Objectives

The primary objective of this User Onboarding Flow is to guide new users seamlessly through the initial setup and introduction to our product, ensuring they understand its core value, key features, and how to get started quickly. A well-designed onboarding flow reduces churn, increases feature adoption, and sets a positive tone for the entire user journey.

This document synthesizes all previous discovery and conceptualization into actionable design assets, ready for development or further high-fidelity prototyping.


2. Design Specifications

These specifications define the visual language and foundational elements that will be applied across the entire onboarding experience.

2.1. General Design Principles

  • Clarity & Simplicity: Each screen should have a singular focus, with clear messaging and minimal cognitive load.
  • Engagement & Delight: Use subtle animations, expressive illustrations, and encouraging microcopy to make the experience enjoyable.
  • Guidance & Progress: Users should always know where they are in the flow and what to expect next.
  • Brand Consistency: Maintain a consistent visual identity with the overall product branding.
  • Accessibility: Design for all users, considering contrast, typography, and interactive element sizing.

2.2. Typography

  • Primary Font (Headings): [Suggest a modern, clean sans-serif font, e.g., 'Inter' or 'Montserrat']

* Usage: Main titles, section headers, prominent calls-to-action.

* Weights: Regular, Semi-bold, Bold.

* Sizes: H1 (28-36px), H2 (24-28px), H3 (20-24px).

  • Secondary Font (Body Text): [Suggest a highly readable sans-serif font, e.g., 'Roboto' or 'Open Sans']

* Usage: Body copy, descriptions, helper text, input labels.

* Weights: Regular, Medium.

* Sizes: Body (14-16px), Small (12-13px).

  • Hierarchy: Establish a clear visual hierarchy using font sizes, weights, and color to guide the user's eye.

2.3. Iconography

  • Style: Line-based or solid, consistent with the overall brand aesthetic. Icons should be simple, recognizable, and scalable.
  • Purpose: To visually represent concepts, enhance readability, and reduce text where appropriate (e.g., feature benefits, navigation).
  • Library: Utilize a consistent icon library (e.g., Font Awesome, Material Icons, or a custom set).

2.4. Imagery & Illustrations

  • Style: Flat, isometric, or abstract illustrations that are friendly, modern, and reinforce the product's value proposition. Avoid overly complex or realistic imagery that might distract.
  • Purpose: To visually explain complex concepts, add personality, and make the onboarding experience more engaging. Each screen should feature a relevant, high-quality illustration.
  • Consistency: Maintain a consistent style, color palette, and level of detail across all illustrations.

2.5. UI Elements

  • Buttons:

* Primary CTA: Prominent, solid background, contrasting color (e.g., Brand Primary or Accent). Clearly labeled (e.g., "Next," "Get Started," "Continue").

* Secondary Button: Outline or ghost style, used for less critical actions (e.g., "Skip," "Learn More").

* Text Button: Minimal styling, for tertiary actions or links.

  • Input Fields: Clean, clear labels, sufficient padding, and visual feedback for focus and error states.
  • Progress Indicators: Visually represent the user's progress through the flow (e.g., dots, a progress bar).

3. Wireframe Descriptions (Key Onboarding Screens)

This section details the structure and content for each key screen in the User Onboarding Flow.

3.1. Screen 1: Welcome & Introduction

  • Purpose: Greet the user, state the product's name, and provide a brief, compelling hook.
  • Key Elements:

* Header: "Welcome to [Product Name]!"

* Illustration: Large, engaging illustration representing a positive user experience or the core benefit.

* Tagline/Subtitle: A concise, benefit-driven statement (e.g., "Unlock your potential with powerful tools.").

* Primary CTA: "Get Started" / "Next" (leading to the next screen).

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

* Progress Indicator: Dot 1 of N.

3.2. Screen 2: Value Proposition / Key Benefit 1

  • Purpose: Highlight the first major benefit or problem the product solves.
  • Key Elements:

* Header: Clear, benefit-oriented title (e.g., "Streamline Your Workflow").

* Illustration: Specific to the highlighted benefit.

Body Text: 1-2 sentences explaining how this benefit is achieved or why* it matters to the user.

* Primary CTA: "Next"

* Secondary CTA: "Skip Onboarding" (optional, but recommended).

* Progress Indicator: Dot 2 of N.

3.3. Screen 3: Feature Showcase / Key Benefit 2

  • Purpose: Introduce another core feature or benefit, reinforcing the product's value.
  • Key Elements:

* Header: Feature/Benefit-focused title (e.g., "Collaborate Effortlessly").

* Illustration: Specific to the highlighted feature/benefit.

* Body Text: Brief description.

* Primary CTA: "Next"

* Secondary CTA: "Skip Onboarding"

* Progress Indicator: Dot 3 of N.

3.4. Screen 4: Personalization / Quick Setup (Optional but Recommended)

  • Purpose: Gather initial preferences or critical setup information to tailor the user's experience immediately.
  • Key Elements:

* Header: "Tell Us About Yourself" / "Set Up Your [Area]"

Body Text: Explain why* this information is being requested (e.g., "To personalize your dashboard...").

* Input Fields/Selection:

* Dropdowns, radio buttons, checkboxes for preferences (e.g., "What's your role?", "What are your goals?").

* Minimal required fields to avoid friction.

* Primary CTA: "Continue" / "Finish Setup"

* Secondary CTA: "Skip for Now" (crucial if this step is not absolutely mandatory).

* Progress Indicator: Dot 4 of N.

3.5. Screen 5: Onboarding Complete / Call to Action

  • Purpose: Signal the end of the onboarding, express encouragement, and direct the user to the core product.
  • Key Elements:

* Header: "You're All Set!" / "Welcome Aboard!"

* Illustration: Celebratory illustration (e.g., a user interacting successfully with the product).

* Body Text: A brief, encouraging message (e.g., "Start exploring your personalized dashboard.").

* Primary CTA: "Go to Dashboard" / "Start Using [Product Name]"

* Secondary CTA (Optional): "Watch a Quick Tutorial" / "Explore Key Features" (if there's an immediate next step beyond the dashboard).

* Progress Indicator: Dot N of N (full).


4. Color Palettes

The chosen color palette ensures visual harmony, brand recognition, and clear distinction between interactive and static elements.

4.1. Primary Brand Colors

  • Primary Accent: #4A90E2 (A vibrant, approachable blue)

* Usage: Primary calls-to-action, active states, key highlights, progress indicators.

  • Secondary Accent: #50E3C2 (A fresh, complementary teal/green)

* Usage: Secondary buttons, subtle background elements, supportive illustrations.

4.2. Neutral & Text Colors

  • Dark Text/Primary Content: #333333 (Deep charcoal for excellent readability)

* Usage: Main headings, body text.

  • Secondary Text/Subtle Content: #7F7F7F (Medium gray for descriptions, helper text)

* Usage: Subtitles, small print, disabled states.

  • Backgrounds: #FFFFFF (Pure white for clean, modern interface)

* Usage: Main screen backgrounds, card backgrounds.

  • Light Gray: #F5F5F5 (Subtle light gray for dividers, borders, subtle sectioning)

* Usage: Separators, inactive states.

4.3. System Colors (for feedback)

  • Success: #28A745 (Green for positive feedback)

* Usage: Completion messages, successful actions.

  • Warning: #FFC107 (Amber for cautions)

* Usage: Non-critical warnings.

  • Error: #DC3545 (Red for critical issues)

* Usage: Input validation errors, critical alerts.

4.4. Color Usage Guidelines

  • Contrast: Ensure sufficient contrast between text and background colors for optimal readability, adhering to WCAG 2.1 guidelines (minimum AA level).
  • Hierarchy: Use color strategically to draw attention to important information and interactive elements.
  • Consistency: Apply colors uniformly across the entire product.

5. UX Recommendations

These recommendations focus on optimizing the user experience during onboarding, ensuring it's intuitive, efficient, and enjoyable.

5.1. Progress Indication

  • Visual Cues: Implement a clear progress indicator (e.g., "Step X of Y" or a series of dots/progress bar) at the top or bottom of each screen. This reduces uncertainty and provides a sense of accomplishment.

5.2. Skippability

  • "Skip" Option: Provide a prominent "Skip Onboarding" or "Skip for Now" option on most screens (except potentially the very first welcome screen). This empowers users who prefer to dive in directly and reduces friction for repeat users or those already familiar.

5.3. Personalization & Context

  • Minimal Data Collection: Only ask for essential information during onboarding. If personalization is required, explain why it's beneficial to the user.
  • Progressive Disclosure: Introduce features and advanced options gradually after the core onboarding is complete, rather than overwhelming the user upfront.

5.4. Engaging Microinteractions & Feedback

  • Subtle Animations: Use subtle transitions between screens and small animations for interactive elements (e.g., button presses, toggles) to add delight and provide immediate feedback.
  • Encouraging Copy: Use friendly, encouraging language ("Great choice!", "Almost there!") to maintain a positive tone.

5.5. Mobile-First Approach

  • Responsive Design: Ensure all onboarding screens are fully responsive and optimized for various screen sizes and orientations, prioritizing mobile usability.
  • Touch Targets: Design large, easily tappable touch targets for buttons and interactive elements.

5.6. Accessibility

  • Semantic HTML: Use appropriate semantic HTML elements for web-based onboarding to aid screen readers.
  • Keyboard Navigation: Ensure the entire onboarding flow is navigable using only a keyboard.
  • Alt Text: Provide descriptive alt text for all images and illustrations.

5.7. Performance Optimization

  • Fast Loading: Optimize all images and assets to ensure fast loading times, preventing user drop-off due to delays.
  • Smooth Transitions: Aim for smooth, jank-free animations and transitions between screens.

5.8. A/B Testing Opportunities

  • CTA Wording: Test different calls-to-action (e.g., "Get Started" vs. "Explore Now").
  • Number of Steps: Experiment with fewer or more steps to find the optimal balance between information and speed.
  • Illustration Styles: Test different visual styles for illustrations to see which resonates best with the target audience.
  • Skippability Placement: Test the prominence and placement of the "Skip" option.

This comprehensive design specification and set of recommendations will guide the development of an effective, engaging, and user-friendly onboarding experience. We are confident this approach will significantly improve initial user engagement and retention for your product.

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