UNPKG

@citiwave/im-disclaimer-modal

Version:

A customizable React disclaimer modal component with theme support

205 lines (155 loc) 3.97 kB
# IM Disclaimer Modal > **⚠️ Pre-release Notice:** This package is still under development and should not be considered a beta or production-ready. Use at your own risk. A React component for displaying and managing user agreements, disclaimers, and consent forms. ## Features - 🎨 Beautiful, modern UI with customizable themes and colors - 📱 Fully responsive design - 💾 Local storage integration for persistent user choices - 🔒 Required and optional section support - 🛠️ CLI tool for managing disclaimers - ⚙️ Configurable settings per disclaimer ## Installation ```bash npm install @citiwave/im-disclaimer-modal ``` ## Quick Start ```tsx import { DisclaimerModal } from '@citiwave/im-disclaimer-modal'; function App() { return ( <DisclaimerModal name="privacy-policy" dataPath="src/data/disclaimers" className="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded" > Open Privacy Policy </DisclaimerModal> ); } ``` ## CLI Usage The package includes a CLI tool for managing disclaimers. After installation, you can use the `im-disclaimer` command. ### Initial Setup Run the setup command to configure the default directory for storing disclaimers: ```bash im-disclaimer setup ``` ### Creating Disclaimers Create a new disclaimer with optional properties: ```bash im-disclaimer create privacy-policy --title "Privacy Policy" --theme dark im-disclaimer create terms --title "Terms of Service" --default-open true ``` ### Managing Disclaimers List all disclaimers: ```bash im-disclaimer list im-disclaimer list --json # Output in JSON format ``` Update disclaimer properties: ```bash im-disclaimer set privacy-policy --theme dark --accent "#FF4444" --title "Updated Privacy Policy" ``` Remove a disclaimer: ```bash im-disclaimer remove privacy-policy ``` ### Group Commands Creating a Group: ```bash im-disclaimer group create ``` ### Props Commands View props: ```bash im-disclaimer props ``` Update props: ```bash im-disclaimer props:update ``` ### Configuration View current configuration: ```bash im-disclaimer config ``` Update default directory: ```bash im-disclaimer config:set --default-dir "src/data/disclaimers" ``` ## File Structure The CLI creates and manages two types of files in your disclaimers directory: ### 1. Disclaimer Content (`name.json`) ```json { "section-1": { "title": "Section Title", "required": true, "content": { "title": "Content Title", "sections": [ { "heading": "Subsection Heading", "text": "Main text content", "list": [ "List item 1", "List item 2" ] } ] } } } ``` ### 2. Configuration (`_config.json`) ```json { "privacy-policy": { "title": "Privacy Policy", "prefix": "my-app", "defaultOpen": true, "theme": "dark", "accent": "#FF4444" } } ``` ## Component Props | Prop | Type | Description | |------|------|-------------| | name | string | Name of the disclaimer to load | | dataPath | string | Path to the disclaimers directory | | className | string | CSS classes for the trigger button | | children | ReactNode | Content for the trigger button | ## Advanced Usage ### Custom Storage Prefix ```tsx const { isOpen, onClose } = useDisclaimer('privacy-policy', { storagePrefix: 'my-app', defaultOpen: true }); ``` ### Theme Customization ```tsx <DisclaimerModal name="privacy-policy" dataPath="src/data/disclaimers" theme="dark" accentColor="#FF4444" /> ``` ### Manual Control ```tsx const { isOpen, onClose, setAllSectionsAgreed } = useDisclaimer('privacy-policy'); <DisclaimerModal isOpen={isOpen} onClose={onClose} onAllSectionsAgreed={(agreed) => { setAllSectionsAgreed(agreed); // Additional handling }} /> ``` ## Contributing We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. ## License MIT