@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
Markdown
# @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