npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

omnify-onboarding-package

v1.0.0

Published

A comprehensive onboarding flow component for React applications with 5-step process including profile setup, company setup, analytics connection, asset upload, and brand guidelines.

Readme

@omnify/onboarding-flow

A comprehensive, customizable onboarding flow component for React applications with a 5-step process including profile setup, company setup, analytics connection, asset upload, and brand guidelines.

✨ Features

  • 5-Step Onboarding Process: Complete user onboarding flow
  • Responsive Design: Mobile-first, responsive UI components
  • TypeScript Support: Full TypeScript support with comprehensive types
  • Customizable: Easy to customize themes, validation rules, and components
  • Form Validation: Built-in validation for each step
  • File Upload: Support for multiple file types (images, PDFs, CSVs, Excel)
  • Progress Tracking: Visual progress indicator with step navigation
  • Accessibility: Built with accessibility best practices
  • Modern UI: Clean, modern design using Tailwind CSS

🚀 Installation

npm install @omnify/onboarding-flow
# or
yarn add @omnify/onboarding-flow

📦 Peer Dependencies

This package requires the following peer dependencies:

{
  "react": ">=16.8.0",
  "react-dom": ">=16.8.0"
}

🎯 Quick Start

import React from 'react';
import { OnboardingFlow } from '@omnify/onboarding-flow';

function App() {
  const handleOnboardingComplete = (data) => {
    console.log('Onboarding completed:', data);
    // Handle completion logic
  };

  const user = {
    id: 'user-123',
    email: '[email protected]',
    name: 'John Doe'
  };

  return (
    <OnboardingFlow
      user={user}
      onComplete={handleOnboardingComplete}
    />
  );
}

🔧 Configuration

Basic Props

<OnboardingFlow
  user={user}
  onComplete={handleComplete}
  onStepChange={handleStepChange}
  initialData={initialData}
  showHeader={true}
  showFooter={true}
  className="custom-class"
/>

Props Reference

| Prop | Type | Default | Description | |------|------|---------|-------------| | user | User | Required | User object with basic information | | onComplete | (data: OnboardingData) => void | Required | Callback when onboarding completes | | onStepChange | (step: number, data: Partial<OnboardingData>) => void | Optional | Callback when step changes | | initialData | Partial<OnboardingData> | {} | Pre-populate form fields | | showHeader | boolean | true | Show/hide the header component | | showFooter | boolean | true | Show/hide the footer component | | className | string | '' | Additional CSS classes |

📋 Onboarding Steps

1. Profile Setup

  • First Name
  • Last Name
  • Role (CEO, CMO, Marketing, etc.)

2. Company Setup

  • Company Name
  • Industry
  • Primary Marketing Objective

3. Analytics Connection

  • File upload (CSV, PDF, Excel)
  • Platform selection (Social media platforms)
  • Google Analytics connection option

4. Asset Upload

  • Campaign assets upload
  • Ad copy input
  • File management

5. Brand Guidelines

  • Brand colors selection
  • Tone of voice
  • Target audience
  • Brand style preferences

🎨 Customization

Custom Validation Rules

import { validateStep } from '@omnify/onboarding-flow';

// Custom validation for step 1
const customValidation = (step: number, data: OnboardingData) => {
  if (step === 1) {
    // Custom validation logic
    return {
      isValid: data.firstName.length > 2,
      errors: data.firstName.length <= 2 ? ['First name must be at least 3 characters'] : []
    };
  }
  return validateStep(step, data);
};

Custom Components

import { OnboardingFlow, ProfileStep } from '@omnify/onboarding-flow';

// Use custom step component
const CustomProfileStep = (props) => {
  // Custom implementation
  return <ProfileStep {...props} />;
};

// Replace default step
<OnboardingFlow
  user={user}
  onComplete={handleComplete}
  customComponents={{
    ProfileStep: CustomProfileStep
  }}
/>

Theme Customization

const customTheme = {
  primaryColor: '#FF6B6B',
  secondaryColor: '#4ECDC4',
  backgroundColor: '#F8F9FA',
  textColor: '#212529'
};

<OnboardingFlow
  user={user}
  onComplete={handleComplete}
  theme={customTheme}
/>

📊 Data Structure

OnboardingData Interface

interface OnboardingData {
  // Step 1: Profile
  firstName: string;
  lastName: string;
  role: string;
  
  // Step 2: Company
  companyName: string;
  industry: string;
  objective: string;
  
  // Step 3: Analytics
  analyticsConnected: boolean;
  selectedPlatforms: string[];
  
  // Step 4: Assets
  assets: Asset[];
  adCopy: string;
  
  // Step 5: Brand
  brandGuidelines: BrandGuidelines;
}

User Interface

interface User {
  id: string;
  name?: string;
  email: string;
  companyName?: string;
  role?: 'CEO' | 'CMO' | 'Marketing' | 'MarketingTeam' | 'General';
}

🔍 Validation

Each step includes built-in validation:

  • Profile Step: Requires first name, last name, and role
  • Company Step: Requires company name, industry, and objective
  • Analytics Step: Requires either analytics connection or platform selection
  • Assets Step: Requires either assets upload or ad copy
  • Brand Step: Requires brand colors, tone of voice, and target audience

📁 File Upload

Supported file types:

  • Images: JPG, PNG, GIF, WebP
  • Documents: PDF, CSV, Excel (XLSX, XLS)
  • Maximum file size: 10MB
  • Maximum files: 20

🎯 Use Cases

  • SaaS Onboarding: User setup and configuration
  • Marketing Platforms: Campaign setup and brand configuration
  • E-commerce: Store setup and preferences
  • Analytics Tools: Data source connection
  • Creative Platforms: Asset management and style preferences

🚀 Advanced Usage

Step-by-Step Navigation

const [currentStep, setCurrentStep] = useState(1);

const handleStepChange = (step: number, data: Partial<OnboardingData>) => {
  console.log(`Step ${step} data:`, data);
  setCurrentStep(step);
};

<OnboardingFlow
  user={user}
  onComplete={handleComplete}
  onStepChange={handleStepChange}
/>

Data Persistence

const [onboardingData, setOnboardingData] = useState(() => {
  const saved = localStorage.getItem('onboarding-data');
  return saved ? JSON.parse(saved) : {};
});

const handleDataChange = (data: Partial<OnboardingData>) => {
  const newData = { ...onboardingData, ...data };
  setOnboardingData(newData);
  localStorage.setItem('onboarding-data', JSON.stringify(newData));
};

🧪 Development

Building the Package

npm run build

Development Mode

npm run dev

Type Checking

npm run type-check

📄 License

MIT License - see LICENSE file for details.

🤝 Contributing

Contributions are welcome! Please read our contributing guidelines and submit pull requests.

📞 Support

For support and questions:

  • Create an issue on GitHub
  • Check the documentation
  • Contact the Omnify team

🔄 Changelog

v1.0.0

  • Initial release
  • 5-step onboarding flow
  • TypeScript support
  • Responsive design
  • File upload functionality
  • Customizable components