User Onboarding Flow
Run ID: 69cd12533e7fb09ff16a7a8a2026-04-01UX Design
PantheraHive BOS
BOS Dashboard

User Onboarding Flow: Design Requirements & Specifications

Project Step: gemini → research_design_requirements

Workflow: User Onboarding Flow

Deliverable: Detailed Design Requirements & Specifications

This document outlines the comprehensive design requirements, wireframe descriptions, color palette recommendations, and user experience (UX) best practices for the "User Onboarding Flow." The goal is to create an intuitive, engaging, and efficient onboarding experience that quickly guides new users to their "Aha! moment" and encourages product adoption.


1. Design Specifications

The onboarding flow will be designed to achieve the following:

  • Educate: Clearly communicate the product's core value proposition and key features.
  • Engage: Encourage users to interact with the product and complete initial setup tasks.
  • Empower: Enable users to successfully perform their first meaningful action within the product.
  • Retain: Lay the foundation for long-term user engagement and satisfaction.

1.1 Functional Requirements

  • Welcome Screen: A clear, concise introduction to the product with a compelling value proposition and primary call-to-action (CTA) to "Get Started" or "Sign Up."
  • Account Creation/Login:

* Support for email/password registration.

Integration with popular social login providers (e.g., Google, Apple, Microsoft, GitHub – to be confirmed based on target audience*).

* "Forgot Password" functionality.

* Clear password strength indicators and requirements during registration.

* Acceptance of Terms of Service and Privacy Policy.

  • Progressive Onboarding Steps: Break down complex setup into manageable, sequential steps.

* Role/Goal Identification: Allow users to specify their primary use case or role to tailor subsequent steps.

* Initial Preferences/Personalization: Capture essential user preferences (e.g., industry, team size, interests) that influence the initial product experience.

Core Setup: Guide users through critical initial configurations (e.g., workspace name, inviting teammates – if applicable*).

* Product Tour/Feature Highlights: Optionally, a concise, interactive tour highlighting 1-3 key features, or a short explanatory video.

* First Action Prompt: Guide users directly to perform their first meaningful task within the application.

  • Progress Indicator: A clear visual indicator showing the user's progress through the onboarding flow (e.g., "Step X of Y").
  • Skip/Later Options: Allow users to skip non-essential onboarding steps and revisit them later from their profile or settings.
  • Input Validation & Error Handling: Real-time, inline validation for form fields with clear, actionable error messages.
  • Data Privacy & Security: Explicit communication regarding data usage and security measures.
  • Responsiveness: The entire onboarding flow must be fully responsive and optimized for various screen sizes (desktop, tablet, mobile).

1.2 Non-Functional Requirements

  • Performance: Fast loading times for all screens and interactions (target < 2 seconds).
  • Security: Adherence to industry best practices for data encryption, authentication, and authorization.
  • Usability: Intuitive design, clear language, and minimal cognitive load.
  • Accessibility: WCAG 2.1 AA compliance for users with disabilities.
  • Scalability: The system should be able to handle a large number of concurrent new users without performance degradation.
  • Maintainability: Codebase and design elements should be well-documented and easy to update or modify.

2. Wireframe Descriptions (Conceptual)

The following describes the key screens and their primary elements for the user onboarding flow. These are conceptual outlines to guide the visual design process.

2.1 Screen 1: Welcome / Landing Page

  • Header: Product Logo (top left), "Log In" (top right, secondary CTA).
  • Hero Section (Center):

* Headline: Catchy, benefit-driven statement (e.g., "Unlock Your Potential with [Product Name]").

* Sub-headline: Briefly elaborates on the core value proposition.

* Hero Image/Illustration/Animation: Visually appealing graphic representing the product's benefit or core functionality.

* Primary CTA: Prominent button, "Get Started Free" or "Sign Up Now."

  • Optional Sections (Below Hero):

* Brief overview of 2-3 key features with icons.

* Testimonials or trust signals (e.g., "Loved by 10,000+ users").

* "Learn More" or "Watch Demo" secondary CTA.

2.2 Screen 2: Account Creation / Sign In

  • Header: Product Logo, "Back" or "Close" icon (optional).
  • Main Content Area:

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

* Sub-headline: Short instruction or benefit reminder.

* Social Login Buttons: Prominent buttons for Google, Apple, etc. (e.g., "Continue with Google").

* Separator: "OR" or "Sign up with email."

* Email/Password Fields:

* Email address input.

* Password input with "Show/Hide" toggle and strength indicator.

* Confirm password input (for signup).

* CTA Button: "Create Account" or "Log In."

* "Forgot Password" Link: (for login flow).

* Terms & Privacy Links: Small text links to legal documents.

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

2.3 Screen 3: Progressive Onboarding Steps (Example Sequence)

Each step will feature:

  • Progress Indicator: "Step X of Y" at the top.
  • Headline: Clear question or instruction for the current step.
  • Sub-headline: Optional, provides context or benefit.
  • Main Content Area: Specific interactive elements for the step.
  • Navigation: "Back" button (optional, if previous step has editable data), "Next" or "Continue" primary CTA, "Skip for now" secondary CTA.

Example Step 3.1: "What brings you to [Product Name]?" (Role/Goal Selection)

  • Content: Multiple-choice options (e.g., "Manage projects," "Collaborate with my team," "Personal productivity," "Learn new skills").
  • Interaction: Radio buttons or clickable cards.

Example Step 3.2: "Tell us a bit about your team." (Initial Personalization)

  • Content: Dropdown for team size, input for company name (optional), industry selection.
  • Interaction: Form fields, dropdowns.

Example Step 3.3: "Name your workspace." (Core Setup)

  • Content: Input field for workspace name, suggestion of default name.
  • Interaction: Text input.

Example Step 3.4: "Quick Tour: Get Started with [Feature X]." (Product Tour - Optional)

  • Content: Short animated GIF or video demonstrating a key feature, or a series of interactive hotspots on a mock-up screen.
  • Interaction: "Play Video," "Next Tip," "Skip Tour."

2.4 Screen 4: Onboarding Complete / Dashboard Entry

  • Header: Product Logo, user avatar (top right).
  • Main Content Area:

* Headline: "Welcome to [Product Name], [User's First Name]!" or "You're All Set!"

* Sub-headline: Reinforce success and invite exploration.

* Primary CTA: "Go to Dashboard," "Start Your First Project."

* Secondary CTAs (Contextual): "Invite Teammates," "Explore Templates," "Watch Advanced Tutorial."

* Optional: A small, contextual "What's Next?" section with 2-3 suggested actions.


3. Color Palettes

The color palette will aim for a modern, professional, and inviting aesthetic, promoting trust and ease of use.

3.1 Primary Palette (Example)

  • Primary Brand Color (e.g., Deep Teal / #00796B): Used for primary CTAs, active states, key branding elements. Conveys trust, sophistication, and innovation.
  • Secondary Accent Color (e.g., Bright Coral / #FF6F61): Used for secondary CTAs, highlights, notifications, or interactive elements. Adds energy and draws attention.
  • Neutral Dark (Text) (e.g., Charcoal Gray / #333333): For primary body text and important headings. Ensures readability.
  • Neutral Light (Background) (e.g., Off-White / #F8F8F8): For page backgrounds and content areas. Provides a clean, spacious feel.
  • Mid-Gray (Borders/Dividers) (e.g., Light Gray / #DCDCDC): For borders, separators, and subtle inactive states.

3.2 Semantic Colors

  • Success (e.g., Green / #4CAF50): For positive feedback, successful actions.
  • Error (e.g., Red / #F44336): For error messages, invalid inputs.
  • Warning (e.g., Orange / #FF9800): For cautionary messages, non-critical alerts.

3.3 Accessibility Considerations

  • Ensure sufficient contrast ratios between text and background colors (WCAG 2.1 AA standard: 4.5:1 for normal text, 3:1 for large text).
  • Avoid relying solely on color to convey meaning; use icons or text labels in conjunction with colors for semantic feedback.

4. UX Recommendations

These recommendations are crucial for creating a highly effective and user-friendly onboarding experience.

  • Clarity and Simplicity:

* Use clear, concise language free of jargon.

* Minimize the number of decisions users need to make at each step.

* Maintain a clean, uncluttered visual design.

  • Value Reinforcement:

* Continuously remind users of the product's benefits and how it solves their pain points.

* Show, don't just tell (e.g., use small illustrations or micro-animations).

  • Progressive Disclosure:

* Introduce information and options gradually, only when relevant to the current step.

* Avoid overwhelming users with too many choices or complex forms upfront.

  • "Aha!" Moment Focus:

* Identify the core value proposition and design the onboarding flow to lead users to experience this "Aha! moment" as quickly as possible.

* Example: For a project management tool, the "Aha!" moment might be seeing their first task created and assigned.

  • Feedback and Microinteractions:

* Provide immediate visual feedback for user actions (e.g., button clicks, form submissions).

* Use subtle animations and transitions to guide attention and indicate progress.

  • Contextual Help:

* Offer unobtrusive tooltips or small "i" icons for complex fields or concepts.

* Link to relevant help documentation without disrupting the flow.

  • Personalization:

* Use information gathered during onboarding (e.g., role, industry) to tailor the initial dashboard view or suggest relevant features.

* Address users by their name where appropriate.

  • Empathetic Error Handling:

* Prevent errors where possible (e.g., inline validation).

* When errors occur, provide clear, polite, and actionable messages that guide users to a solution.

  • Mobile-First Approach:

* Design the onboarding flow with mobile users in mind first, ensuring touch-friendly elements and optimized layouts for smaller screens, then scale up for desktop.

  • Iterative Testing & Optimization:

* Conduct A/B testing on different onboarding variations (e.g., number of steps, messaging, CTAs).

* Gather user feedback through surveys or usability testing to identify pain points and areas for improvement.

* Monitor key metrics such as completion rate, time to complete, and initial feature adoption.


This detailed output forms the foundational research and design requirements for the User Onboarding Flow. It will serve as a guiding document for subsequent design and development phases.

gemini Output

Detailed Design Specifications: User Onboarding Flow

This document outlines comprehensive design specifications, wireframe descriptions, color palettes, 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 reduces friction.


1. High-Level Design Specifications

Objective: To guide new users seamlessly through initial setup, demonstrate core value, and prepare them for successful engagement with the platform.

Core Principles:

  • Clarity & Simplicity: Each step should be easy to understand and execute.
  • Value-Driven: Clearly communicate the benefits of the platform at each stage.
  • Progressive Disclosure: Introduce information and tasks gradually to avoid overwhelming users.
  • Efficiency: Minimize the number of steps and required inputs without sacrificing essential setup.
  • Engagement: Utilize microinteractions, clear feedback, and a welcoming tone.
  • Accessibility: Ensure the flow is usable for all users, including those with disabilities.

Key Features of the Onboarding Flow:

  • Welcome & Value Proposition: A concise introduction to the platform's benefits.
  • Account Creation/Login: Secure and straightforward options for signing up or logging in.
  • Profile Personalization: Essential information gathering to tailor the user experience.
  • Preferences & Interests: Optional steps to further customize the user's journey.
  • Permissions & Notifications: Clear requests for necessary system permissions.
  • Quick Tour/Feature Highlights: A brief, optional walkthrough of key functionalities.
  • First Action Prompt: Guiding users to their initial interaction with the platform.

2. Wireframe Descriptions

The following outlines the proposed screens and their key elements within the User Onboarding Flow.

2.1. Screen 1: Welcome / Splash Screen

  • Purpose: To greet the user, introduce the brand, and present the primary call to action for starting their journey.
  • Elements:

* Brand Logo: Prominently displayed at the top.

* Catchy Headline: e.g., "Welcome to [App Name]!" or "Unlock Your Potential with [App Name]."

* Short Value Proposition: 1-2 sentences explaining what the app does or its main benefit.

* Illustrative Graphic/Animation: A high-quality, engaging visual that embodies the app's purpose.

* Primary CTA Button: "Get Started" or "Sign Up Free."

* Secondary CTA (Optional): "Log In" (for returning users, often a text link below the primary CTA).

* Privacy Policy/Terms of Service Link: Small, discreet text link at the bottom.

  • Interaction: Clicking "Get Started" proceeds to Screen 2. Clicking "Log In" proceeds to a login screen.

2.2. Screen 2: Sign Up / Log In Options

  • Purpose: To offer users various methods for creating an account or logging in.
  • Elements:

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

* Social Sign-Up Buttons: Prominent buttons for "Continue with Google," "Continue with Apple," "Continue with Facebook," etc. (based on integration strategy).

* Separator: "or" with horizontal lines, visually separating social options from email.

* Email Sign-Up Form:

* Email Address Input Field

* Password Input Field (with show/hide toggle)

* "Confirm Password" (optional, for security)

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

* "Already have an account?" Link: Text link to navigate to the Log In screen.

  • Interaction:

* Clicking social buttons initiates respective OAuth flows.

* Filling the form and clicking "Sign Up" validates input and creates an account, proceeding to Screen 3.

* Clicking "Already have an account?" navigates to a dedicated login screen (if not integrated here).

2.3. Screen 3: Basic Profile Setup

  • Purpose: To gather essential user information for personalization and account identification.
  • Elements:

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

* Progress Indicator: Visual representation (e.g., "1 of 5 steps").

* Input Fields:

* First Name

* Last Name (optional)

* Username (optional, with availability check)

* Profile Picture Upload (optional, with default avatar)

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

* "Skip for now" Link (Optional): Allows users to defer this step if not critical.

  • Interaction: Validating inputs and clicking "Continue" saves the information and proceeds to Screen 4.

2.4. Screen 4: Personalization / Interests Selection

  • Purpose: To understand user preferences and tailor the initial experience, content, or recommendations.
  • Elements:

* Headline: "What are you interested in?" or "Help us personalize your experience."

* Progress Indicator: Visual representation (e.g., "2 of 5 steps").

* Category/Tag Selection: A grid or list of interactive buttons/checkboxes representing different interests, topics, or goals relevant to the platform.

* "Select at least [X] options" Hint: Guidance for users.

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

* "Skip for now" Link: Allows users to defer this step.

  • Interaction: Selecting interests and clicking "Continue" saves preferences and proceeds to Screen 5.

2.5. Screen 5: Permissions & Notifications

  • Purpose: To request necessary device permissions (e.g., push notifications, location) with clear explanations.
  • Elements:

* Headline: "Stay Updated" or "Enable Notifications."

* Progress Indicator: Visual representation (e.g., "3 of 5 steps").

* Permission Card/Section 1 (e.g., Push Notifications):

* Icon representing notifications.

* Short explanation of benefit: "Get real-time updates and important alerts."

* Toggle switch or "Allow Notifications" button.

* Permission Card/Section 2 (e.g., Location - if applicable):

* Icon representing location.

* Short explanation of benefit: "Discover relevant content near you."

* Toggle switch or "Allow Location Access" button.

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

* "Not now" / "Skip" Link: Allows users to defer.

  • Interaction: Toggling switches or clicking buttons triggers native permission prompts. Clicking "Continue" proceeds to Screen 6.

2.6. Screen 6: Quick Tour / Feature Highlights (Optional)

  • Purpose: To briefly showcase key features or the main value proposition before full access. This can be a carousel or a short interactive walkthrough.
  • Elements:

* Headline: "Quick Tour" or "Discover Key Features."

* Progress Indicator: Dots or numbers for carousel slides.

* Carousel Slides (2-4 slides recommended):

* Slide 1: Feature 1 Title, short description, illustrative graphic.

* Slide 2: Feature 2 Title, short description, illustrative graphic.

* Slide 3: Feature 3 Title, short description, illustrative graphic.

* Primary CTA Button: "Explore [App Name]" or "Finish."

* "Skip Tour" Link: Allows users to bypass the tour.

  • Interaction: Swiping/clicking through slides. Clicking "Explore [App Name]" or "Skip Tour" proceeds to Screen 7.

2.7. Screen 7: Onboarding Completion / First Action Prompt

  • Purpose: To celebrate onboarding completion and guide the user to their first meaningful interaction.
  • Elements:

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

* Confetti/Celebratory Animation (Optional): Adds delight.

* Personalized Message: "Let's start by [suggested first action]" or "Here's your personalized dashboard."

* Primary CTA Button: "Start Browsing," "Create Your First Project," "Go to Dashboard" (specific to the app's core function).

* Secondary CTA (Optional): "Explore Features" or "Visit Help Center."

  • Interaction: Clicking the primary CTA takes the user to the main application interface, initiating their first interaction.

3. Color Palette

A sophisticated and user-friendly color palette will enhance the perceived professionalism and usability of the onboarding flow.

  • Primary Brand Color: #007AFF (A vibrant, trustworthy blue, common for tech and app interfaces)

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

  • Secondary Accent Color: #34C759 (A fresh, optimistic green)

* Usage: Success states, positive feedback, secondary CTAs (if applicable), highlights.

  • Tertiary Accent Color (Optional): #FF9500 (A warm, inviting orange)

* Usage: Warnings, optional actions, special promotions, small delightful elements.

  • Neutral Palette:

* Dark Text/Primary: #1C1C1E (Deep charcoal, highly readable on light backgrounds)

* Secondary Text/Icons: #6B6B6B (Softer gray for less emphasis)

* Light Backgrounds: #F2F2F7 (Off-white, gentle on the eyes)

* Card/Container Backgrounds: #FFFFFF (Pure white for clean separation)

* Borders/Dividers: #E5E5EA (Subtle light gray)

  • Error Color: #FF3B30 (Standard red for error messages and invalid inputs)

Accessibility Note: Ensure sufficient contrast ratios (WCAG 2.1 AA or AAA) between text and background colors, especially for primary content and interactive elements.


4. UX Recommendations

These recommendations aim to optimize the user experience, reduce drop-off rates, and foster early engagement.

  1. Progress Indicators: Implement clear and consistent progress indicators (e.g., "Step 1 of 5," progress bar, or dot indicators) on multi-step forms to manage user expectations and provide a sense of achievement.
  2. Clear Call-to-Actions (CTAs): Use descriptive and action-oriented labels for buttons (e.g., "Get Started," "Continue," "Create Account," "Go to Dashboard") rather than generic terms like "Submit."
  3. Input Validation & Feedback:

* Real-time Validation: Provide immediate feedback on input fields (e.g., green checkmark for valid email, red text for invalid password requirements).

Inline Error Messages: Clearly state what went wrong and how* to fix it directly next to the problematic input field.

* Password Requirements: Display password strength indicators and requirements (min length, special characters, etc.) as the user types.

  1. "Skip for now" Options: Strategically offer "Skip for now" links for optional steps (e.g., profile picture, interests, quick tour). This empowers users and prevents friction for those in a hurry, with the understanding that these can be completed later.
  2. Microinteractions & Delight:

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

* Loading States: Use subtle animations (spinners, skeleton loaders) during data fetching or account creation to reassure users that the system is working.

* Completion Animation: A brief, celebratory animation (e.g., confetti, checkmark) upon successful onboarding completion can enhance positive sentiment.

  1. Personalization: Leverage gathered preferences (interests, goals) to immediately showcase relevant content or features on the initial dashboard, reinforcing the value proposition.
  2. Mobile-First Design: Ensure the onboarding flow is fully responsive and optimized for mobile devices, considering touch targets, virtual keyboards, and screen real estate.
  3. Accessibility (A11Y):

* Semantic HTML: Use appropriate HTML elements for structure and meaning.

* ARIA Attributes: Implement ARIA roles and labels where native HTML is insufficient.

* Keyboard Navigation: Ensure all interactive elements are reachable and operable via keyboard.

* Screen Reader Compatibility: Provide meaningful text alternatives for images and clear labels for forms.

* Focus Management: Clearly indicate the active focus state.

  1. Security & Trust:

* Clearly state privacy policies and terms of service.

* Use secure password practices (e.g., hashing, salting) and communicate password requirements effectively.

* Indicate secure connections (HTTPS).

  1. Contextual Help (Optional): For complex steps, consider small info icons or tooltips that provide brief, contextual explanations without cluttering the interface.
  2. Analytics Integration: Implement analytics tracking at each step of the onboarding flow to identify drop-off points and areas for improvement.

This detailed output provides a robust foundation for the development of your User Onboarding Flow, focusing on an optimal balance of user experience, functionality, and aesthetic appeal.

gemini Output

Finalized Design Assets for User Onboarding Flow

This document outlines the comprehensive design specifications, wireframe descriptions, color palettes, and UX recommendations for the "User Onboarding Flow." This deliverable represents the culmination of our design process, providing a detailed blueprint for implementation to ensure a seamless, engaging, and effective first-time user experience.


1. Introduction & Onboarding Philosophy

The goal of this User Onboarding Flow is to guide new users effectively through their initial interaction with the platform, ensuring they understand its core value, complete necessary setup, and feel confident in their ability to utilize its features. Our design philosophy centers on:

  • Clarity: Simple, direct language and intuitive navigation.
  • Value Proposition: Immediately showcasing the benefits and solutions the platform offers.
  • Efficiency: Minimizing friction and steps required to reach core functionality.
  • Engagement: Using visually appealing elements and positive feedback to motivate users.
  • Flexibility: Allowing users control over the process, including options to skip or revisit steps.

2. Wireframe Descriptions & Screen Flow

The onboarding flow is designed as a progressive journey, broken down into logical steps. Each screen serves a specific purpose, contributing to the overall goal of user activation.

2.1. Welcome Screen (Splash/Introduction)

  • Purpose: Greet the user, set a positive tone, and briefly introduce the platform's primary benefit.
  • Key Elements:

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

* Concise tagline or one-liner highlighting the main value.

* Engaging illustration or animation.

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

* Secondary CTA: "Log In" for existing users.

* Optional: Link to "Learn More" or "Privacy Policy."

2.2. Value Proposition / Benefit-Oriented Screens (2-3 Slides)

  • Purpose: Educate the user on the key benefits and features of the platform in an easily digestible format.
  • Key Elements (per slide):

* Clear, benefit-driven heading.

* Short, descriptive paragraph explaining the feature/benefit.

* Accompanying illustration or animation visually representing the concept.

* Progress indicator (dots or bar) showing current step.

* Navigation buttons: "Next," "Back," and "Skip" (optional, but recommended).

  • Content Examples:

* "Achieve Your Goals Faster" (with an illustration of productivity/success).

* "Collaborate Seamlessly" (with an illustration of team interaction).

* "Stay Organized Effortlessly" (with an illustration of a tidy dashboard).

2.3. Account Creation / Login Screen

  • Purpose: Facilitate user registration or sign-in.
  • Key Elements:

* Toggle/Tabs for "Sign Up" and "Log In."

* Sign Up:

* Input fields: Email, Password (with "Show/Hide" toggle), Confirm Password.

* Password strength indicator.

* Checkboxes for "I agree to the Terms of Service" and "Privacy Policy" (linked).

* Primary CTA: "Create Account."

* Log In:

* Input fields: Email, Password.

* "Forgot Password?" link.

* Primary CTA: "Log In."

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

* Clear error messages for invalid inputs.

2.4. Personalization / Preference Selection (Optional, if applicable)

  • Purpose: Gather essential information to tailor the user experience from the outset.
  • Key Elements:

* Clear question or prompt (e.g., "What brings you to [Platform Name]?").

* Multiple-choice options, checkboxes, or radio buttons for selection.

* Input fields for specific details (e.g., "Team Size," "Industry").

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

* "Skip for now" option.

2.5. Quick Tour / Feature Introduction (Optional, for complex apps)

  • Purpose: Highlight key UI elements or primary functionalities within the actual interface.
  • Key Elements:

* Overlay tour with tooltips pointing to specific features.

* Short, contextual explanations for each highlighted element.

* "Next" and "End Tour" buttons.

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

* Alternatively: A short, animated tutorial video.

2.6. Completion / Dashboard Access Screen

  • Purpose: Confirm successful onboarding and provide a clear path to the main application.
  • Key Elements:

* Congratulatory message (e.g., "You're All Set!" or "Welcome Aboard!").

* Positive illustration or animation.

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

* Optional: Suggest a first action (e.g., "Create your first project").

2.7. Empty States / First Use Experience

  • Purpose: Provide guidance and motivation when a user encounters a section with no content yet.
  • Key Elements:

* Friendly message explaining the empty state (e.g., "No projects yet!").

* Suggestive illustration.

* Clear CTA to initiate the first action (e.g., "Create Your First Project").


3. Detailed Design Specifications

These specifications ensure consistency and a high-quality visual experience across the entire onboarding flow.

3.1. Typography

  • Primary Font Family: [e.g., Inter, Lato, Montserrat] - Modern, legible, and versatile.
  • Secondary Font Family: [e.g., Source Sans Pro, Open Sans] - Used for body text and less prominent elements to provide contrast or enhance readability.

| Element | Font Family | Weight | Size (Desktop) | Size (Mobile) | Color (Hex) | Usage |

| :-------------- | :--------------- | :--------- | :------------- | :------------ | :---------- | :---------------------------------------- |

| H1 (Titles) | Primary | Bold (700) | 48px | 32px | #1A1A1A | Welcome, Section Titles |

| H2 (Subtitles)| Primary | Semibold (600)| 32px | 24px | #1A1A1A | Screen Headings |

| H3 (Card Titles)| Primary | Medium (500)| 20px | 18px | #1A1A1A | Feature Headings, Section Labels |

| Body Large | Secondary | Regular (400)| 18px | 16px | #4A4A4A | Main descriptive text, feature explanations |

| Body Regular| Secondary | Regular (400)| 16px | 14px | #4A4A4A | Input labels, paragraph text |

| Body Small | Secondary | Regular (400)| 14px | 12px | #7A7A7A | Helper text, legal links, disclaimers |

| Buttons | Primary | Semibold (600)| 16px | 14px | #FFFFFF | Primary CTAs |

| Links | Secondary | Regular (400)| 16px | 14px | #007BFF | Inline links, "Forgot Password" |

3.2. Iconography

  • Style: Line icons with a consistent stroke weight and rounded corners.
  • Usage: Used to visually represent features, actions, or states (e.g., checkmarks for success, 'x' for error, eye icon for password visibility).
  • Consistency: All icons sourced from a single library (e.g., Feather Icons, Material Icons) or custom-designed to maintain a unified aesthetic.
  • Size: Standard sizes include 16px, 24px, 32px, and 48px, used contextually.

3.3. Button States

  • Primary CTA (Fill):

* Default: [Primary Brand Color], white text.

* Hover: [Primary Brand Color - Darker Shade], white text.

* Pressed: [Primary Brand Color - Even Darker Shade], white text.

* Disabled: [Neutral Light Gray], [Neutral Dark Gray] text.

* Loading: [Primary Brand Color], white text, with spinner animation.

  • Secondary CTA (Outline):

* Default: Transparent background, [Primary Brand Color] border and text.

* Hover: [Primary Brand Color - Lightest Shade] background, [Primary Brand Color] border and text.

* Pressed: [Primary Brand Color - Lighter Shade] background, [Primary Brand Color] border and text.

  • Tertiary CTA (Text Link):

* Default: Transparent background, [Primary Brand Color] text.

* Hover: [Primary Brand Color] text, subtle underline.

* Pressed: [Primary Brand Color - Darker Shade] text, bold underline.

3.4. Input Fields

  • Default: Light gray border (#D9D9D9), [Body Regular] text color.
  • Focused: [Accent Color] border, subtle shadow.
  • Error: [Semantic Error Color] border, [Semantic Error Color] text for error message.
  • Success: [Semantic Success Color] border, checkmark icon.
  • Placeholder Text: [Neutral Dark Gray] (lighter than body text).

3.5. Navigation Elements

  • Progress Indicators (Dots/Bars): [Primary Brand Color] for active step, [Neutral Light Gray] for inactive steps. Smooth transition between steps.
  • "Skip" Option: Clearly visible but not competing with primary CTAs, typically a secondary or tertiary button style.

3.6. Illustrations & Imagery

  • Style: Custom, flat, or semi-flat vector illustrations with a consistent art direction.
  • Purpose: To convey concepts, add personality, and reduce cognitive load.
  • Color Palette: Adheres to the defined brand color palette, with occasional complementary tones.
  • Animations: Subtle, tasteful animations (e.g., Lottie files) can enhance engagement on welcome screens or completion screens.

3.7. Micro-interactions

  • Button Clicks: Subtle press down effect and quick release.
  • Form Validation: Real-time feedback (e.g., green checkmark for valid input, red border for invalid).
  • Progress: Smooth transitions between onboarding screens.
  • Tooltips: Appear on hover for interactive elements, disappear on mouse-out or click.

4. Color Palette

The chosen color palette is designed to be modern, approachable, and professional, aligning with the brand identity.

4.1. Primary Brand Colors

  • Main Primary: #4C7DFF (e.g., button backgrounds, active states, key brand elements)
  • Primary Dark: #2E5CE6 (e.g., hover states, darker accents)
  • Primary Light: #A3C0FF (e.g., subtle backgrounds, progress bar inactive)

4.2. Secondary Colors

  • Secondary Main: #6B7F9B (e.g., supporting elements, less prominent text)
  • Secondary Light: #E0E6EF (e.g., card backgrounds, subtle dividers)

4.3. Accent Colors

  • Accent 1: #00C29F (e.g., success indicators, highlights, secondary CTAs)
  • Accent 2: #FF9F43 (e.g., warnings, occasional highlights)

4.4. Semantic Colors

  • Success: #00C29F (Green, for successful actions/validation)
  • Error: #FF4C4C (Red, for errors or critical warnings)
  • Warning: #FFC107 (Yellow, for warnings or cautionary messages)
  • Info: #2196F3 (Blue, for informational messages)

4.5. Neutral Colors

  • Darkest Gray (Text): #1A1A1A (Headings, primary text)
  • Dark Gray (Text/Borders): #4A4A4A (Body text, input borders)
  • Medium Gray (Helper Text): #7A7A7A (Placeholder text, secondary info)
  • Light Gray (Borders/Backgrounds): #D9D9D9 (Input borders, dividers)
  • Off-White (Background): #F8F8F8 (General background, large areas)
  • Pure White: #FFFFFF (Card backgrounds, modals)

5. User Experience (UX) Recommendations

These recommendations aim to optimize the onboarding flow for maximum user satisfaction and conversion.

  • 5.1. Clarity and Conciseness:

* Minimal Text: Use short, benefit-oriented headings and brief descriptions. Avoid jargon.

* Visual Hierarchy: Ensure the most important information and CTAs stand out.

* Clear Instructions: Provide explicit guidance for input fields and actions.

  • 5.2. Progress Indication:

* Visual Progress Bar/Dots: Clearly show users where they are in the flow and how many steps remain.

* Step Naming: If using a multi-step form, label each step (e.g., "1. Your Profile," "2. Preferences").

  • 5.3. Skippability and Flexibility:

* "Skip for now" Options: Allow users to bypass non-critical setup steps and return to them later.

* "Back" Button: Provide an easy way to revisit previous screens.

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

  • **5.4
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
"); 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' import ReactDOM from 'react-dom/client' import App from './App' import './index.css' ReactDOM.createRoot(document.getElementById('root')!).render( ) "); 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' import './App.css' function App(){ return(

"+slugTitle(pn)+"

Built with PantheraHive BOS

) } export default App "); zip.file(folder+"src/index.css","*{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#f0f2f5;color:#1a1a2e} .app{min-height:100vh;display:flex;flex-direction:column} .app-header{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px} h1{font-size:2.5rem;font-weight:700} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` ## Open in IDE Open the project folder in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "type": "module", "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", "preview": "vite preview" }, "dependencies": { "vue": "^3.5.13", "vue-router": "^4.4.5", "pinia": "^2.3.0", "axios": "^1.7.9" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.1", "typescript": "~5.7.3", "vite": "^6.0.5", "vue-tsc": "^2.2.0" } } '); zip.file(folder+"vite.config.ts","import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' export default defineConfig({ plugins: [vue()], resolve: { alias: { '@': resolve(__dirname,'src') } } }) "); zip.file(folder+"tsconfig.json",'{"files":[],"references":[{"path":"./tsconfig.app.json"},{"path":"./tsconfig.node.json"}]} '); zip.file(folder+"tsconfig.app.json",'{ "compilerOptions":{ "target":"ES2020","useDefineForClassFields":true,"module":"ESNext","lib":["ES2020","DOM","DOM.Iterable"], "skipLibCheck":true,"moduleResolution":"bundler","allowImportingTsExtensions":true, "isolatedModules":true,"moduleDetection":"force","noEmit":true,"jsxImportSource":"vue", "strict":true,"paths":{"@/*":["./src/*"]} }, "include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src/**/*.vue"] } '); zip.file(folder+"env.d.ts","/// "); zip.file(folder+"index.html"," "+slugTitle(pn)+"
"); 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' import { createPinia } from 'pinia' import App from './App.vue' import './assets/main.css' const app = createApp(App) app.use(createPinia()) app.mount('#app') "); var hasApp=Object.keys(extracted).some(function(k){return k.indexOf("App.vue")>=0;}); if(!hasApp) zip.file(folder+"src/App.vue"," "); 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} "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install npm run dev ``` ## Build ```bash npm run build ``` Open in VS Code or WebStorm. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local "); } /* --- 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",'{ "name": "'+pn+'", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test" }, "dependencies": { "@angular/animations": "^19.0.0", "@angular/common": "^19.0.0", "@angular/compiler": "^19.0.0", "@angular/core": "^19.0.0", "@angular/forms": "^19.0.0", "@angular/platform-browser": "^19.0.0", "@angular/platform-browser-dynamic": "^19.0.0", "@angular/router": "^19.0.0", "rxjs": "~7.8.0", "tslib": "^2.3.0", "zone.js": "~0.15.0" }, "devDependencies": { "@angular-devkit/build-angular": "^19.0.0", "@angular/cli": "^19.0.0", "@angular/compiler-cli": "^19.0.0", "typescript": "~5.6.0" } } '); zip.file(folder+"angular.json",'{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "'+pn+'": { "projectType": "application", "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:application", "options": { "outputPath": "dist/'+pn+'", "index": "src/index.html", "browser": "src/main.ts", "tsConfig": "tsconfig.app.json", "styles": ["src/styles.css"], "scripts": [] } }, "serve": {"builder":"@angular-devkit/build-angular:dev-server","configurations":{"production":{"buildTarget":"'+pn+':build:production"},"development":{"buildTarget":"'+pn+':build:development"}},"defaultConfiguration":"development"} } } } } '); zip.file(folder+"tsconfig.json",'{ "compileOnSave": false, "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"]}, "references":[{"path":"./tsconfig.app.json"}] } '); zip.file(folder+"tsconfig.app.json",'{ "extends":"./tsconfig.json", "compilerOptions":{"outDir":"./dist/out-tsc","types":[]}, "files":["src/main.ts"], "include":["src/**/*.d.ts"] } '); zip.file(folder+"src/index.html"," "+slugTitle(pn)+" "); zip.file(folder+"src/main.ts","import { bootstrapApplication } from '@angular/platform-browser'; import { appConfig } from './app/app.config'; import { AppComponent } from './app/app.component'; bootstrapApplication(AppComponent, appConfig) .catch(err => console.error(err)); "); zip.file(folder+"src/styles.css","* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; background: #f9fafb; color: #111827; } "); 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'; import { RouterOutlet } from '@angular/router'; @Component({ selector: 'app-root', standalone: true, imports: [RouterOutlet], templateUrl: './app.component.html', styleUrl: './app.component.css' }) export class AppComponent { title = '"+pn+"'; } "); zip.file(folder+"src/app/app.component.html","

"+slugTitle(pn)+"

Built with PantheraHive BOS

"); 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} "); } zip.file(folder+"src/app/app.config.ts","import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideZoneChangeDetection({ eventCoalescing: true }), provideRouter(routes) ] }; "); zip.file(folder+"src/app/app.routes.ts","import { Routes } from '@angular/router'; export const routes: Routes = []; "); 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)+" Generated by PantheraHive BOS. ## Setup ```bash npm install ng serve # or: npm start ``` ## Build ```bash ng build ``` Open in VS Code with Angular Language Service extension. "); zip.file(folder+".gitignore","node_modules/ dist/ .env .DS_Store *.local .angular/ "); } /* --- Python --- */ function buildPython(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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(" "):"# add dependencies here "; zip.file(folder+"main.py",src||"# "+title+" # Generated by PantheraHive BOS print(title+" loaded") "); zip.file(folder+"requirements.txt",reqsTxt); zip.file(folder+".env.example","# Environment variables "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Run ```bash python main.py ``` "); zip.file(folder+".gitignore",".venv/ __pycache__/ *.pyc .env .DS_Store "); } /* --- Node.js --- */ function buildNode(zip,folder,app,code){ var title=slugTitle(app); var pn=pkgName(app); var src=code.replace(/^```[w]* ?/m,"").replace(/ ?```$/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)+" "; zip.file(folder+"package.json",pkgJson); var fallback="const express=require("express"); const app=express(); app.use(express.json()); app.get("/",(req,res)=>{ res.json({message:""+title+" API"}); }); const PORT=process.env.PORT||3000; app.listen(PORT,()=>console.log("Server on port "+PORT)); "; zip.file(folder+"src/index.js",src||fallback); zip.file(folder+".env.example","PORT=3000 "); zip.file(folder+".gitignore","node_modules/ .env .DS_Store "); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Setup ```bash npm install ``` ## Run ```bash npm run dev ``` "); } /* --- 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:" "+title+" "+code+" "; zip.file(folder+"index.html",indexHtml); zip.file(folder+"style.css","/* "+title+" — styles */ *{margin:0;padding:0;box-sizing:border-box} body{font-family:system-ui,-apple-system,sans-serif;background:#fff;color:#1a1a2e} "); zip.file(folder+"script.js","/* "+title+" — scripts */ "); zip.file(folder+"assets/.gitkeep",""); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. ## Open Double-click `index.html` in your browser. Or serve locally: ```bash npx serve . # or python3 -m http.server 3000 ``` "); zip.file(folder+".gitignore",".DS_Store node_modules/ .env "); } /* ===== 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(/ {2,}/g,"

"); h+="

"+hc+"

Generated by PantheraHive BOS
"; zip.file(folder+app+".html",h); zip.file(folder+"README.md","# "+title+" Generated by PantheraHive BOS. Files: - "+app+".md (Markdown) - "+app+".html (styled HTML) "); } 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);}});}