=== BBA Form Builder ===
Contributors: amitworx
Tags: forms, contact form, form builder, drag and drop
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.0
Stable tag: 1.0.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

A lightweight, modern WordPress form builder with a dependency-free frontend.

== Description ==

BBA Form Builder gives site owners a clean drag-and-drop form builder with a modern admin UI and lightweight frontend rendering.

Features include:

* Drag-and-drop builder interface
* Responsive columns and layout rows
* Dependency-free public form rendering
* AJAX submissions with inline validation
* Honeypot spam protection
* Rate limiting and restricted file uploads
* Email notifications with field placeholders
* Submission management and CSV export

== Installation ==

1. Upload the `bba-form-builder` folder to the `/wp-content/plugins/` directory, or install the plugin through the WordPress plugins screen.
2. Activate the plugin through the `Plugins` screen in WordPress.
3. Open `BBA Forms` in the WordPress admin menu.
4. Create a form and place it with the generated shortcode.

== Frequently Asked Questions ==

= How do I embed a form? =

Create a form in the builder and copy the shortcode shown in the form settings panel, for example `[bbaform_form id="12"]`.

= Does the frontend require jQuery? =

No. The public form output is dependency-free and uses standard browser JavaScript (`fetch`) for AJAX submissions and inline validation. Browser JavaScript must be enabled for public form submission.

= Can I use full-page caching on pages with a form? =

Yes, provided your page cache TTL is shorter than the WordPress security nonce and anti-spam timestamp window (typically 12 hours or less), or the form page is excluded from full-page caching so visitors do not submit expired security tokens.

= Are submissions stored in WordPress? =

Yes. Form submissions are stored as private plugin-managed entry posts and can be exported to CSV. Entries include the submitter IP address and browser user-agent string for abuse investigation. Uploaded files are stored in the WordPress uploads directory and are removed when their entry is permanently deleted through the plugin.

= Which file uploads are allowed? =

Public forms accept JPEG, PNG, GIF, WebP, PDF, plain-text, DOC, and DOCX files up to 5 MB by default. Site developers can adjust these restrictions with the `bbaform_allowed_upload_mimes` and `bbaform_max_upload_size` filters.

== Screenshots ==

1. Forms dashboard with shortcodes and submission counts.
2. Drag-and-drop form builder with a responsive two-column layout.
3. Email notification settings for form submissions.
4. Submission entries with captured form values and email status.
5. Responsive contact form displayed on the frontend.

== Changelog ==

= 1.0.2 =

* Added accessible field description and error associations (`aria-describedby`) and invalid field states (`aria-invalid`).
* Added accessible, initially hidden form status regions (`role="status"`, `role="alert"`, and `[hidden]` stylesheet protection).
* Added named radio and checkbox group semantics (`role="radiogroup"`, `role="group"`, and `aria-labelledby`).
* Added keyboard focus restoration after AJAX submissions and a per-form duplicate in-flight submission guard.

= 1.0.1 =

* Confirmed compatibility with WordPress 7.1.

= 1.0.0 =

* Initial release.

== Upgrade Notice ==

= 1.0.2 =

Frontend form accessibility and validation updates, including accessible status regions, field description and error associations, named radio/checkbox groups, focus restoration, and duplicate in-flight AJAX submission protection.

= 1.0.1 =

Compatibility update for WordPress 7.1.

= 1.0.0 =

Initial release.
