omnify-onboarding-package
Version:
A comprehensive onboarding flow component for React applications with 5-step process including profile setup, company setup, analytics connection, asset upload, and brand guidelines.
166 lines (152 loc) • 5.09 kB
TypeScript
import React$1 from 'react';
interface User {
id: string;
name?: string;
email: string;
companyName?: string;
role?: 'CEO' | 'CMO' | 'Marketing' | 'MarketingTeam' | 'General';
}
interface OnboardingData {
firstName: string;
lastName: string;
role: string;
companyName: string;
industry: string;
objective: string;
analyticsConnected: boolean;
selectedPlatforms: string[];
assets: Asset[];
adCopy: string;
brandGuidelines: BrandGuidelines;
}
interface Asset {
id: string;
type: 'image' | 'text' | 'video' | 'document';
name: string;
url?: string;
file?: File;
size?: number;
uploadedAt?: string;
}
interface BrandGuidelines {
colors: string[];
toneOfVoice: string;
targetAudience: string;
style?: string;
}
interface OnboardingStep {
id: number;
key: string;
title: string;
description: string;
icon: string;
isCompleted: boolean;
isActive: boolean;
}
interface OnboardingFlowProps {
user: User;
onComplete: (data: OnboardingData) => void;
onStepChange?: (step: number, data: Partial<OnboardingData>) => void;
initialData?: Partial<OnboardingData>;
showHeader?: boolean;
showFooter?: boolean;
className?: string;
}
interface OnboardingStepProps {
step: number;
data: OnboardingData;
onNext: () => void;
onBack: () => void;
onDataChange: (data: Partial<OnboardingData>) => void;
isLastStep: boolean;
}
interface ValidationResult {
isValid: boolean;
errors: string[];
}
interface OnboardingConfig {
steps: OnboardingStep[];
validationRules: Record<number, (data: OnboardingData) => ValidationResult>;
customComponents?: Record<string, React.ComponentType<any>>;
theme?: {
primaryColor?: string;
secondaryColor?: string;
backgroundColor?: string;
textColor?: string;
};
}
type OnboardingStepKey = 'profile' | 'company' | 'analytics' | 'assets' | 'brand';
interface StepNavigation {
canGoNext: boolean;
canGoBack: boolean;
isFirstStep: boolean;
isLastStep: boolean;
}
declare const OnboardingFlow: React$1.FC<OnboardingFlowProps>;
declare const ProfileStep: React$1.FC<OnboardingStepProps>;
declare const CompanyStep: React$1.FC<OnboardingStepProps>;
declare const AnalyticsStep: React$1.FC<OnboardingStepProps>;
declare const AssetsStep: React$1.FC<OnboardingStepProps>;
declare const BrandStep: React$1.FC<OnboardingStepProps>;
interface ProgressIndicatorProps {
steps: OnboardingStep[];
currentStep: number;
onStepClick: (stepId: number) => void;
}
declare const ProgressIndicator: React$1.FC<ProgressIndicatorProps>;
interface HeaderProps {
user?: User;
}
declare const Header: React$1.FC<HeaderProps>;
declare const Footer: React$1.FC;
declare const validateProfileStep: (data: OnboardingData) => ValidationResult;
declare const validateCompanyStep: (data: OnboardingData) => ValidationResult;
declare const validateAnalyticsStep: (data: OnboardingData) => ValidationResult;
declare const validateAssetsStep: (data: OnboardingData) => ValidationResult;
declare const validateBrandStep: (data: OnboardingData) => ValidationResult;
declare const validateStep: (step: number, data: OnboardingData) => ValidationResult;
declare const validateAllSteps: (data: OnboardingData) => ValidationResult;
declare const ONBOARDING_STEPS: {
id: number;
key: string;
title: string;
description: string;
icon: string;
isCompleted: boolean;
isActive: boolean;
}[];
declare const ROLE_OPTIONS: {
value: string;
label: string;
}[];
declare const INDUSTRY_OPTIONS: string[];
declare const MARKETING_OBJECTIVES: string[];
declare const PLATFORM_OPTIONS: {
value: string;
label: string;
icon: string;
}[];
declare const TONE_OF_VOICE_OPTIONS: string[];
declare const TARGET_AUDIENCE_OPTIONS: string[];
declare const BRAND_STYLE_OPTIONS: {
value: string;
label: string;
icon: string;
}[];
declare const BRAND_COLORS: {
primary: string[];
neutral: string[];
};
declare const FILE_UPLOAD_CONFIG: {
maxFileSize: number;
acceptedFileTypes: {
'image/*': string[];
'application/pdf': string[];
'text/csv': string[];
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': string[];
'application/vnd.ms-excel': string[];
};
maxFiles: number;
};
export { AnalyticsStep, AssetsStep, BRAND_COLORS, BRAND_STYLE_OPTIONS, BrandStep, CompanyStep, FILE_UPLOAD_CONFIG, Footer, Header, INDUSTRY_OPTIONS, MARKETING_OBJECTIVES, ONBOARDING_STEPS, OnboardingFlow, PLATFORM_OPTIONS, ProfileStep, ProgressIndicator, ROLE_OPTIONS, TARGET_AUDIENCE_OPTIONS, TONE_OF_VOICE_OPTIONS, validateAllSteps, validateAnalyticsStep, validateAssetsStep, validateBrandStep, validateCompanyStep, validateProfileStep, validateStep };
export type { Asset, BrandGuidelines, OnboardingConfig, OnboardingData, OnboardingFlowProps, OnboardingStep, OnboardingStepKey, OnboardingStepProps, StepNavigation, User, ValidationResult };