JSPM

  • Created
  • Published
  • Downloads 8
  • Score
    100M100P100Q44762F
  • License ISC

Un package React simple et puissant pour créer des expériences d'onboarding interactives

Package Exports

  • onboarder
  • onboarder/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (onboarder) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Onboarder

Un package React simple et puissant pour créer des expériences d'onboarding interactives dans vos applications.

Installation

npm install onboarder
# ou
yarn add onboarder

Caractéristiques

  • 🚀 Facile à intégrer
  • 🎨 Personnalisable
  • 📱 Responsive
  • 🔄 Navigation fluide
  • ⚛️ Compatible React
  • 🎯 Ciblage d'éléments précis
  • 🌈 Thèmes personnalisables
  • 🔍 Mise en surbrillance des éléments
  • ⌨️ Support des raccourcis clavier
  • 🖱️ Fermeture par clic sur l'overlay

Utilisation de base

"use client";

import { Onboarder } from "onboarder";

function App() {
  const steps = [
    {
      target: "#welcome-button",
      title: "Bienvenue !",
      content: "Ceci est la première étape de votre onboarding.",
      placement: "bottom",
      highlight: true, // Met en surbrillance l'élément cible
    },
    {
      target: ".profile-section",
      title: "Votre profil",
      content: "Ici vous pouvez gérer vos informations personnelles.",
      placement: "right",
      highlight: true,
    },
  ];

  return (
    <div>
      <Onboarder steps={steps} />
      {/* Votre application */}
    </div>
  );
}

Configuration avancée

Personnalisation du thème

const customTheme = {
  primary: "#007bff",
  secondary: "#6c757d",
  textColor: "#333",
  backgroundColor: "#fff",
  borderRadius: "8px",
  highlight: {
    color: "rgba(0, 0, 0, 0.5)",
    borderRadius: "4px",
    opacity: 0.5,
  },
};

<Onboarder steps={steps} theme={customTheme} />;

Contrôle programmatique

"use client";

import { useState } from "react";
import { Onboarder } from "onboarder";

function App() {
  const [isOnboardingOpen, setIsOnboardingOpen] = useState(false);

  return (
    <div>
      <button onClick={() => setIsOnboardingOpen(true)}>
        Démarrer l'onboarding
      </button>

      <Onboarder
        steps={steps}
        isOpen={isOnboardingOpen}
        onOpenChange={setIsOnboardingOpen}
        onComplete={() => console.log("Onboarding terminé !")}
        closeOnEscape={true}
        closeOnOverlayClick={true}
        highlightTargets={true}
      />
    </div>
  );
}

Options de configuration

Option Type Description
steps Step[] Liste des étapes de l'onboarding
isOpen boolean Contrôle l'affichage de l'onboarding
theme Theme Personnalisation du thème
showProgress boolean Affiche la barre de progression
showSkip boolean Affiche le bouton "Passer"
highlightTargets boolean Met en surbrillance les éléments cibles
startOnMount boolean Démarre l'onboarding au montage
closeOnEscape boolean Permet de fermer avec la touche Escape
closeOnOverlayClick boolean Permet de fermer en cliquant sur l'overlay
onComplete () => void Callback appelé à la fin de l'onboarding
onClose () => void Callback appelé à la fermeture
onOpenChange (isOpen: boolean) => void Callback appelé lors du changement d'état

Interface Step

interface Step {
  target: string; // Sélecteur CSS de l'élément cible
  title: string; // Titre de l'étape
  content: string; // Contenu de l'étape
  placement?: Placement; // Position de la bulle (top, bottom, left, right)
  offset?: number; // Décalage par rapport à la cible
  highlight?: boolean; // Met en surbrillance l'élément cible
  highlightColor?: string; // Couleur de la surbrillance
  highlightBorderRadius?: string; // Rayon de la bordure de la surbrillance
}

Exemples d'utilisation

Onboarding avec étapes conditionnelles

"use client";

import { useState } from "react";
import { Onboarder } from "onboarder";

function App() {
  const [userType, setUserType] = useState("basic");

  const getSteps = () => {
    const commonSteps = [
      {
        target: "#welcome",
        title: "Bienvenue !",
        content: "Commençons votre parcours.",
        placement: "bottom",
      },
    ];

    if (userType === "premium") {
      return [
        ...commonSteps,
        {
          target: "#premium-features",
          title: "Fonctionnalités Premium",
          content: "Découvrez nos fonctionnalités avancées.",
          placement: "right",
        },
      ];
    }

    return commonSteps;
  };

  return (
    <div>
      <Onboarder steps={getSteps()} />
    </div>
  );
}

Onboarding avec sauvegarde de progression

"use client";

import { useState, useEffect } from "react";
import { Onboarder } from "onboarder";

function App() {
  const [currentStep, setCurrentStep] = useState(0);

  useEffect(() => {
    const savedStep = localStorage.getItem("onboardingStep");
    if (savedStep) {
      setCurrentStep(parseInt(savedStep));
    }
  }, []);

  const handleStepChange = (step: number) => {
    setCurrentStep(step);
    localStorage.setItem("onboardingStep", step.toString());
  };

  return (
    <Onboarder
      steps={steps}
      currentStep={currentStep}
      onStepChange={handleStepChange}
    />
  );
}

Contribution

Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.

Licence

ISC