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

User Onboarding Flow: Design Requirements & Specifications

This document outlines the comprehensive design requirements, wireframe descriptions, color palette, and User Experience (UX) recommendations for your new User Onboarding Flow. This detailed specification will serve as the foundation for the design and development phases, ensuring a smooth, engaging, and effective introduction for new users.


1. Introduction & Objectives

The User Onboarding Flow is a critical component for new user retention and product activation. Its primary goal is to guide users seamlessly from their initial sign-up or login to successfully performing their first key action within the platform, demonstrating immediate value.

Key Objectives:

  • Reduce Time-to-Value (TTV): Enable users to experience the core benefit of the platform as quickly as possible.
  • Increase Feature Adoption: Introduce essential features in a digestible and contextual manner.
  • Enhance User Engagement: Create a positive first impression and motivate continued exploration.
  • Collect Essential Information: Gather necessary user data efficiently without overwhelming the user.
  • Minimize Drop-off Rates: Design an intuitive and low-friction experience.

2. Core Design Principles

The following principles will guide the design and development of the onboarding experience:

  • Clarity & Simplicity: Each step should have a clear purpose, minimal cognitive load, and straightforward actions.
  • Progressive Disclosure: Introduce information and features incrementally, revealing complexity only when necessary.
  • Contextual Guidance: Provide help and explanations where and when users need them most, rather than upfront.
  • Empowerment & Control: Allow users to skip steps, revisit information, and feel in control of their journey.
  • Delight & Encouragement: Incorporate positive reinforcement, microinteractions, and a friendly tone to make the process enjoyable.
  • Consistency: Maintain brand identity, visual language, and interaction patterns consistent with the rest of the platform.
  • Accessibility: Design for all users, adhering to WCAG 2.1 guidelines for contrast, typography, and interactive elements.

3. Proposed Onboarding Stages & Wireframe Descriptions

The onboarding flow will consist of several distinct stages, each with specific objectives and wireframe considerations.

Stage 1: Welcome & Account Creation/Login

Objective: Securely register new users or allow existing users to log in, setting a positive initial tone.

Wireframe Description (Screen 1.1: Welcome/Sign-Up):

  • Layout: Centered, clean, and spacious.
  • Header: Prominent brand logo and a compelling headline (e.g., "Welcome to [Your Product Name]! Let's Get Started.").
  • Sub-Header: A concise, benefit-oriented statement (e.g., "Unlock your potential with powerful tools and seamless collaboration.").
  • Account Creation Form:

* Fields: Full Name, Email Address, Password (with "Show Password" toggle and strength indicator).

* Labels: Clear and positioned above or to the left of input fields.

* Placeholders: Example text where helpful.

  • Social Sign-Up Options: Buttons for "Continue with Google," "Continue with Apple," "Continue with Microsoft," etc. (if applicable).
  • Terms & Privacy Checkbox: "By signing up, you agree to our [Terms of Service] and [Privacy Policy]." (Links to respective documents).
  • Primary CTA: "Create Account" or "Get Started" (prominent, distinct color).
  • Secondary CTA: "Already have an account? Log In" (link below primary CTA).
  • Visuals: Subtle, brand-aligned background illustration or pattern that evokes positivity and growth.

Wireframe Description (Screen 1.2: Login - if applicable):

  • Layout: Similar to sign-up, centered.
  • Header: "Welcome Back!" or "Log In to Your Account."
  • Login Form:

* Fields: Email Address, Password (with "Show Password" toggle).

  • Forgot Password Link: Clear and accessible.
  • Primary CTA: "Log In."
  • Secondary CTA: "Don't have an account? Sign Up."
  • Visuals: Consistent with sign-up screen.

Stage 2: Initial Personalization/Profile Setup

Objective: Gather essential user preferences or role information to tailor the subsequent onboarding experience and initial dashboard view.

Wireframe Description (Screen 2.1: Tell Us About Yourself/Role Selection):

  • Layout: Multi-step indicator at the top (e.g., "Step 1 of 4").
  • Header: "Tell Us a Little About Yourself" or "What Brings You Here?"
  • Sub-Header: Explain the benefit (e.g., "This helps us personalize your experience.").
  • Input Fields/Selection:

* User Role: Dropdown or radio buttons (e.g., "Marketing Professional," "Developer," "Student," "Other").

* Industry: Optional text input or dropdown.

* Primary Goal: Checkboxes for common user goals (e.g., "Increase productivity," "Learn new skills," "Collaborate with team").

  • Optional Fields: Clearly marked as optional.
  • Primary CTA: "Continue" or "Next."
  • Secondary CTA: "Skip for now" (less prominent).
  • Progress Indicator: Visual representation of progress through the onboarding steps (e.g., dots, progress bar).

Stage 3: Core Feature Introduction (Interactive Tour/Walkthrough)

Objective: Briefly introduce 1-3 critical features to help users understand the platform's core value proposition through direct interaction or visual cues.

Wireframe Description (Screen 3.1: Feature Highlight 1 - Contextual Tooltip/Modal):

  • Layout: Overlay on a simplified version of the main dashboard or a dedicated tour screen.
  • Header: "Meet Your Dashboard!" or "Quick Tour: [Feature Name]."
  • Feature Callout: An arrow or highlight box pointing to the specific UI element (e.g., "Project List").
  • Description: Concise text explaining the feature's purpose and benefit (e.g., "Here you'll find all your projects, organized for quick access.").
  • Micro-Interaction: A subtle animation demonstrating the feature's function (e.g., a project item sliding into view).
  • Navigation: "Next Feature" CTA, "Previous" CTA, "End Tour" or "Skip Tour" options.
  • Progress Indicator: (e.g., "1/3").

Wireframe Description (Screen 3.2: Feature Highlight 2 & 3):

  • Repeat the pattern of Screen 3.1 for 2-3 essential features (e.g., "Create New Task," "Collaboration Tools").
  • Ensure each feature highlight builds upon the previous one, leading to the "A-ha!" moment.

Stage 4: First Action & "A-ha!" Moment

Objective: Guide the user to perform their first meaningful action, solidifying their understanding and demonstrating immediate value.

Wireframe Description (Screen 4.1: Prompt for First Action):

  • Layout: Can be an empty state on the dashboard or a dedicated screen.
  • Header: "Let's Create Your First [Key Item]!" (e.g., "Let's Create Your First Project!").
  • Sub-Header: Explain the ease and benefit (e.g., "It only takes a minute to get started and see the power of [Your Product Name].").
  • Primary CTA: "Create [Key Item Now]" (e.g., "Create Project Now").
  • Optional Guidance: A short animated GIF or very brief video demonstrating the action.
  • Secondary CTA: "Explore Dashboard" or "Not Ready Yet?" (less prominent, for users who want to bypass).
  • Visuals: An engaging illustration related to creation or starting something new.

Stage 5: Onboarding Completion & Dashboard Access

Objective: Celebrate the user's progress, provide a sense of accomplishment, and smoothly transition them to the full platform experience.

Wireframe Description (Screen 5.1: Completion/Success Screen):

  • Layout: Full-screen celebratory modal or dedicated page.
  • Header: "You're All Set!" or "Welcome Aboard!"
  • Sub-Header: Congratulatory message (e.g., "You've successfully completed your onboarding. Get ready to achieve great things!").
  • Visuals: Engaging illustration or animation (e.g., confetti, a celebratory character).
  • Primary CTA: "Go to Dashboard" or "Start Exploring."
  • Optional Secondary CTAs:

* "Invite Your Team"

* "Download Mobile App"

* "Watch Advanced Tutorial"

  • Personalized Message: (e.g., "Welcome, [User's First Name]!").

4. Detailed Design Specifications

4.1. Typography

  • Primary Font Family: [Suggest a modern, clean, and legible sans-serif font, e.g., "Inter", "Open Sans", "Roboto"]

* Usage: Headings, body text, UI elements.

  • Secondary Font Family: [Optional: A complementary font for specific elements like quotes or statistics, e.g., a serif font for distinction, or a monospaced font for code examples.]

* Usage: Emphasized text, specific data displays.

  • Font Sizes (Responsive):

* Headings (H1-H4): 48px (desktop), 32px (mobile) down to 18px (desktop), 16px (mobile).

* Body Text: 16px (desktop), 14px (mobile).

* Small Text/Captions: 12px (desktop), 10px (mobile).

* Line Height: 1.5 for body text for readability.

  • Font Weights: Regular (400), Medium (500), Semi-bold (600), Bold (700).

4.2. Iconography

  • Style: Flat or Line icons, consistent in weight and style.
  • Library: [Suggest a well-known icon library, e.g., "Feather Icons", "Material Icons", or indicate custom set.]
  • Purpose: Enhance clarity, provide visual cues, and reduce text where possible.
  • Color: Primarily neutral dark grey, with accent color for interactive states.

4.3. Imagery & Illustrations

  • Style: Modern, friendly, and brand-aligned. Avoid generic stock photos.
  • Usage: Welcome screens, empty states, completion screens.
  • Purpose: Evoke emotion, explain concepts visually, and add personality.
  • Consistency: Maintain a consistent artistic style, color palette, and level of detail across all illustrations.

4.4. Responsiveness

  • Adaptive Design: The onboarding flow must be fully responsive and optimized for various screen sizes (desktop, tablet, mobile).
  • Breakpoints: Standard breakpoints (e.g., 375px, 768px, 1024px, 1440px).
  • Fluid Layouts: Use flexible grids and relative units.
  • Touch Targets: Ensure touch targets on mobile are at least 44x44px.

4.5. Accessibility (WCAG 2.1 AA Compliance)

  • Color Contrast: All text and interactive elements must meet minimum contrast ratios (e.g., 4.5:1 for small text, 3:1 for large text).
  • Keyboard Navigation: All interactive elements must be reachable and operable via keyboard. Clear focus states are required.
  • Screen Reader Support: Use appropriate ARIA attributes and semantic HTML. Provide alternative text for images.
  • Form Labels: All form fields must have clear, associated labels.
  • Error Messages: Clear and programmatically associated error messages.

4.6. Microinteractions & Animations

  • Purpose: Provide feedback, guide attention, and enhance delight.
  • Examples:

* Button hover/active states.

* Form field validation feedback (e.g., success checkmark, error shake).

* Progress indicator animations.

* Subtle transitions between onboarding steps.

* Celebratory animations on completion.

  • Principle: Subtle, performant, and purposeful. Avoid excessive or distracting animations.

5. Color Palette

The chosen color palette aims for a professional yet inviting aesthetic, ensuring excellent readability and brand consistency.

  • Primary Brand Colors:

* Primary Blue: #007BFF (RGB: 0, 123, 255) - Used for primary CTAs, main accents, and key branding elements.

* Primary Dark: #212529 (RGB: 33, 37, 41) - Used for primary text, main headers.

  • Secondary Colors:

* Secondary Light Blue: #E0F2FF (RGB: 224, 242, 255) - Used for backgrounds, subtle highlights, borders.

* Secondary Green: #28A745 (RGB: 40, 167, 69) - Used for success states, positive indicators.

  • Accent Colors:

*

gemini Output

As part of your "User Onboarding Flow" project, we've completed the design specification phase. This document outlines the comprehensive design details, wireframe descriptions, color palettes, and critical UX recommendations to ensure a seamless, engaging, and effective onboarding experience for your users.


User Onboarding Flow: Detailed Design Specifications

1. Project Goal & Design Principles

Goal: To guide new users through the initial setup and introduction to the product, ensuring they quickly understand its value, complete necessary configurations, and feel confident in their ability to use the core features. The onboarding flow aims to reduce churn, increase feature adoption, and facilitate a smooth transition from new user to active user.

Design Principles:

  • Clarity: Provide clear instructions, concise copy, and intuitive navigation.
  • Simplicity: Minimize cognitive load by presenting information incrementally and avoiding jargon.
  • Engagement: Use visuals, microinteractions, and positive reinforcement to keep users motivated.
  • Value-Driven: Highlight the benefits and value proposition of the product at each relevant step.
  • Flexibility: Offer options to skip or revisit steps where appropriate, catering to different user needs.
  • Consistency: Maintain a consistent visual language, interaction patterns, and tone of voice throughout the flow and into the main application.
  • Accessibility: Ensure the design is usable by individuals with diverse abilities, adhering to WCAG guidelines.

2. Onboarding Flow Breakdown

The proposed onboarding flow consists of the following key screens/steps:

  1. Welcome Screen: Greet users, introduce the product's core value.
  2. Sign Up / Log In: Account creation or access.
  3. Personalization / Preferences: Gather initial data to tailor the experience.
  4. Core Feature Introduction (Optional Tour): Briefly highlight 1-2 key features.
  5. Permissions Request (if applicable): Request necessary permissions (e.g., notifications).
  6. Onboarding Completion / Dashboard: Confirm completion and direct to the main interface.

3. Detailed Screen Specifications & Wireframe Descriptions

3.1. Welcome Screen

  • Purpose: Make a positive first impression, clearly state the product's primary benefit, and encourage users to start.
  • Key Elements:

* Hero Image/Illustration: Engaging visual representing the product's essence.

* Headline: Catchy and concise value proposition (e.g., "Unlock Your Potential," "Simplify Your Workflow").

* Tagline/Short Description: 1-2 sentences expanding on the headline.

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

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

* Progress Indicator (Subtle): If multi-step welcome.

  • User Interactions: Tap "Get Started" to proceed; Tap "Log In" to navigate to the login screen.
  • Success Criteria: User clicks "Get Started" or "Log In."
  • Error Handling: N/A (informational screen).
  • Wireframe Description:

* Centered layout. Large, vibrant illustration/image at the top occupying 60% of vertical space.

* Below the illustration, a prominent H1 headline, followed by a P tagline.

* Stacked buttons at the bottom: Primary button (Get Started) full width, followed by a secondary ghost/link button (Log In) below it.

* Subtle pagination dots or a progress bar might be at the very bottom if this is a carousel.

3.2. Sign Up / Log In Screen

  • Purpose: Allow new users to create an account and existing users to sign in.
  • Key Elements:

* Header: "Create Your Account" or "Welcome Back."

* Input Fields (Sign Up): Email, Password, Confirm Password (optional: Name, Username).

* Input Fields (Log In): Email/Username, Password.

* "Forgot Password" Link: For login.

* Password Requirements/Strength Indicator: For sign up.

* Terms of Service/Privacy Policy Link: Checkbox for consent.

* Social Sign-Up/Log-In Options: Google, Apple, Facebook (optional).

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

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

  • User Interactions: Input data, click CTA, use social login, navigate to forgot password.
  • Success Criteria: User successfully creates an account or logs in.
  • Error Handling: Inline validation for input fields (e.g., "Invalid email format," "Password too short," "Passwords do not match," "User not found"). Clear error messages for failed social logins.
  • Wireframe Description:

* Clean, form-based layout. H2 header at the top.

* Stacked input fields with clear labels and placeholder text.

* For password, include an eye icon to toggle visibility.

* Below inputs, a small A tag for "Forgot Password" (if login) and a checkbox for Terms (if signup).

* Primary BUTTON for submission.

* A DIVIDER with "or" text, followed by social login buttons (icons + text).

* At the very bottom, a P tag with a LINK to switch between Sign Up and Log In.

3.3. Personalization / Preferences Screen

  • Purpose: Collect minimal, crucial information to personalize the user's initial experience and demonstrate product relevance.
  • Key Elements:

* Header: "Tell us about yourself," "Personalize your experience."

* Brief Explanation: Why this information is being collected (e.g., "to tailor recommendations").

* Input Fields/Selection Controls:

* Dropdowns (e.g., "Industry," "Role").

* Checkboxes (e.g., "What are your goals?").

* Radio Buttons (e.g., "How familiar are you...?").

* Optional text input (e.g., "Tell us more").

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

* Secondary CTA (Optional): "Skip for now."

  • User Interactions: Select options, input text, click CTA.
  • Success Criteria: User provides information and proceeds, or skips.
  • Error Handling: Basic validation for required fields, but generally permissive.
  • Wireframe Description:

* H2 header. P tag for explanation.

* A series of form groups, each with a clear question (LABEL) and appropriate input controls (select, radio group, checkbox group, text area).

* Each group should be visually distinct.

* BUTTON for "Continue" at the bottom right. LINK for "Skip for now" at the bottom left.

* Progress indicator at the top.

3.4. Core Feature Introduction (Optional Tour) Screen

  • Purpose: Briefly showcase 1-2 critical features that highlight the product's immediate value. Avoid overwhelming the user.
  • Key Elements:

* Header: "Discover Key Features," "Quick Tour."

* Feature Title: Concise name of the feature.

* Feature Description: 1-2 sentences explaining the feature's benefit.

* Visual Aid: Screenshot, short animation, or icon representing the feature.

* Navigation: "Next" button, "Back" button (if multiple tour steps).

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

* Secondary CTA: "Skip Tour."

* Progress Indicator: Dots or a bar to show tour progress.

  • User Interactions: Click "Next" to view subsequent features, click "Skip Tour" to exit, click "Start Using" to finish.
  • Success Criteria: User views the tour or skips it and proceeds.
  • Error Handling: N/A.
  • Wireframe Description:

* Carousel-like structure. H2 header at the top.

* Large IMG or VIDEO element in the center representing the feature.

* Below the visual, an H3 for the feature title and a P for its description.

* Navigation arrows (ICON BUTTONS) on the sides of the content area.

* Pagination dots (DIV) below the content.

* Stacked buttons at the bottom: Primary BUTTON (Start Using...), secondary LINK (Skip Tour).

* Progress indicator at the top.

3.5. Permissions Request Screen (if applicable)

  • Purpose: Clearly explain why certain permissions are needed and request them. (e.g., notifications, location, camera).
  • Key Elements:

* Header: "Enable Notifications," "Grant Access."

* Explanation: Brief, clear text explaining the benefit of granting the permission (e.g., "Stay updated with important alerts," "Find nearby services").

* Visual Aid: Icon or illustration related to the permission.

* Primary CTA: "Allow" or "Grant Access."

* Secondary CTA: "Maybe Later" or "Don't Allow."

  • User Interactions: Click "Allow" to trigger system permission prompt, click "Maybe Later" to defer.
  • Success Criteria: User makes a choice regarding the permission.
  • Error Handling: If permission is denied, provide a subtle nudge or instruction on how to enable it later in settings.
  • Wireframe Description:

* Centered content. H2 header.

* Large ICON or small ILLUSTRATION related to the permission.

* P tag explaining the benefit.

* Stacked buttons: Primary BUTTON (Allow), secondary LINK (Maybe Later).

* Progress indicator at the top.

3.6. Onboarding Completion / Dashboard Screen

  • Purpose: Celebrate successful onboarding, provide a sense of accomplishment, and transition smoothly to the main application dashboard or home screen.
  • Key Elements:

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

* Confirmation Message: "Your account is ready."

* Small Animation/Celebratory Graphic: Confetti, checkmark, etc.

* Primary CTA: "Go to Dashboard," "Start Exploring."

* Optional: Quick links to key actions or resources (e.g., "Create your first project," "View tutorials").

  • User Interactions: Click "Go to Dashboard."
  • Success Criteria: User lands on the main application interface.
  • Error Handling: N/A.
  • Wireframe Description:

* Centered, celebratory layout. H1 header.

* Large LOTTIE ANIMATION or SVG ICON (e.g., a checkmark or confetti).

* P tag with a congratulatory message.

* A single, prominent primary BUTTON to navigate to the dashboard.

* (Optional) A small section below the button with 2-3 LINK cards for quick actions.

4. Color Palette

A modern, clean, and accessible color palette is recommended.

  • Primary Brand Color: #007BFF (Vibrant Blue)

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

* Accessibility: Good contrast with white text.

  • Secondary Color: #6C757D (Muted Grey)

* Usage: Secondary CTAs (outline buttons), subtle UI elements, inactive states, borders.

  • Accent Color: #28A745 (Success Green)

* Usage: Success messages, positive feedback, completion indicators.

  • Text Colors:

* Primary Text: #212529 (Dark Charcoal)

* Secondary Text/Subtle: #495057 (Medium Grey)

* Placeholder Text: #ADB5BD (Light Grey)

* Inverse Text (on dark backgrounds): #FFFFFF (White)

  • Background Colors:

* Primary Background: #FFFFFF (Clean White)

* Secondary Background/Hover: #F8F9FA (Off-White/Light Grey)

  • System Colors:

* Success: #28A745 (Green)

* Warning: #FFC107 (Amber)

* Error: #DC3545 (Red)

* Info: #17A2B8 (Cyan)

5. Typography

A clear and legible font stack is crucial for readability and a professional appearance.

  • Primary Font Family: Inter, Helvetica Neue, Arial, sans-serif

* Usage: Headings, body text, UI elements. Inter is a highly legible modern sans-serif.

  • Font Sizes (Responsive, examples for desktop):

* H1 (Welcome/Completion): 36px - 48px

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

* H3 (Feature Titles): 20px - 24px

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

* Small Text/Captions: 12px - 14px

* Buttons: 16px - 18px (matching body text for consistency)

  • Font Weights:

* Regular: 400

* Medium: 500 (for emphasis, some UI elements)

* Semi-Bold: 600 (for strong headlines, CTAs)

* Bold: 700 (for strong emphasis)

  • Line Height: 1.5 - 1.6 for body text to improve readability.
  • Letter Spacing: Default or slightly tighter for headings (-0.02em), normal for body text.

6. Iconography

  • Style: Modern, outlined or filled (consistent throughout), simple and recognizable.
  • Library: Recommend using a well-established icon library (e.g., Font Awesome, Material Icons, Feather Icons) for consistency and scalability.
  • Usage: Accompanying text,
gemini Output

Finalized Design Assets for User Onboarding Flow

This document provides comprehensive, detailed, and actionable design specifications for the "User Onboarding Flow." The goal is to create a welcoming, intuitive, and engaging first-time user experience that effectively guides new users through the initial setup and highlights the core value of the platform.


1. Executive Summary & Design Philosophy

The User Onboarding Flow is critical for user retention and satisfaction. Our design philosophy centers on Clarity, Engagement, and Efficiency. We aim to:

  • Clarify Value: Immediately communicate the core benefits and what the user can achieve.
  • Engage Users: Utilize visually appealing elements, micro-interactions, and a progressive disclosure approach to keep users interested.
  • Ensure Efficiency: Minimize friction, offer clear paths, and allow users to progress quickly or skip steps as desired.

The overall aesthetic will be modern, clean, and consistent with the brand identity, ensuring a seamless transition into the main application interface.


2. Detailed Design Specifications

2.1. Wireframe Descriptions (Key Onboarding Screens)

Here are the detailed descriptions for the essential screens within the onboarding flow:

2.1.1. Welcome Screen (First Launch)

  • Purpose: Greet the user, introduce the product, and set a positive tone.
  • Layout:

* Large, Engaging Illustration/Animation: Positioned prominently at the top or center, visually representing the product's core benefit or a welcoming scene.

* Headline (H1): "Welcome to [Product Name]!" or "Unlock Your Potential with [Product Name]!" (Concise, benefit-oriented).

* Sub-headline/Short Description (Body Text): 1-2 sentences explaining the product's primary purpose or what the user is about to experience.

* Primary Call-to-Action (CTA) Button: "Get Started" or "Let's Begin" (Clear, action-oriented).

* Secondary CTA (Optional): "Learn More" (linking to a brief overview page) or "Sign In" (for existing users).

* Progress Indicator (Optional): "1 of X" subtly displayed.

  • Interactivity: Simple tap/click to proceed.

2.1.2. Value Proposition Showcase (2-3 Screens)

  • Purpose: Highlight key features and benefits, building user excitement and understanding.
  • Layout (Carousel/Swipeable): Each screen follows a similar structure:

* Feature-Specific Illustration/Icon: Visually representing the feature/benefit.

* Headline (H2): "Achieve X with Y Feature" (Benefit-driven).

* Short Description (Body Text): 1-2 sentences elaborating on the feature and its value.

* Navigation:

* "Next" / "Continue" Primary CTA.

* "Skip" / "Skip Tour" Secondary CTA (prominently visible but not distracting).

* Dot indicators at the bottom to show progress within the showcase.

  • Interactivity: Swipe gestures for mobile, click arrows for desktop, or auto-advance after a few seconds with manual override.

2.1.3. Account Creation / Sign-up / Login Screen

  • Purpose: Allow new users to create an account or existing users to log in.
  • Layout:

* Header (H2): "Create Your Account" or "Join [Product Name]".

* Form Fields:

* Email Address (Text input)

* Password (Password input with "show/hide" toggle)

* Confirm Password (optional, for signup)

* Name (optional, for personalization later)

* Social Login Options: Prominent buttons for "Continue with Google," "Continue with Apple," etc. (if applicable).

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

* Secondary CTA: "Already have an account? Log In" (link to login screen).

* Terms & Privacy Checkbox: "By signing up, you agree to our [Terms of Service] and [Privacy Policy]." (Links to respective documents).

  • Interactivity: Form validation (real-time feedback for errors), secure password input.

2.1.4. Personalization / Preferences Screen (Optional, but Recommended)

  • Purpose: Gather basic information to tailor the user experience from the start.
  • Layout:

* Header (H2): "Tell Us About Yourself" or "Customize Your Experience".

* Sub-headline (Body Text): "This helps us provide a more relevant experience."

* Input Fields/Selection:

* User Role/Goal: (e.g., "What brings you to [Product Name]?": Multiple-choice tags/buttons like "Project Management," "Creative Design," "Team Collaboration").

* Industry: (Dropdown or text input).

* Team Size: (Slider or radio buttons).

* Primary CTA: "Continue" / "Save Preferences".

* Secondary CTA: "Skip for now".

  • Interactivity: Clear selection states, instant feedback.

2.1.5. "What's New" / Feature Highlights (Post-Login / First Dashboard View)

  • Purpose: Introduce core UI elements or recent updates within the actual application context.
  • Layout:

* Overlay/Modal: A semi-transparent overlay on the main dashboard/first-use screen.

* Contextual Tooltips: Small pop-ups pointing to specific UI elements (e.g., "This is your main navigation," "Click here to create a new project").

* Primary CTA: "Got It" / "End Tour".

* Navigation: "Next" / "Previous" for multi-step tours.

  • Interactivity: Step-by-step guidance, dismissible.

2.1.6. Completion Screen / Dashboard Access

  • Purpose: Congratulate the user and seamlessly transition them to the core product.
  • Layout:

* Header (H1): "You're All Set!" or "Welcome Aboard, [User Name]!"

* Short Message (Body Text): "Get ready to achieve great things with [Product Name]."

* Reinforcement (Optional): A quick reminder of one key benefit.

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

  • Interactivity: Direct navigation to the main application.

2.2. Visual Elements & Style Guide

2.2.1. Typography

  • Primary Font (Headings & Key Information): [Choose a modern, clean sans-serif font, e.g., Inter, Poppins, Montserrat]

* H1 (Welcome/Completion): 36px - 48px, Bold

* H2 (Feature/Section Titles): 28px - 32px, Semi-Bold

* H3 (Sub-sections): 20px - 24px, Medium

  • Secondary Font (Body Text & UI Elements): [Choose a highly readable sans-serif, e.g., Roboto, Open Sans, Lato]

* Body Text: 16px - 18px, Regular

* Small Text (Captions, Legal): 12px - 14px, Regular

  • Line Height: 1.5 - 1.6 for body text for optimal readability.
  • Letter Spacing: Tightly controlled for headings, standard for body.

2.2.2. Color Palette

The palette focuses on brand consistency, clarity, and emotional resonance (e.g., trust, innovation, friendliness).

  • Primary Brand Color:

* [Brand Primary Color Name]: #4A90E2 (Blue - represents trust, reliability)

Usage:* Primary CTAs, key accents, progress indicators.

  • Secondary Brand Color:

* [Brand Secondary Color Name]: #50E3C2 (Teal - represents freshness, innovation)

Usage:* Secondary CTAs, subtle highlights, background elements in illustrations.

  • Accent Color:

* [Accent Color Name]: #F5A623 (Orange/Yellow - represents energy, attention)

Usage:* Small interactive elements, warnings, specific call-outs.

  • Neutral Colors:

* Dark Text/Primary Background: #2C3E50 (Dark Navy - for high contrast, professional feel)

* Light Text/Secondary Background: #ECF0F1 (Light Grey - for backgrounds, borders)

* Body Text: #34495E (Dark Grey)

* Subtle Backgrounds/Dividers: #F8F8F8 (Off-White)

  • Semantic Colors:

* Success: #2ECC71 (Green)

* Error: #E74C3C (Red)

* Warning: #F1C40F (Yellow)

2.2.3. Iconography & Illustrations

  • Iconography Style:

* Style: Line icons with a consistent stroke weight (e.g., 1.5px - 2px). Rounded corners for a friendly feel.

* Color: Primarily dark grey (#34495E) or the primary brand color (#4A90E2) when active/highlighted.

* Usage: Feature lists, navigation, form field adornments.

  • Illustration Style:

* Style: Modern, flat or semi-flat with subtle gradients. Focus on conveying concepts rather than hyper-realism. Use brand colors prominently.

* Characters (if any): Diverse, friendly, and abstract enough to represent a broad user base.

* Usage: Welcome screen, value proposition screens, completion screen. Illustrations should be engaging and tell a story.

2.2.4. Button & Form Field Styles

  • Primary CTA Button:

* Background: Primary Brand Color (#4A90E2)

* Text: White (#FFFFFF)

* Border Radius: 6px - 8px (slightly rounded)

* Padding: 16px vertical, 24px horizontal

* Hover State: Slightly darker shade of primary color or subtle shadow.

* Disabled State: Lighter shade of primary color, reduced opacity.

  • Secondary CTA Button:

* Background: Transparent or Light Grey (#ECF0F1)

* Text: Dark Grey (#34495E) or Primary Brand Color (#4A90E2)

* Border: 1px solid Primary Brand Color or Dark Grey

* Hover State: Slight background fill or text color change.

  • Form Fields:

* Background: White (#FFFFFF)

* Border: 1px solid Light Grey (#ECF0F1)

* Focus State: 1px solid Primary Brand Color (#4A90E2)

* Error State: 1px solid Error Red (#E74C3C)

* Text: Dark Grey (#34495E)

* Placeholder Text: Lighter Grey (#BDC3C7)

* Border Radius: 4px - 6px.

2.2.5. Animations & Transitions

  • Subtle & Purposeful: Animations should enhance the experience, not distract.
  • Screen Transitions: Smooth slide-in/slide-out or cross-fade effects between onboarding screens. (e.g., 300ms ease-in-out).
  • Button Hover/Click: Slight scale or color shift.
  • Form Field Focus: Smooth border color change.
  • Progress Indicators: Gentle fill animation.
  • Illustration Entrance: Subtle fade-in or bounce effect on initial load.

2.3. Accessibility Considerations

  • Color Contrast: Ensure a minimum contrast ratio of 4.5:1 for text against its background, ideally higher for large text (WCAG AA standard).
  • Font Sizes: Maintain minimum body text size of 16px for readability.
  • Keyboard Navigation: All interactive elements (buttons, form fields, links) must be navigable and operable via keyboard (Tab, Enter, Spacebar). Clear focus states are essential.
  • Screen Reader Compatibility:

* Use semantic HTML (<header>, <main>, <button>, <input>, etc.).

* Provide alt text for all meaningful images and illustrations.

* Use ARIA attributes where standard HTML is insufficient (e.g., for custom components, live regions).

* Ensure logical tab order.

  • Clear Labels: All form fields should have visible and associated <label> tags.
  • Error Feedback: Provide clear, descriptive error messages that indicate what the problem is and how to fix it, not just "Error."

2.4. Responsiveness Guidelines

The onboarding flow must be fully responsive and optimized for various device sizes.

  • Mobile-First Design: Prioritize the mobile experience, then scale up for tablets and desktops.
  • Layout Adaptability:

* Small Screens (Mobile): Single-column layouts, larger touch targets, minimal text, full-width buttons. Illustrations may be simplified or scaled down.

* Medium Screens (Tablet): Can introduce two-column layouts where appropriate, slightly more information density.

* Large Screens (Desktop): More complex layouts, potentially side-by-side content (e.g., illustration on left, text/form on right), larger illustrations.

  • Image Scaling: Use responsive image techniques (e.g., srcset, picture element) to deliver appropriately sized images.
  • Typography Scaling: Adjust font sizes proportionally across breakpoints to maintain readability and aesthetic balance.
  • Flexible Grids: Use CSS Flexbox or Grid for layout management to ensure elements reflow gracefully.

3. User Experience (UX) Recommendations

  • Progressive Disclosure: Don't overwhelm users with too much information at once. Introduce features and options gradually.
  • Clear Progress Indication: Utilize visual cues (e.g., dot indicators, progress bars, "X of Y" text) to show users where they are in the flow and how much is left. This reduces anxiety.
  • Option to Skip/Exit: Always provide a clear "Skip
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);}});}