UNPKG

white-label-insurance-library

Version:

A reusable white-label insurance application component library.

172 lines (121 loc) 4.19 kB
# 📦 How to Use the White-Label Insurance Application Library This document provides instructions on how to consume and customize the `white-label-insurance-library` npm package within your own React applications, including how to listen to events. --- ## 1. 📥 Consuming the Library ### Installation in Consumer App Create a new React project (if you don't have one): ```bash npm create vite@latest my-consumer-app -- --template react-ts cd my-consumer-app npm install ``` Install required dependencies: ```bash npm install react-router-dom npm install --save-dev @types/react-router-dom ``` Install your white-label library: ```bash npm install white-label-insurance-library # Replace with your actual package name ``` --- ### Integration In your consumer application's entry point (e.g., `src/main.tsx`), import and render the `WhiteLabelApp` component. You can pass callback functions as props to `WhiteLabelApp` to listen for events. ```tsx // my-consumer-app/src/main.tsx import React from 'react'; import ReactDOM from 'react-dom/client'; import { BrowserRouter } from 'react-router-dom'; import { WhiteLabelApp, WhiteLabelAppProps } from 'white-label-insurance-library'; const handleBrandChange: WhiteLabelAppProps['onBrandChange'] = (newBrandKey) => { console.log(`Consumer App: Brand changed to: ${newBrandKey}`); }; const handleFormSubmit: WhiteLabelAppProps['onFormSubmit'] = (formData) => { console.log('Form submitted successfully!', formData); }; const handleQuestionsLoadStart: WhiteLabelAppProps['onQuestionsLoadStart'] = () => { console.log('Questions API fetch started...'); }; const handleQuestionsLoadSuccess: WhiteLabelAppProps['onQuestionsLoadSuccess'] = () => { console.log('Questions API fetch successful!'); }; const handleQuestionsLoadError: WhiteLabelAppProps['onQuestionsLoadError'] = (error) => { console.error('Questions API fetch failed:', error); }; ReactDOM.createRoot(document.getElementById('root')!).render( <React.StrictMode> <BrowserRouter> <WhiteLabelApp onBrandChange={handleBrandChange} onFormSubmit={handleFormSubmit} onQuestionsLoadStart={handleQuestionsLoadStart} onQuestionsLoadSuccess={handleQuestionsLoadSuccess} onQuestionsLoadError={handleQuestionsLoadError} /> </BrowserRouter> </React.StrictMode>, ); ``` > You may remove the default `App.tsx` and `App.css` if using `WhiteLabelApp` for all routing. --- ## 2. 🎨 Brand Switching You can switch brands in two ways: ### URL Parameter (Initial Load) Append `?brand=<brandKey>` to your application’s URL: ``` http://localhost:5173/?brand=zurich http://localhost:5173/?brand=axa http://localhost:5173/?brand=metlife ``` ### Dropdown Selection Use the **"Select Your Brand"** dropdown on the Welcome or Questions page. This uses internal context and does not modify the URL. > The `onBrandChange` callback will be triggered when switching. --- ## 3. 🛠 Customization ### Defining New Brands Edit `src/branding/brands.ts` in the library: ```ts export type BrandKey = 'zurich' | 'axa' | 'metlife' | 'newbrand'; export const brands: Record<BrandKey, Brand> = { newbrand: { name: 'New Brand Name', primaryColor: '#1a1a1a', secondaryColor: '#333333', fontFamily: '"Arial", sans-serif', fontWeight: 400, backgroundColor: '#f0f0f0', logoUrl: 'https://via.placeholder.com/150/1a1a1a/FFFFFF?text=New+Brand+Logo', buttonColor: '#1a1a1a', buttonTextColor: '#FFFFFF', headingFontSize: '2.0em', inputBorderColor: '#555555', }, }; ``` Rebuild and publish: ```bash npm run build npm publish ``` --- ## 4. 🎨 Overriding Styles The library uses CSS variables. You can override them globally in your consumer app: ```css /* src/index.css */ body { --brand-primary: #ff5733; --brand-background-color: #f0f8ff; } .questions-container { box-shadow: 0 0 20px rgba(255, 87, 51, 0.5); } ``` --- ## ✅ Features - Multi-brand white-label support - Custom theming via CSS variables - Callback-based communication for brand and form events - Easy React Router integration --- ## 📜 License MIT free to use and customize.