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

User Onboarding Flow - Design Requirements

Project Title: User Onboarding Flow - Design & Specification Document

Workflow Step: gemini → research_design_requirements

Date: October 26, 2023


Introduction

This document outlines the comprehensive design requirements for the new User Onboarding Flow. The primary goal of this onboarding experience is to smoothly introduce new users to our product, highlight its core value proposition, guide them towards their initial "Aha! moment," and equip them with the necessary knowledge to effectively utilize the platform. A well-designed onboarding flow is crucial for increasing user activation, reducing churn, and ensuring long-term user engagement.

This deliverable provides detailed design specifications, wireframe descriptions for key stages, proposed color palettes, and critical UX recommendations to ensure a seamless, intuitive, and engaging user journey.


I. User Onboarding Flow - Core Principles & Objectives

Our onboarding flow will be built upon the following principles and aims to achieve these key objectives:

Key Objectives:

  • Accelerate Time-to-Value: Help users experience the core benefit of the product as quickly as possible.
  • Increase Activation Rate: Guide users to complete essential setup tasks and perform their first meaningful action.
  • Reduce Cognitive Load: Present information in digestible chunks, avoiding overwhelming new users.
  • Enhance User Confidence: Provide clear guidance and positive feedback throughout the process.
  • Collect Essential Information: Gather necessary user data efficiently and contextually.
  • Establish Brand Identity: Reinforce our brand's personality and values from the first interaction.

Guiding Principles:

  • Simplicity: Minimalist design, clear language, and straightforward interactions.
  • Contextuality: Provide help and information exactly when and where it's needed.
  • Progressive Disclosure: Reveal information and options gradually to prevent overwhelm.
  • Personalization: Offer opportunities to tailor the experience where relevant.
  • Feedback & Reinforcement: Provide immediate feedback on user actions and celebrate progress.
  • Flexibility: Allow users to skip optional steps or revisit sections if needed.

II. User Onboarding Flow - Stages & Design Specifications

The onboarding flow is envisioned as a multi-stage process, each designed to achieve specific goals.

Stage 1: Welcome & Value Proposition

Purpose: Greet the user, reinforce the core value proposition, and set a positive tone.

  • Design Specifications:

* Screen Type: Full-screen modal or dedicated welcome page.

* Headline: Clear, concise welcome message (e.g., "Welcome to [Product Name]!").

* Sub-headline/Tagline: A compelling statement of the product's primary benefit (e.g., "Unlock Your Potential with [Key Benefit]").

* Key Value Points: 2-3 short, impactful bullet points or icons highlighting main features/benefits.

* Call to Action (CTA): Prominent button to start the onboarding (e.g., "Get Started," "Create Your Account").

* Secondary CTA (Optional): Link to "Learn More" or "Sign In" for returning users.

* Visuals: Engaging hero image, animation, or short video demonstrating product value.

* Branding: Prominent logo placement.

  • Wireframe Description:

* Top: Product Logo.

* Center-Top: Large, friendly Headline.

* Center: Sub-headline, followed by 2-3 icon/text pairs for value points.

* Center-Bottom: Engaging visual illustration.

* Bottom: Primary CTA button (full width or prominent), optional secondary CTA link below it.

Stage 2: Sign-up / Login

Purpose: Facilitate account creation or access for new and returning users.

  • Design Specifications:

* Screen Type: Dedicated full-screen form or modal.

* Sign-up Fields:

* Email Address (required)

* Password (required, with strength indicator and "show password" toggle)

* Confirm Password (required)

* Optional: First Name, Last Name (if needed for personalization)

* Login Fields:

* Email Address (required)

* Password (required)

* Social Sign-up Options: Prominent buttons for Google, Apple, or other relevant SSO providers.

* Terms & Privacy: Link to Terms of Service and Privacy Policy, with a checkbox for agreement during sign-up.

* Forgot Password: Clear link for password recovery.

* Error Handling: Inline validation for all fields, clear error messages.

* Progress Indicator: (If part of a multi-step form, e.g., "Step 1 of 5").

  • Wireframe Description:

* Top: Product Logo, "Sign Up" / "Log In" toggle or separate tabs.

* Below Logo: Brief instructional text (e.g., "Create your free account").

* Center: Stacked input fields for email, password, etc.

* Below Fields: Checkbox for Terms & Privacy, "Forgot Password" link.

* Bottom: Primary CTA button (e.g., "Create Account," "Log In").

* Below CTA: Separator line ("Or continue with") followed by social sign-up buttons.

Stage 3: Quick Product Tour / Key Feature Introduction

Purpose: Briefly introduce core functionalities and demonstrate the product's primary value.

  • Design Specifications:

* Interaction Model:

* Option A (Recommended): Interactive Walkthrough: Highlight key UI elements with tooltips/hotspots, guiding the user to interact.

* Option B: Carousel/Slideshow: A series of 3-5 screens, each showcasing a key feature with a screenshot/illustration and short description.

Content: Focus on how the product solves their problem, not just what* it does. Use concise, benefit-oriented language.

* Navigation: Clear "Next" and "Back" buttons for carousel, or a "Got it!" for interactive steps.

* Progress Indicator: Visual representation of progress (e.g., "1/3," dots).

* Skip Option: A clear "Skip Tour" or "Exit Onboarding" link.

  • Wireframe Description (Interactive Walkthrough):

* Full Screen Overlay: Dimmed background with focus on a specific UI element.

* Tooltip/Callout: Pointing to the highlighted element, containing a short description and a "Next" button.

* Progress Dots: At the bottom indicating tour progress.

* Skip Link: In the top right corner.

Stage 4: Personalization / Preferences (Optional but Recommended)

Purpose: Gather information to tailor the user's initial experience and content.

  • Design Specifications:

* Content: Questions about user roles, goals, industry, or specific preferences relevant to the product.

* Input Types: Multiple choice (radio buttons, checkboxes), dropdowns, short text fields. Avoid free-form text where possible.

* Visuals: Use icons or simple illustrations to make selections more engaging.

Rationale: Briefly explain why* this information is being collected (e.g., "To personalize your dashboard").

* Progress Indicator: Clearly show progress within this section.

* Skip Option: A clear "Skip for now" link.

  • Wireframe Description:

* Top: Section Title (e.g., "Tell us about your goals").

* Below Title: Brief explanatory text.

* Center: Series of questions with clear input fields/selection options.

* Bottom: Primary CTA button (e.g., "Continue," "Save Preferences"), "Skip for now" link.

Stage 5: First Core Action Prompt / "Aha! Moment" Guidance

Purpose: Guide the user to perform the primary action that delivers the product's core value. This is the "Aha! moment."

  • Design Specifications:

* Focus: A single, clear, and compelling call to action.

* Context: Show how the action directly benefits them based on their goals (if personalization was done).

* Visuals: Use a prominent icon or illustration related to the action.

* Incentive/Benefit: Briefly reiterate the benefit of performing this action.

* Example: For a project management tool, this might be "Create Your First Project." For a design tool, "Start a New Design."

  • Wireframe Description:

* Top: Engaging headline (e.g., "Ready to get started?").

* Center: Large, prominent icon/illustration related to the core action.

* Below Icon: Short, persuasive text explaining the benefit of the action.

* Bottom: Primary CTA button for the core action (e.g., "Create Your First Project").

* Optional: Small secondary links to "Explore Dashboard" or "Watch a Demo" if the user isn't ready for the core action yet.

Stage 6: Onboarding Completion / Dashboard Access

Purpose: Confirm completion, provide a sense of accomplishment, and transition the user to the main application dashboard.

  • Design Specifications:

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

* Positive Reinforcement: Reiterate a key benefit or next step.

* Transition: A clear CTA to access the main dashboard or home screen.

* Optional Resources: Links to helpful resources (e.g., "Quick Start Guide," "Help Center," "Community Forum") or a brief "What's Next?" section.

* Micro-interaction: A subtle animation for confetti or a celebratory checkmark.

  • Wireframe Description:

* Center: Large, celebratory icon (e.g., checkmark, trophy).

* Below Icon: Large, friendly "Congratulations!" headline.

* Below Headline: Short, encouraging message about what they can now achieve.

* Bottom: Prominent CTA button to "Go to Dashboard."

* Below CTA: Optional links to resources.


III. Visual Design Elements

To ensure a consistent, professional, and engaging user experience, the following visual design elements are recommended:

Color Palette Recommendations

The proposed color palette aims for clarity, brand alignment, and accessibility.

  • Primary Brand Color:

* Purpose: Dominant color for primary CTAs, active states, key branding elements.

Example: #007BFF (Vibrant Blue) - Represents trust, professionalism, innovation.*

  • Secondary Brand Color:

* Purpose: Used for secondary CTAs, complementary accents, progress indicators.

Example: #28A745 (Emerald Green) - Represents growth, success, freshness.*

  • Accent Color:

* Purpose: For highlights, notifications, interactive elements that need to stand out.

Example: #FFC107 (Bright Yellow/Amber) - Represents attention, energy, warmth.*

  • Neutral Colors (Text & Backgrounds):

Dark Text: #212529 (Charcoal Gray) - For primary headings and body text, ensuring high contrast.*

Light Text/Subtle Elements: #6C757D (Medium Gray) - For secondary text, captions, inactive states.*

* Backgrounds:

#FFFFFF (Pure White) - For main content areas, providing clean canvas.*

#F8F9FA (Off-White/Light Gray) - For subtle section breaks or background elements.*

  • Semantic Colors:

Success: #28A745 (Green) - For successful actions, completion messages.*

Warning: #FFC107 (Yellow/Amber) - For warnings, less critical alerts.*

Error: #DC3545 (Red) - For error messages, critical alerts, invalid inputs.*

Info: #17A2B8 (Cyan/Light Blue) - For informational messages.*

Accessibility Considerations:

  • All color combinations (text on background, CTA on background) will be checked against WCAG 2.1 AA standards for contrast ratios to ensure readability for all users, including those with visual impairments.

Typography Recommendations

  • Primary Font: A clean, modern sans-serif font (e.g., Inter, Lato, Open Sans, Montserrat).

* Purpose: Readability and contemporary feel.

* Usage: Headings, body text, UI elements.

  • Font Sizes:

* Headings: H1 (2.5rem), H2 (2rem), H3 (1.75rem), H4 (1.5rem)

* Body Text: 1rem - 1.125rem (16px - 18px)

* Labels/Captions: 0.875rem (14px)

  • Line Height: Generous line height (1.5 - 1.
gemini Output

This document outlines the detailed design specifications for the "User Onboarding Flow," serving as a comprehensive guide for the development team. The goal is to create an intuitive, engaging, and efficient onboarding experience that quickly introduces users to the platform's value and guides them through essential setup steps.


User Onboarding Flow: Detailed Design Specifications

1. Overview and Core Objectives

The User Onboarding Flow aims to achieve the following:

  • Educate: Clearly communicate the platform's core value proposition and key features.
  • Engage: Create an interactive and positive first impression.
  • Guide: Lead users through necessary setup steps with minimal friction.
  • Retain: Increase the likelihood of long-term user engagement by facilitating a successful initial experience.
  • Personalize: Gather essential information to tailor the user experience from the outset.

The flow is designed to be concise, visually appealing, and optimized for completion, ensuring users quickly reach their "aha!" moment.

2. General UX Principles & Recommendations

  • Progressive Disclosure: Present information and options gradually to avoid overwhelming users.
  • Clear Call-to-Actions (CTAs): Ensure primary actions are prominent and easily understandable.
  • Visual Progress Indicator: Provide continuous feedback on the user's progress through the onboarding.
  • Optionality & Skip Mechanisms: Allow users to skip non-essential steps and complete them later, if applicable, while clearly communicating the benefits of completion.
  • Mobile Responsiveness: All designs must be fully responsive and optimized for various screen sizes (desktop, tablet, mobile).
  • Accessibility: Adhere to WCAG 2.1 guidelines (e.g., sufficient color contrast, keyboard navigation, descriptive alt text for images).
  • Positive Reinforcement: Use encouraging language and celebratory messages upon step completion.
  • Data Privacy & Security: Clearly communicate how user data will be used and protected, especially during profile setup.

3. User Onboarding Flow Steps & Detailed Design Specifications

The onboarding flow consists of the following primary steps:

3.1. Step 1: Welcome & Value Proposition

  • Screen Name: Welcome Screen / Introduction
  • Purpose: Hook the user, reiterate the core value proposition, and set the stage for the onboarding journey.
  • Wireframe Description:

* Header: Brand Logo (top-left).

* Body (Primary): Large, engaging hero illustration/animation related to the platform's core offering.

* Body (Secondary): Prominent, concise headline (H1) that highlights the main benefit.

* Body (Tertiary): 2-3 bullet points or short paragraphs explaining key benefits or features.

* Footer: Primary Call-to-Action (CTA) button to begin onboarding. Secondary CTA for "Sign In" (for existing users).

  • Key Elements & Interactions:

* Hero Visual: High-quality, relevant image or animation.

* Headline: e.g., "Unlock Your Potential with [Platform Name]."

* Benefit Points: e.g., "Streamline your workflow," "Connect with experts," "Achieve your goals faster."

* Primary CTA: "Get Started," "Create Your Account."

* Secondary CTA: "Already have an account? Sign In." (as a text link or ghost button).

  • Content/Copy Guidelines:

* Tone: Welcoming, inspiring, concise.

* Language: Benefit-oriented, action-driven.

* Character Limit: Headlines < 50 chars, benefit points < 100 chars each.

  • UX Considerations:

* Ensure the hero visual loads quickly and is optimized for all devices.

* The "Sign In" option should be clearly visible but not detract from the primary "Get Started" action.

3.2. Step 2: Account Creation / Sign Up

  • Screen Name: Sign Up
  • Purpose: Collect essential credentials to create a new user account.
  • Wireframe Description:

* Header: Brand Logo (top-left), Progress Indicator (e.g., "1 of 5").

* Body: Clear heading (H2) "Create Your Account."

* Form Fields:

* Email Address (Text Input)

* Password (Password Input with "Show/Hide" toggle)

* Confirm Password (Password Input)

* Social Sign-Up Options: Buttons for "Continue with Google," "Continue with Apple," etc. (if applicable).

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

* Footer: Primary CTA button to proceed. Back button/link (if applicable).

  • Key Elements & Interactions:

* Input Fields: Standard text input with clear labels and placeholder text.

* Password Requirements: Display inline feedback for password strength (e.g., "Weak," "Medium," "Strong") and requirements (e.g., "min 8 characters, 1 uppercase, 1 number").

* Error Validation: Real-time inline validation for email format, password match, and existing email addresses.

* Social Sign-Up Buttons: Prominently displayed, distinct from manual sign-up.

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

  • Content/Copy Guidelines:

* Tone: Secure, straightforward.

* Labels: Clear and concise (e.g., "Email," "Password").

* Error Messages: Specific and helpful (e.g., "Invalid email format," "Passwords do not match").

  • UX Considerations:

* Prioritize security with clear password guidelines and a "Show/Hide" toggle.

* Offer social sign-up as a convenience, but ensure manual sign-up is equally accessible.

* Pre-fill email if user navigated from a previous step where email was captured.

3.3. Step 3: Initial Profile Setup (Essential Information)

  • Screen Name: Tell Us About Yourself
  • Purpose: Gather basic, essential user information required for core platform functionality or initial personalization.
  • Wireframe Description:

* Header: Brand Logo, Progress Indicator (e.g., "2 of 5").

* Body: Heading (H2) "A Little About You."

* Form Fields:

* Full Name (Text Input)

* Profile Picture Upload (Optional, with placeholder and clear instructions/file size limits)

* Role/Industry (Dropdown or Text Input with autocomplete)

* Location (Text Input with autocomplete)

* Footer: Primary CTA button to proceed. "Skip for now" link (if optional).

  • Key Elements & Interactions:

* Input Fields: Standard text/dropdown inputs.

* Profile Picture: Circular placeholder with "Upload Photo" button.

* Dropdown/Autocomplete: For structured data like Industry/Role.

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

* Secondary CTA: "Skip for now" (if all fields are optional).

  • Content/Copy Guidelines:

* Tone: Friendly, encouraging, reassuring.

* Labels: Clear (e.g., "Your Name," "What's your role?").

Privacy Note: Briefly explain why* this information is needed (e.g., "This helps us tailor your experience").

  • UX Considerations:

* Clearly mark optional fields.

* Provide immediate feedback on profile picture upload (e.g., preview, upload status).

* Ensure autocomplete suggestions are relevant and fast.

3.4. Step 4: Personalization / Preferences

  • Screen Name: Tailor Your Experience
  • Purpose: Allow users to customize their initial experience based on interests, goals, or preferences. This directly influences the content/features they see first.
  • Wireframe Description:

* Header: Brand Logo, Progress Indicator (e.g., "3 of 5").

* Body: Heading (H2) "What are you hoping to achieve?" or "Tell us your interests."

* Interaction Area:

* Multiple choice questions (radio buttons or checkboxes).

* Tag/Pill selection (user selects 3-5 interests from a predefined list).

* Slider for preference intensity (e.g., "How often do you want updates?").

* Footer: Primary CTA button to proceed. "Skip for now" link.

  • Key Elements & Interactions:

* Selection Components: Visually engaging buttons or cards for choices.

* Clear Questions: Simple, direct questions.

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

* Secondary CTA: "Skip for now."

  • Content/Copy Guidelines:

* Tone: Helpful, guiding.

* Questions: Focused on user benefits (e.g., "What types of content interest you most?").

Explanations: Briefly explain how* these choices will impact their experience.

  • UX Considerations:

* Limit the number of choices per screen to avoid cognitive overload.

* Provide a default selection or "Select All" option if appropriate.

* Ensure selections are clearly highlighted.

* This step is crucial for demonstrating immediate value post-onboarding.

3.5. Step 5: Feature Introduction / "First Action" Prompt

  • Screen Name: Your First Step
  • Purpose: Introduce a core feature or guide the user to perform their first meaningful action, reinforcing the platform's utility.
  • Wireframe Description:

* Header: Brand Logo, Progress Indicator (e.g., "4 of 5").

* Body: Heading (H2) "Ready to [Achieve a Goal]?"

* Content Area:

* Short explanation of a key feature or first action.

* Screenshot or short animated GIF demonstrating the action.

* Direct prompt to perform the action (e.g., "Create your first project," "Explore personalized content").

* Footer: Primary CTA button to initiate the action. "Maybe later" link.

  • Key Elements & Interactions:

* Visual Aid: Clear visual demonstrating the action.

* Primary CTA: "Start My First [Action]," "Explore Now." This CTA should ideally lead directly into the feature.

* Secondary CTA: "Maybe later."

  • Content/Copy Guidelines:

* Tone: Empowering, action-oriented.

* Call to Action: Very specific and direct.

* Benefit-driven: Emphasize what the user gains by taking this action.

  • UX Considerations:

* This step is critical for reducing time-to-value.

* The chosen "first action" should be simple, quick, and highly representative of the platform's core utility.

* Consider A/B testing different first actions to optimize engagement.

3.6. Step 6: Onboarding Completion & Dashboard Access

  • Screen Name: You're All Set! / Welcome to [Platform Name]!
  • Purpose: Celebrate onboarding completion and seamlessly transition the user to their personalized dashboard or main application area.
  • Wireframe Description:

* Header: Brand Logo.

* Body: Large, celebratory illustration/animation (e.g., confetti, high-five).

* Heading (H1): "You're All Set!" or "Welcome to [Platform Name]!"

* Sub-heading (H3): "Your personalized journey begins now."

* Optional: Brief tips for getting started (e.g., "Check out your personalized feed," "Invite teammates").

* Footer: Primary CTA button to enter the application.

  • Key Elements & Interactions:

* Celebratory Visual: High-impact, positive imagery.

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

  • Content/Copy Guidelines:

* Tone: Enthusiastic, welcoming, congratulatory.

* Call to Action: Clear and direct to the main app area.

  • UX Considerations:

* This screen should feel like a reward for completing the onboarding.

* Ensure a smooth transition to the dashboard without additional loading screens if possible.

* Consider a subtle, short animation for the transition.

4. Color Palette

A harmonious and accessible color palette is crucial for a professional and pleasant user experience.

  • Primary Brand Color: #007bff (A vibrant, trustworthy blue - often used for primary CTAs, active states, and key branding elements).
  • Secondary Brand Color: #28a745 (A fresh, positive green - used for success messages, secondary CTAs, or complementary accents).
  • Accent Color: #ffc107 (A warm, engaging yellow - used sparingly for highlights, warnings, or interactive elements that need to stand out).
  • Neutral Colors:

* Dark Text/Primary Text: #212529 (Near black for maximum readability).

* Secondary Text/Subtle Elements: #6c757d (Medium gray for less prominent text or icons).

* Light Gray/Borders: #dee2e6 (For borders, dividers, subtle backgrounds).

* Background: #f8f9fa (Off-white for main content areas).

* White: #ffffff (Pure white for cards, modals, and primary backgrounds).

  • Error Color: #dc3545 (A clear, impactful red for error messages and warnings).

Accessibility Note: Ensure sufficient contrast ratios (at least AA level) between text and background colors, especially for interactive elements and primary content.

5. Typography

Consistent typography enhances readability and maintains brand identity.

  • Primary Font Family: Inter (or a similar clean, modern sans-serif like Roboto, Open Sans). This font offers excellent readability across various sizes and weights.
  • Fallback Fonts: sans-serif
  • Font Weights: Regular (400), Medium (500), Semi-Bold (600), Bold (700)
  • Sizing (Desktop Base):

* H1 (Page Titles/Hero): 3rem (48px), font-weight: 700

* H2 (Section Titles): 2rem (32px), font-weight: 600

* H3 (Sub-sections/Prominent Labels): 1.5rem (24px), font-weight: 500

* Body Text (Default): 1rem (16px), font-weight: 400, line-height: 1.5

* Small Text/Captions: 0.875rem (14px), font-weight: 400

* Button Text: 1rem (16px), font-weight: 600

  • Mobile Scaling: Font sizes should be appropriately scaled down for
gemini Output

Finalized Design Assets: User Onboarding Flow

This document provides a comprehensive and detailed design specification for your "User Onboarding Flow." It encompasses wireframe descriptions, detailed design specifications, a proposed color palette, and key User Experience (UX) recommendations. The aim is to create an engaging, intuitive, and efficient onboarding experience that maximizes user activation and retention.


1. Overall UX Principles for Onboarding

Before diving into specifics, the following core principles will guide the design of the onboarding flow:

  • Clarity & Simplicity: Each step should have a clear purpose with minimal cognitive load.
  • Value Proposition: Continuously reinforce the core benefit the user will gain.
  • Progress & Feedback: Users should always know where they are in the process and receive immediate feedback.
  • Actionable & Goal-Oriented: Guide users towards their first successful interaction with the product.
  • Optionality & Control: Provide options to skip or revisit steps, giving users agency.
  • Personalization: Tailor the experience where possible to make it relevant.

2. Global Design Specifications

These specifications apply across the entire onboarding flow to ensure consistency.

2.1. Typography

  • Primary Font Family: Montserrat (for headings and prominent text)
  • Secondary Font Family: Open Sans (for body text and smaller labels)
  • Headings:

* H1 (Screen Title): Montserrat, Bold, 32px - 36px, Line-height: 120%

* H2 (Section Title): Montserrat, Semi-Bold, 24px - 28px, Line-height: 125%

* H3 (Sub-heading): Open Sans, Medium, 18px - 20px, Line-height: 130%

  • Body Text:

* Large Body: Open Sans, Regular, 16px, Line-height: 150%

* Standard Body: Open Sans, Regular, 14px, Line-height: 150%

* Small Text/Captions: Open Sans, Regular, 12px, Line-height: 140%

  • Button Text: Montserrat, Semi-Bold, 16px, Uppercase (optional)
  • Link Text: Open Sans, Regular, 14px, Underlined on hover

2.2. Iconography

  • Style: Line-based, consistent stroke weight (e.g., 2px). Rounded corners where appropriate.
  • Source: Material Icons, Font Awesome Pro, or custom SVG set.
  • Usage: For navigation, feature illustration, feedback (success/error), and interactive elements.

2.3. Spacing & Grid

  • Base Unit: 8px grid system. All spacing, padding, and margins should be multiples of 8px.
  • Common Spacing:

* Small: 8px, 16px

* Medium: 24px, 32px

* Large: 48px, 64px

  • Content Area Width: Max-width of 480px - 768px for onboarding screens on desktop to maintain focus, centered horizontally. Responsive for mobile.

2.4. Interactive Elements

  • Primary Buttons (CTAs):

* Default: Solid fill with Primary color, White text. Border-radius: 8px.

* Hover: Slightly darker Primary shade.

* Active/Pressed: Darker Primary shade, slight scale down.

* Disabled: Light gray background (Neutral-300), Neutral-500 text.

* Height: 48px - 56px.

  • Secondary Buttons:

* Default: Bordered with Primary color, Primary text. Transparent background. Border-radius: 8px.

* Hover: Primary color background, White text.

  • Text Links: Primary color, underline on hover.
  • Input Fields:

* Default: Light gray border (Neutral-400), White background, Neutral-700 text. Border-radius: 8px. Height: 48px.

* Focus: Primary color border, subtle shadow.

* Error: Error color border, Error text for helper message.

* Success: Success color border.

  • Checkboxes/Radio Buttons: Custom-styled to match brand, Primary color for checked state.

3. Color Palette

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

  • Primary Color: #007BFF (Blue) - Represents trust, professionalism, and action.

* Usage: Main call-to-action buttons, active states, key branding elements.

  • Secondary Color: #6C757D (Gray) - Provides balance and supports primary elements.

* Usage: Secondary actions, subtle backgrounds, inactive elements.

  • Accent Color: #28A745 (Green) - Used for success messages and positive reinforcement.

* Usage: Success indicators, "new" badges, positive highlights.

  • Neutral Colors (Grayscale):

* #FFFFFF (White) - Backgrounds, text on dark elements.

* #F8F9FA (Light Gray) - Subtle background tints, card backgrounds.

* #E9ECEF (Border Gray) - Input field borders, dividers.

* #CED4DA (Medium Gray) - Placeholder text, disabled elements.

* #ADB5BD (Darker Gray) - Secondary text, icons.

* #495057 (Dark Gray) - Body text.

* #212529 (Black) - Headings, primary text.

  • Text Colors:

* Primary Text: #212529

* Secondary Text: #495057

* Placeholder Text: #ADB5BD

* Link Text: #007BFF

  • Semantic Colors:

* Success: #28A745

* Warning: #FFC107

* Error: #DC3545


4. Onboarding Flow Breakdown

This section details each screen of the user onboarding flow, including wireframe descriptions, specific design considerations, and UX recommendations.

4.1. Screen 1: Welcome & Value Proposition

  • Purpose: Make a strong first impression, clearly state the product's core value, and invite the user to begin.
  • Wireframe Description:

* Header (Top):

* Logo (centered or top-left).

* "Skip" or "Already have an account? Log In" link (top-right, Secondary color text).

* Main Content (Centered):

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

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

* H3: "Your ultimate solution for [Key Benefit 1] and [Key Benefit 2]." (Concise, benefit-driven sub-heading).

* Body Text: A short, compelling paragraph explaining how the product simplifies a user's problem or enhances their life.

* Footer (Bottom):

* Primary CTA Button: "Get Started" or "Create My Account" (fills screen width).

* Optional: "Learn More" or "Watch a Quick Tour" link (secondary action).

  • Key Design Specifications:

* Hero illustration: High-quality SVG or Lottie animation, responsive.

* H1 and H3 text: Centered, generous vertical spacing.

* Primary CTA: Prominent, Primary color background, 56px height.

  • UX Recommendations:

* Clear Value: Ensure the H1 and H3 immediately convey the core value.

* Visual Appeal: Use a high-quality, relevant illustration or animation to capture attention.

* Low Barrier: Offer a "Skip" or "Log In" option to cater to existing or impatient users.

4.2. Screen 2: Sign-Up / Account Creation

  • Purpose: Collect essential information to create a user account.
  • Wireframe Description:

* Header (Top):

* Logo (top-left).

* "Back" arrow icon (top-left, next to logo, if previous screen was part of the flow).

* "Sign In" or "Log In" link (top-right, Secondary color text).

* Main Content (Centered):

* H2: "Create Your Account"

* Input Fields:

* Email Address (type="email", required)

* Password (type="password", required, with "Show/Hide" toggle)

* Confirm Password (type="password", required)

* Optional: "Full Name" or "Username"

* Password Requirements: Small text below password field, e.g., "Minimum 8 characters, 1 uppercase, 1 number."

* Terms & Privacy Checkbox: "I agree to the [Terms of Service](link) and [Privacy Policy](link)." (required)

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

* Social Sign-Up Options: "Or continue with..." with buttons for Google, Apple, Facebook icons.

* Footer (Bottom):

* "Already have an account? [Log In](link)"

  • Key Design Specifications:

* Input fields: 48px height, Neutral-400 border.

* Error states: Error color border and text for validation messages.

* Password toggle: Eye icon (SVG), Neutral-600 color.

* Social sign-up buttons: Icons 24x24px, clear labels, consistent styling.

  • UX Recommendations:

* Minimize Fields: Only ask for absolutely necessary information at this stage.

* Clear Validation: Provide real-time inline validation feedback for inputs (e.g., password strength).

* Social Login: Offer social login options to reduce friction.

* Password Visibility: Implement a password toggle for user convenience and error prevention.

* Accessibility: Ensure all input fields have aria-label or label tags.

4.3. Screen 3: Personalization / Preferences (Optional)

  • Purpose: Gather information to tailor the user's experience and demonstrate immediate relevance.
  • Wireframe Description:

* Header (Top):

* Logo (top-left).

* "Skip for now" link (top-right, Secondary color text).

* Progress Indicator: "2/5" or a visual progress bar.

* Main Content (Centered):

* H2: "Tell us about yourself" or "What brings you here?"

* H3: "This helps us personalize your experience."

* Input/Selection Fields (Examples):

* "What's your primary goal?" (Multiple choice chips/buttons, e.g., "Increase Productivity," "Learn New Skills," "Connect with Peers").

* "What industries are you interested in?" (Multi-select dropdown or tag input).

* "How did you hear about us?" (Dropdown).

* Optional: "Name" field (if not collected during sign-up).

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

  • Key Design Specifications:

* Selection chips: Neutral-200 background, Neutral-700 text. Primary color background with White text when selected.

* Dropdowns: Consistent with input field styling.

* Progress indicator: Simple dot indicator or a progress bar, Primary color for active state.

  • UX Recommendations:

Explain "Why": Clearly state why* this information is being collected (e.g., "to personalize your feed").

* Keep it Short: Limit the number of questions to avoid user fatigue.

* Visual Selection: Use intuitive UI elements like choice chips or cards for easy selection over complex forms.

* Always Skippable: Provide a clear "Skip for now" option.

4.4. Screen 4: Feature Tour / Quick Tutorial

  • Purpose: Introduce core functionalities and guide users to understand how to use the product effectively.
  • Wireframe Description:

*Header (Top):

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