User Onboarding Flow
Run ID: 69cbc7ed61b1021a29a8c3852026-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 UX recommendations for the "User Onboarding Flow." The goal is to create an intuitive, engaging, and efficient onboarding experience that maximizes user activation and long-term retention.


1. Introduction & Project Goals

The User Onboarding Flow is the critical first interaction users have with our platform. A well-designed onboarding process is essential for:

  • Demonstrating Value: Quickly showcasing the core benefits and unique selling points.
  • Reducing Time to Value (TTV): Guiding users to their first successful interaction or "aha!" moment.
  • Minimizing Friction: Making account creation and initial setup seamless and straightforward.
  • Educating Users: Introducing key features and functionalities without overwhelming them.
  • Building Trust: Establishing a professional and reliable brand image from the outset.
  • Maximizing Activation & Retention: Increasing the likelihood of users becoming active and loyal customers.

Our objective is to design an onboarding flow that is clear, concise, visually appealing, and highly effective in guiding new users towards successful product adoption.


2. Core Principles for Onboarding Design

The following principles will guide the design and development of the User Onboarding Flow:

  • Progressive Disclosure: Introduce information and features gradually to avoid overwhelming users.
  • Contextual Guidance: Provide help and explanations precisely when and where they are needed.
  • Value-Driven: Emphasize the benefits and solutions our product offers at each step.
  • Action-Oriented: Encourage users to take meaningful actions that lead to product engagement.
  • Optionality & Skipability: Allow users to skip non-essential steps and return to them later.
  • Feedback & Reinforcement: Provide clear feedback on user actions and positive reinforcement.
  • Mobile-First (or Responsive): Ensure the experience is seamless and optimized across all devices.
  • Brand Consistency: Maintain a consistent visual and tonal brand identity throughout the flow.

3. Detailed Design Specifications by Stage

The onboarding flow will be broken down into key stages, each with specific design and functional requirements.

3.1. Stage 1: Welcome & Value Proposition

Purpose: Greet the user, reiterate the product's primary value, and set expectations for the onboarding journey.

Design Specifications:

  • Visual Elements:

* Full-screen welcome illustration/animation (engaging, branded).

* Clear, concise headline that states the primary benefit.

* Short, impactful sub-headline or bullet points highlighting 2-3 key features/benefits.

  • Content:

* "Welcome to [Product Name]!"

* "Unlock [Primary Benefit] with [Key Feature 1], [Key Feature 2], and [Key Feature 3]."

* A compelling call-to-action (CTA) button to "Get Started" or "Create Account."

  • Functionality:

* Single, prominent CTA button.

* Optional: A small "Sign In" link for existing users.

* Optional: Progress indicator (e.g., "1 of X steps" or a simple dot indicator).

3.2. Stage 2: Account Creation / Sign-up

Purpose: Collect essential user information to create an account. Offer multiple sign-up options for convenience.

Design Specifications:

  • Input Fields:

* Email Address (required)

* Password (required, with strong password requirements: min 8 chars, 1 uppercase, 1 number, 1 special char)

* Confirm Password (required)

  • Social Login Options:

* "Continue with Google"

* "Continue with Apple" (for iOS devices)

* "Continue with Facebook" (optional, based on target audience)

  • Legal & Compliance:

* Checkbox: "I agree to the [Terms of Service] and [Privacy Policy]" (links must be provided). Pre-checked is generally acceptable if the user is explicitly notified.

  • Error Handling:

* Real-time validation for email format, password strength, and matching passwords.

* Clear, user-friendly error messages adjacent to the relevant input field.

  • Call-to-Action:

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

* Secondary link: "Already have an account? Sign In"

3.3. Stage 3: Profile Personalization / Initial Setup

Purpose: Gather critical information to personalize the user experience and tailor initial product views. This should be concise and focused on actionable data.

Design Specifications:

  • Progressive Steps: Break down longer forms into multiple, manageable steps if necessary. Use a clear progress indicator.
  • Key Information (examples, adapt as needed):

* Name: First Name, Last Name (optional)

* Role/Industry: Dropdown or multi-select (e.g., "Student," "Professional," "Educator," "Healthcare," "Tech")

* Primary Goal: What do you hope to achieve with [Product Name]? (e.g., "Organize projects," "Learn new skills," "Collaborate with team," "Track progress") - Can be radio buttons or a multi-select.

* Team/Organization Name: (if applicable, optional)

* Profile Picture Upload: (optional, can be done later)

  • Contextual Help:

Short descriptions or tooltips explaining why* certain information is requested.

  • Navigation:

* "Next" / "Continue" button.

* "Skip for now" option (prominently displayed but not competing with the primary CTA).

* "Back" button (if multiple steps).

3.4. Stage 4: Product Tour / Feature Introduction

Purpose: Briefly introduce key features and guide users to their first meaningful interaction. This should be short, interactive, and value-focused.

Design Specifications:

  • Guided Tour Options:

* Interactive Walkthrough (Preferred): Overlay tooltips or spotlights highlighting key UI elements directly on a simplified version of the product interface. Each step should explain a feature's benefit.

* Short Video Tutorial: A concise (under 90 seconds) video demonstrating core functionality.

* Carousel/Slideshow: A series of 3-5 screens with illustrations and text explaining features.

  • Content Focus:

* Show, don't just tell. Demonstrate how to perform a key action.

Highlight 2-3 essential* features that deliver immediate value.

* Emphasize benefits over mere features.

  • Navigation:

* "Next" / "Got It" button for each step of the tour.

* "Skip Tour" or "End Tour" button.

* Progress indicator (e.g., "1 of 3").

3.5. Stage 5: First Action / Goal Achievement

Purpose: Prompt the user to perform their first meaningful action, directly related to their stated goal or the product's core value. This creates an immediate "aha!" moment.

Design Specifications:

  • Contextual Prompt:

* Based on Stage 3's personalization, suggest a relevant first action (e.g., "Create your first project," "Add your first task," "Invite your team member").

  • Clear Call-to-Action:

* A prominent button directly initiating the action (e.g., "Start New Project," "Add Task Now").

  • Empty State Design:

* If the user is taken directly to an empty dashboard, design a compelling empty state with clear guidance on what to do next.

  • Immediate Feedback:

* Upon completing the first action, provide positive confirmation (e.g., "Project Created Successfully!").

  • Incentive (Optional):

* Small delightful animation or message for successful completion.

3.6. Stage 6: Onboarding Completion & Dashboard Access

Purpose: Confirm onboarding completion and seamlessly transition the user to the main product dashboard.

Design Specifications:

  • Confirmation Message:

* "You're All Set! Welcome to [Product Name]!"

* Optional: "Here are some resources to help you get started..." (links to help docs, community, advanced tutorials).

  • Call-to-Action:

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

  • Optional Nudge:

* Small, non-intrusive prompt for a secondary action (e.g., "Don't forget to invite your team!").

  • Seamless Transition:

* Directly load the main product dashboard, ideally with a subtle animation.


4. Wireframe Descriptions (High-Level Layouts)

These descriptions outline the general structure and key elements for each screen, focusing on information hierarchy and user flow.

4.1. Welcome Screen

  • Layout: Full-screen hero section. Centered main headline, sub-headline/bullets below. Illustration/animation occupying significant visual space. CTA button prominently centered at the bottom. Small "Sign In" link at the very bottom or top right.
  • Focus: Visual impact, clear value proposition, single primary action.

4.2. Account Creation Screen

  • Layout: Centered card or form container. Logo/brand at the top. Main headline "Create Your Account." Input fields (Email, Password, Confirm Password) stacked vertically with labels. Social login buttons below the form, clearly separated (e.g., "Or connect with"). Terms & Privacy checkbox at the bottom. Primary "Create Account" button, followed by "Already have an account? Sign In" link.
  • Focus: Clarity, ease of input, clear hierarchy of actions.

4.3. Profile Personalization Screens (Multi-step)

  • Layout: Centered card or form container. Progress indicator at the top (e.g., "Step X of Y"). Clear step title (e.g., "Tell us about yourself"). Input fields, dropdowns, or radio button groups for gathering information. Contextual help text near fields. "Next" button at the bottom right, "Skip for now" at bottom left, "Back" button if applicable.
  • Focus: Reducing cognitive load, clear progress, optionality.

4.4. Product Tour Screen(s)

  • Layout (Interactive Walkthrough): Overlay on a simplified product UI. Highlighted area (e.g., a modal or spotlight) pointing to a specific UI element. Short explanatory text and an image/icon within the modal. "Next" and "Skip Tour" buttons within the modal. Progress dots at the bottom.
  • Layout (Video/Slideshow): Full-screen or large centered video player/carousel. Clear title and short description. "Play Video" or "Next Slide" button. "Skip Tour" button.
  • Focus: Visual guidance, conciseness, actionable insights.

4.5. First Action Screen

  • Layout: Dashboard or relevant product section with an "empty state" message and a clear primary CTA button. The empty state should explain what the user can do and why it's beneficial.
  • Focus: Directing to immediate engagement, reducing analysis paralysis.

4.6. Onboarding Completion Screen

  • Layout: Full-screen or large centered card. Confirmation message (e.g., "You're All Set!"). Branded illustration/icon. Primary "Go to Dashboard" button. Optional secondary links/resources below.
  • Focus: Positive reinforcement, clear path to product usage.

5. Color Palette Recommendations

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

  • Primary Brand Color:

* Hex: #007AFF (A vibrant, trustworthy blue, common for tech and productivity, evokes reliability and innovation.)

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

  • Secondary Brand Color:

* Hex: #5AC8FA (A lighter, more playful blue, complementary to the primary.)

* Usage: Secondary actions, subtle highlights, background elements for visual interest.

  • Accent Color:

* Hex: #FF9500 (A warm, inviting orange, provides contrast and draws attention.)

* Usage: Alerts, notifications, success messages, specific calls to attention (e.g., "New Feature!").

  • Neutral Palette:

* Dark Text/Primary Text: #2C2C2E (Deep charcoal, highly readable on light backgrounds.)

* Secondary Text/Subtle Elements: #8E8E93 (Medium grey, for less prominent text or inactive states.)

* Light Backgrounds: #F2F2F7 (Off-white/light grey, provides a clean, modern base.)

* Borders/Dividers: #D1D1D6 (Light grey, for subtle separation.)

  • System Colors:

* Success: #34C759 (Green)

* Warning: #FFCC00 (Yellow)

* Error: #FF3B30 (Red)

Rationale: This palette balances professionalism with a touch of modern vibrancy. The blues evoke trust and clarity, while the orange provides energy and emphasis. The neutral tones ensure high readability and a clean aesthetic.


6. Typography Recommendations

Choosing appropriate fonts enhances readability and brand perception.

  • Primary Font (Headings & Key Information):

* Font Family: Inter or SF Pro Display (if targeting Apple ecosystem)

* Characteristics: Modern, clean, highly readable sans-serif. Good range of weights.

* Usage: H1, H2, H3, prominent labels, primary CTA text.

  • Secondary Font (Body Text & UI Elements):

* Font Family: Inter or SF Pro Text (matching display font for body)

* Characteristics: Optimized for small sizes, excellent legibility for long-form content and UI elements.

* Usage: Paragraphs, form field labels, secondary text, tooltips, captions.

  • Font Sizes & Weights (Responsive):

* Define a clear typographic scale (e.g., 28px H1, 22px H2, 18px Body, 14px Caption) that scales appropriately for mobile and desktop.

* Use font weights strategically (e.g., Bold for headings, Semibold for CTAs, Regular for body text) to create visual hierarchy.


7. Iconography Style

  • Style: Line icons with a consistent stroke weight and rounded corners.
  • Aesthetics: Modern, friendly, and clear. Avoid overly complex or skeuomorphic icons.
  • Usage: To visually represent concepts, enhance navigation, and provide quick understanding in the product tour and empty states.
  • Source: Utilize a well-maintained icon library (e.g., Font Awesome, Material Icons, or a custom set) to ensure consistency.

8. General UX Recommendations

  • Microinteractions:

* Button States: Provide visual feedback for hover, active, and disabled states.

* Form Validation: Use real-time validation with clear success/error indicators.

* Loading States: Implement subtle loading animations (

gemini Output

Design Specifications: User Onboarding Flow

This document outlines the detailed design specifications, wireframe descriptions, color palettes, and user experience (UX) recommendations for the "User Onboarding Flow." The goal is to create an intuitive, engaging, and efficient onboarding experience that guides new users smoothly into the product, minimizes friction, and encourages early feature adoption.


1. Overview and Goals

The User Onboarding Flow is critical for first impressions and user retention. Its primary goals are to:

  • Educate: Clearly communicate the product's value proposition and core functionalities.
  • Engage: Create an interactive and pleasant experience that encourages completion.
  • Personalize: Gather essential information to tailor the initial user experience.
  • Activate: Guide users to their first successful action within the application.
  • Reduce Friction: Minimize steps and cognitive load, providing clear paths and options.

2. Detailed Design Specifications

This section details each screen of the onboarding flow, including its purpose, key elements, and functionality.

2.1 Screen 1: Welcome & Value Proposition

  • Purpose: Greet the user, articulate the primary benefit of the product, and encourage them to begin.
  • Elements:

* Logo/Brand Icon: Centered at the top.

* Catchy Headline: e.g., "Unlock Your Potential," "Simplify Your Workflow." (H1, prominent).

* Brief Subtitle/Description: 1-2 sentences explaining the core value proposition. (Body text, centered).

* Hero Illustration/Animation: Engaging visual representing the product's benefit, centered.

* Primary Call to Action (CTA) Button: "Get Started," "Create Your Account." (Prominent, full-width).

* Secondary CTA/Link (Optional): "Log In" (for existing users), placed subtly below the primary CTA.

  • Functionality:

* Tapping "Get Started" navigates to the Sign Up/Log In screen.

* Tapping "Log In" navigates directly to the Log In screen.

2.2 Screen 2: Sign Up / Log In

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

* Header: "Create Your Account" or "Welcome Back." (H2).

* Email Input Field: Standard text input with label="Email".

* Password Input Field: Standard text input with label="Password", toggle for visibility.

* Password Confirmation Input Field (Sign Up only): label="Confirm Password".

* Social Login Buttons: "Continue with Google," "Continue with Apple," "Continue with Facebook" (if applicable). Icons + text.

* "Forgot Password?" Link: Small text link below password field.

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

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

  • Functionality:

* Form validation for email format, password strength, and matching passwords.

* Error messages displayed inline for invalid inputs.

* Successful sign-up/login navigates to the next onboarding step.

* Social login initiates OAuth flow.

2.3 Screen 3: Profile Setup / Personalization

  • Purpose: Gather essential user information to personalize their experience.
  • Elements:

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

* Progress Indicator: Visual representation (e.g., dots or a progress bar) showing current step (e.g., 1/X).

* Name Input Field: label="Your Name" (Optional).

* Role/Industry Selection: Dropdown or tag-based multi-select (e.g., "Student," "Designer," "Developer").

* Interests/Goals Selection: Multi-select checkboxes or tags (e.g., "Learn new skills," "Manage projects," "Connect with peers").

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

* Primary CTA Button: "Continue," "Next."

* Secondary CTA Link: "Skip for now" (below primary CTA).

  • Functionality:

* Input fields and selections update user profile data.

* "Skip for now" allows users to proceed without completing this step, with the option to complete it later in settings.

2.4 Screen 4: Feature Tour / Quick Intro (Optional, for complex products)

  • Purpose: Briefly introduce key features and benefits through a guided tour.
  • Elements:

* Header: "Quick Tour" or "Discover Key Features." (H2).

* Progress Indicator: Dots or progress bar for tour steps (e.g., 1 of 3).

* Carousel/Swipeable Cards: Each card features:

* Feature Title: (H3).

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

* Relevant Illustration/Screenshot: Visual representation of the feature in action.

* Navigation Buttons: "Next," "Back" (for desktop), or swipe gestures (for mobile).

* Primary CTA Button: "Continue" or "Finish Tour" (on the last slide).

* Secondary CTA Link: "Skip Tour" (prominently available on all slides).

  • Functionality:

* Users can navigate through slides using buttons or gestures.

* "Skip Tour" bypasses the remaining slides and proceeds to the final step.

2.5 Screen 5: Final Onboarding / First Action Prompt

  • Purpose: Celebrate completion and guide the user to their first meaningful action within the application.
  • Elements:

* Header: "You're All Set!" or "Welcome Aboard!" (H1, celebratory).

* Sub-header/Call to Action: e.g., "Let's create your first project," "Explore your personalized dashboard." (H2).

* Engaging Illustration/Animation: Confetti, checkmark, or a welcoming scene.

* Primary CTA Button: "Go to Dashboard," "Create First Project," "Start Exploring." (Directly links to a core feature or the main app view).

* Secondary CTA Link (Optional): "View Tutorial," "Explore Settings."

  • Functionality:

* Tapping the primary CTA takes the user directly into the main application experience, ideally to a relevant, personalized view or an empty state with a clear call to action.


3. Wireframe Descriptions

These descriptions provide a high-level visual layout for each screen.

3.1 Screen 1: Welcome & Value Proposition

  • Layout: Vertically stacked elements, centered.
  • Top: Logo.
  • Middle: Large headline, smaller subtitle, prominent hero illustration.
  • Bottom: Primary CTA button (full-width), optional secondary link below.

3.2 Screen 2: Sign Up / Log In

  • Layout: Header at top, followed by form inputs, social login options, and CTAs.
  • Top: Header (e.g., "Create Your Account").
  • Middle: Vertically stacked input fields (Email, Password, Confirm Password).
  • Below Inputs: "Forgot Password?" link.
  • Mid-Bottom: Social login buttons (horizontally or vertically stacked).
  • Bottom: Primary CTA button, toggle link (e.g., "Already have an account? Log In").

3.3 Screen 3: Profile Setup / Personalization

  • Layout: Header, progress indicator, input fields/selectors, CTAs.
  • Top: Header, small progress indicator (dots or bar).
  • Middle: Vertically stacked input fields/selection components (Name, Role, Interests, Avatar).
  • Bottom: Primary CTA button, "Skip for now" link.

3.4 Screen 4: Feature Tour / Quick Intro

  • Layout: Header, progress indicator, large central content area, navigation.
  • Top: Header, progress indicator.
  • Middle: Large card-like area for feature title, description, and illustration/screenshot.
  • Bottom: "Next"/"Back" buttons (if not swipe-based), "Skip Tour" link (prominent).

3.5 Screen 5: Final Onboarding / First Action Prompt

  • Layout: Centered celebratory elements with clear action.
  • Top-Middle: Large celebratory headline, sub-headline.
  • Middle: Engaging illustration/animation.
  • Bottom: Primary CTA button (full-width), optional secondary links.

4. Color Palettes

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

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

* Usage: Primary Call to Action (CTA) buttons, progress indicators, active states, key highlights.

* Rationale: Evokes trust, professionalism, and innovation. Provides strong visual emphasis for interactive elements.

  • Secondary Accent Color: #28A745 (Success Green)

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

* Rationale: Creates a sense of accomplishment and positive reinforcement.

  • Neutral Colors:

* Background (Light): #F8F9FA (Off-White/Light Gray)

* Usage: Main screen backgrounds, large content areas.

* Rationale: Clean, minimal, and provides good contrast for text and interactive elements.

* Text (Dark): #212529 (Dark Gray/Black)

* Usage: Primary body text, headlines, labels.

* Rationale: High readability and professional appearance.

* Text (Secondary/Muted): #6C757D (Medium Gray)

* Usage: Subtitles, helper text, disabled states, secondary links.

* Rationale: Provides visual hierarchy without distracting from primary content.

* Borders/Dividers: #DEE2E6 (Light Gray)

* Usage: Input field borders, separators, subtle outlines.

* Rationale: Maintains a clean look while defining boundaries.

  • System/Feedback Colors:

* Error Color: #DC3545 (Alert Red)

* Usage: Error messages, invalid input states.

* Rationale: Clearly indicates issues requiring user attention.

* Warning Color: #FFC107 (Warning Yellow)

* Usage: Cautionary messages, non-critical alerts.

* Rationale: Draws attention to potential issues without being as urgent as an error.


5. UX Recommendations

These recommendations aim to optimize the onboarding experience for engagement and conversion.

5.1 Clear Progress Indication

  • Recommendation: Implement a visual progress indicator (e.g., "Step X of Y" or a series of dots/progress bar) on all multi-step screens.
  • Benefit: Reduces user anxiety by showing how much is left and provides a sense of accomplishment.

5.2 Specific and Actionable CTAs

  • Recommendation: Use descriptive button labels (e.g., "Create My Account," "Continue to Dashboard") instead of generic ones like "Submit."
  • Benefit: Clearly communicates the outcome of an action, guiding users effectively.

5.3 Microinteractions & Feedback

  • Recommendation: Incorporate subtle animations for button presses, form field focus, and successful actions (e.g., a checkmark animation on successful profile update).
  • Benefit: Enhances engagement, provides immediate feedback, and makes the interface feel more responsive and premium.

5.4 User-Friendly Error Handling

  • Recommendation: Display clear, concise, and helpful error messages directly next to the problematic input field. Avoid generic error pop-ups.
  • Benefit: Helps users quickly understand and correct mistakes, reducing frustration.

5.5 Strategic "Skip" Options

  • Recommendation: Provide "Skip" or "Skip for now" options for non-essential personalization or tour steps.
  • Benefit: Empowers users to control their onboarding pace, reducing abandonment for those in a hurry. Ensure skipped steps can be completed later.

5.6 Personalization for Relevance

  • Recommendation: Use information gathered during onboarding (e.g., role, interests) to immediately tailor the initial dashboard or content presented to the user.
  • Benefit: Demonstrates immediate value and relevance, making the user feel understood and increasing engagement.

5.7 Optimize for Performance

  • Recommendation: Ensure all assets (images, animations) are optimized for fast loading times. Minimize API calls during critical onboarding steps.
  • Benefit: Prevents user drop-off due to slow loading, maintaining a smooth and responsive experience.

5.8 Mobile-First and Responsive Design

  • Recommendation: Design and test the onboarding flow primarily for mobile devices,
gemini Output

This deliverable outlines the finalized design assets for the "User Onboarding Flow," providing comprehensive specifications, wireframe descriptions, color palettes, and critical UX recommendations. The goal is to create an intuitive, engaging, and efficient first-time user experience that maximizes conversion and user retention.


Finalized Design Assets: User Onboarding Flow

1. Detailed Design Specifications

This section details the core UI components and their properties, ensuring consistency and a professional aesthetic throughout the onboarding journey.

1.1 Typography

  • Primary Font Family: Inter (or similar sans-serif, e.g., Montserrat, Lato)

* H1 (Page Titles): Inter Bold, 36px, Line Height 44px, Color: #2C3E50 (Dark Navy)

* H2 (Section Headers): Inter SemiBold, 24px, Line Height 32px, Color: #34495E (Dark Grey)

* Body Text: Inter Regular, 16px, Line Height 24px, Color: #5E6D7E (Medium Grey)

* Small Text/Captions: Inter Regular, 14px, Line Height 20px, Color: #7F8C8D (Light Grey)

* Button Text: Inter SemiBold, 16px, Line Height 24px, Color: Varies (e.g., #FFFFFF for Primary Buttons)

1.2 Color Palette (Refer to Section 3 for full palette)

  • Primary Brand Color: #3498DB (Vibrant Blue) - Used for primary CTAs, active states, key highlights.
  • Secondary Accent Color: #2ECC71 (Emerald Green) - Used for success indicators, secondary actions, unique elements.
  • Neutral Colors:

* Background: #F8F9FA (Off-White)

* Text: #2C3E50 (Dark Navy), #5E6D7E (Medium Grey)

* Borders/Dividers: #E0E6EB (Light Grey)

1.3 UI Components

  • Buttons:

* Primary Button:

* Background: #3498DB

* Text Color: #FFFFFF

* Border Radius: 8px

* Padding: 16px 32px

* States:

* Hover: Background #2980B9 (Darker Blue)

* Active: Background #21618C (Even Darker Blue), slight shadow

* Disabled: Background #BDC3C7 (Light Grey), Text Color #FFFFFF

* Secondary Button (Outline/Ghost):

* Background: Transparent

* Text Color: #3498DB

* Border: 2px solid #3498DB

* Border Radius: 8px

* Padding: 16px 32px

* States:

* Hover: Background #EBF5FB (Very Light Blue), Text Color #2980B9

* Active: Background #D6EAF8 (Light Blue), Text Color #21618C

* Tertiary Button (Text Link):

* Text Color: #3498DB

* States:

* Hover: Underline

* Active: Darker Blue, Underline

  • Input Fields:

* Background: #FFFFFF

* Border: 1px solid #DDE4EB

* Border Radius: 8px

* Padding: 14px 16px

* Text Color: #5E6D7E

* Placeholder Text Color: #BCCAD6

* States:

* Focus: Border 2px solid #3498DB, subtle shadow

* Error: Border 2px solid #E74C3C (Red), Error Message Text Color #E74C3C

* Success: Border 2px solid #2ECC71 (Green)

  • Progress Indicators:

* Progress Bar:

* Track Color: #E0E6EB

* Fill Color: #3498DB

* Height: 8px

* Radius: 4px

* Dots Indicator:

* Inactive Dot: 10px diameter, Background #DDE4EB

* Active Dot: 10px diameter, Background #3498DB

  • Icons:

* Style: Line-art or solid, consistent stroke weight/fill.

* Color: Primarily #7F8C8D for inactive, #3498DB for active/highlighted.

* Source: Font Awesome, Material Icons, or custom SVG set.

  • Illustrations:

* Style: Modern, flat, or isometric. Reflect a friendly and approachable tone.

* Usage: Welcome screen, feature highlights, empty states, completion screens.

* Color Palette: Incorporate brand primary and secondary colors.

1.4 Spacing & Layout

  • Grid System: 12-column grid, 20px gutter.
  • Base Spacing Unit: 8px (e.g., padding/margin in multiples of 8, 16, 24, 32px).
  • Container Width: Max 1200px for desktop, fluid for smaller screens.
  • Mobile Responsiveness: All components must be designed with mobile-first principles, ensuring optimal display and interaction on smaller screens.

1.5 Animations & Transitions

  • Subtle Fades: For screen transitions, modal appearances (0.2s ease-in-out).
  • Button Hover Effects: Quick background color change (0.15s ease-out).
  • Input Field Focus: Smooth border color transition (0.1s ease-in).
  • Progress Bar: Smooth fill animation.

2. Wireframe Descriptions

The onboarding flow is designed to be clear, progressive, and engaging. Each screen builds upon the last, guiding the user towards successful product adoption.

2.1 Screen 1: Welcome & Introduction

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

* Large, engaging illustration/image relevant to the product's core value.

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

* Body Text: A concise, compelling statement about the product's primary benefit. (e.g., "Unlock your potential with our powerful tools.")

* Primary Button: "Get Started" (leads to Value Proposition)

* Secondary Button/Link: "Sign In" (for existing users, leads to login screen)

* Optional: Small "Skip Tour" link.

  • Interaction: Simple, clear call to action.

2.2 Screen 2: Value Proposition & Key Features (3-4 screens/carousel)

  • Layout: Central content area with clear visual hierarchy.
  • Elements (per screen):

* Progress Indicator: Dots or a progress bar at the top/bottom (e.g., 1/3, 2/3, 3/3).

* H2: Catchy headline for a specific feature/benefit.

* Supporting Body Text: 1-2 sentences explaining the benefit.

* Relevant Icon or Small Illustration: Visually represents the feature.

* Navigation Buttons: "Next" (Primary Button), "Back" (Secondary/Tertiary Button).

* Optional: "Skip" link.

  • Interaction: Users click "Next" to advance through the benefits. Carousel swipe functionality for mobile.

2.3 Screen 3: Account Creation / Sign-Up

  • Layout: Centered form, clean and uncluttered.
  • Elements:

* H2: "Create Your Free Account" or "Join [Product Name]"

* Input Fields:

* Email Address

* Password (with "Show Password" toggle/icon)

* Confirm Password (optional, for security)

* Social Login Options: Buttons for Google, Apple, or other relevant providers.

* Primary Button: "Create Account"

* Link: "Already have an account? Sign In" (leads to login)

* Legal Text: Small text linking to "Terms of Service" and "Privacy Policy."

* Optional: Checkbox for "Receive marketing emails."

  • Interaction: Form validation on submission and input blur. Clear error messages.

2.4 Screen 4: Personalization / Profile Setup (Optional, but Recommended)

  • Layout: Step-by-step form or multi-select options.
  • Elements:

* H2: "Tell Us About Yourself" or "Customize Your Experience"

* Progress Indicator: If multiple steps within personalization.

* Input Fields/Selection:

* Name (First, Last)

* Role/Industry (dropdown or radio buttons)

* Goal (checkboxes, e.g., "Improve productivity," "Collaborate with team")

* Team Size (dropdown)

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

* Secondary Button: "Skip for now"

  • Interaction: Data collected here can inform initial dashboard views, personalized recommendations, or segment users for targeted onboarding.

2.5 Screen 5: First-Time User Experience (FTUE) / Product Tour

  • Layout: Overlay on top of the actual product dashboard/key screen.
  • Elements:

* Contextual Tooltips/Hotspots: Highlight key UI elements (e.g., "This is your main navigation," "Here's where you create a new project").

* Short Explanatory Text: For each highlighted element.

* Navigation: "Next Tip," "Previous Tip," "End Tour" / "Skip Tour."

* Progress Indicator: (e.g., 1 of 5 tips).

  • Interaction: Guides the user through essential features in context. Should be dismissible at any point.

2.6 Screen 6: Onboarding Completion & Dashboard Access

  • Layout: Simple, celebratory full-screen message.
  • Elements:

* H1: "You're All Set!" or "Welcome to Your Dashboard!"

* Body Text: A brief, encouraging message (e.g., "Let's start building amazing things together.").

* Illustration: A celebratory or welcoming graphic.

* Primary Button: "Go to Dashboard"

* Optional: Secondary CTA for "Invite Team Members" or "Watch a Quick Tutorial."

  • Interaction: Directs the user to the main application interface.

3. Color Palettes

The chosen palette aims for a professional, trustworthy, and engaging feel, balancing brand identity with usability.

3.1 Primary Brand Colors

  • Primary Blue: #3498DB (HEX) / RGB(52, 152, 219)

* Use: Main call-to-action buttons, active states, important links, brand accents.

  • Darker Blue (Hover/Active): #2980B9 (HEX) / RGB(41, 128, 185)

* Use: Button hover states, selected elements.

  • Accent Green: #2ECC71 (HEX) / RGB(46, 204, 113)

* Use: Success messages, secondary positive actions, highlight elements.

3.2 Neutral Colors

  • Dark Navy (Headings): #2C3E50 (HEX) / RGB(44, 62, 80)

* Use: Primary text, main headings.

  • Medium Grey (Body Text): #5E6D7E (HEX) / RGB(94, 109, 126)

* Use: Body text, secondary headings.

  • Light Grey (Subtle Text/Icons): #7F8C8D (HEX) / RGB(127, 140, 141)

* Use: Placeholder text, inactive icons, small captions.

  • Border/Divider Grey: #E0E6EB (HEX) / RGB(224, 230, 235)

* Use: Input field borders, dividers, subtle separators.

  • Background Off-White: #F8F9FA (HEX) / RGB(248, 249, 250)

* Use: Page backgrounds, card backgrounds.

  • Pure White: #FFFFFF (HEX) / RGB(255, 255, 255)

* Use: Component backgrounds, text on dark backgrounds.

3.3 Semantic Colors

  • Success Green: #2ECC71 (HEX) / RGB(46, 204, 113)

*

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