UNPKG

@amalsr/bootstrap-contact-form

Version:

A Bootstrap-based contact form widget for React, Next.js, and raw HTML via <script>.

132 lines (94 loc) 2.6 kB
# @amalsr/bootstrap-contact-form A Bootstrap-based contact form component with validation. Works in **React**, **Next.js**, and **plain HTML** using UMD build. 📦 Built with **Formik**, **Yup**, and **Bootstrap 5**. --- ## ✨ Features - 📬 Emits a custom event (`contactFormSubmit`) with form data on submit - Validations using Formik + Yup - 🧱 Built-in Bootstrap 5 styling - 🔌 Works as: - React/Next.js component - Widget on any HTML page --- ## 📦 Installation (React/Next.js) ```bash npm install @amalsr/bootstrap-contact-form ``` ### Usage ```jsx import ContactForm from "@amalsr/bootstrap-contact-form"; export default function Page() { return <ContactForm heading="Contact Us" />; } ``` > In **Next.js**, wrap in a Client Component if using inside `/app` directory: ```tsx "use client"; import ContactForm from "@amalsr/bootstrap-contact-form"; export default function ContactPage() { return <ContactForm heading="Reach Us" />; } ``` > Optionally import Bootstrap globally: ```tsx import 'bootstrap/dist/css/bootstrap.min.css'; ``` --- ## 🌐 Usage in Plain HTML You can use the contact form directly in a plain HTML page by loading the UMD bundle from the CDN. ### Include Scripts ```html <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" /> <!-- React + ReactDOM --> <script src="https://unpkg.com/react@18/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script> <!-- Contact Form Widget (UMD build) --> <script src="https://unpkg.com/@amalsr/bootstrap-contact-form@1.0.7/dist/index.umd.js"></script> ``` ### Add a Container and Render ```html <div id="contact-form-widget"></div> <script> renderContactForm("#contact-form-widget", { heading: "Reach Out to Us", }); window.addEventListener("contactFormSubmit", (e) => { console.log("Form Submitted:", e.detail); alert("Submitted: " + JSON.stringify(e.detail)); }); </script> ``` --- ## 📤 Emitted Data Format On submit, the form dispatches a browser event: ```js window.addEventListener("contactFormSubmit", (e) => { console.log(e.detail); }); ``` **Example Payload:** ```json { "firstName": "Amal", "lastName": "R", "email": "amal@example.com", "message": "Hi there!", "phone": "9999999999" } ``` --- ## 🛠 Build / Dev ```bash npm install npm run build ``` - `dist/index.esm.js` for React / Next.js - `dist/index.umd.js` for plain HTML via CDN --- ## 🔒 License MIT © Amal S R