=== HS Cart Notices & Checkout Messages for WooCommerce ===
Contributors: hookspark
Tested up to: 7.1
Requires at least: 6.8
Requires PHP: 8.2
Stable tag: 0.2.0-alpha.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Internal development preview: conditional messages, campaigns and free shipping notices for cart and checkout.

== Description ==
Enable one shipping message with editable text and an optional progress bar. The threshold comes from the matching WooCommerce shipping zone. Coupons, current variation prices and WooCommerce's displayed-subtotal calculation are respected. No prices, discounts, rates or orders are modified.

Create multiple information messages or campaigns with an optional button, start/end dates, amount limits, minimum quantity and products present/absent. Product search includes individual variations. New records and duplicates start disabled. Messages communicate information; they do not apply offers.

Local development alpha, not a public release. Includes category/subcategory conditions, minimum/maximum quantities, guest/login audience, priority, style presets, draft templates and versioned read-only HookSpark Pricing/MinMax connections.

Manage related messages from the native WooCommerce product and variation panels. Create an inactive draft with that product preselected; other cart conditions still apply. The separate block-based product editor is not covered by these panels.

== Installation ==
1. Install WooCommerce, then install and activate this ZIP.
2. Configure a native Free shipping method in WooCommerce > Settings > Shipping.
3. Open HookSpark > Cart Notices & Checkout Messages.
4. Open Messages to create an information message or campaign; open Free shipping to configure the native shipping notice. Review before enabling.
5. Test your own shipping zones, coupon rules and theme before any production use.

== Frequently Asked Questions ==
= Where is the message displayed? =
Classic cart: before cart totals. Classic checkout: before payment, with WooCommerce review fragments. Blocks: below the order summary, through the experimental OrderMeta slot and Store API. One position per surface in this candidate.

= When is the shipping notice hidden? =
Empty or virtual-only carts, missing country, multiple packages, unsupported methods, missing mandatory free-shipping coupon, or unsupported availability restrictions. It does not infer third-party shipping rules. Country estimates may change after the full address is supplied. Free shipping availability does not automatically select the method.

= How do campaign dates work? =
Times use the timezone displayed in the editor and retain that timezone after saving. Start is included, end is excluded. Ambiguous or nonexistent daylight-saving times are rejected. On an open page, expiry hides a visible message; a future campaign appears after a cart refresh or page reload. No scheduled background job is required.

= What happens on deactivation or deletion? =
Rendering stops. Settings and message records are preserved. There is no automatic deletion-of-data option.

= What has been tested? =
WordPress 7.1.1, WooCommerce 11.1.0, PHP 8.2.29 and Storefront 4.6.2 in an isolated synthetic lab. Classic and Blocks test orders completed. Package installation, update, data retention and reactivation also verified on WordPress 6.8 + WooCommerce 10.6.0, PHP 8.2.29. Browser acceptance applies to the current platform.

= Can I format messages and add banners? =
In Messages, use bold, italic and links, then select a visual preset, icon and optional banner from the Media Library. Four presets preserve your content and conditions: Simple notice, Gift card, Offer ribbon and Banner spotlight. Choose above/below placement, alternative text, optional image link and an optional mobile alternative. Desktop/mobile appearance previews do not simulate cart eligibility. Existing plain-text messages remain escaped until edited and saved with the new editor. The separate native Free shipping notice retains its existing text/progress settings and {remaining} placeholder.

== Changelog ==

= 0.2.0-alpha.2 =

* Shared admin confirmation for unsaved changes, with visible recovery and consistent exit behavior across HookSpark plugins.
* Align admin headings and tabs with the shared HookSpark typography.
* Include the current shared catalog entry and Italian text for Gift Cards; visiting the catalog does not install or activate products.
* No changes to message eligibility, discounts, shipping calculations or stored settings.

= Theme integration — 19 September 2026 =
* Storefront components inherit theme typography and neutral surfaces. Messages buttons use native theme classes; explicit message colors/fonts and semantic presets remain available.


= Local candidate quality fixes — 19 September 2026 =
* Suspend integration when WooCommerce is absent or below 10.6, with an administrator explanation and preserved settings.
* Batch message metadata reads to avoid one database round trip per message.
* Link rich-text validation to the visible editor and focus the correction; keep the icon picker inside narrow admin screens.

= 0.2.0-alpha.1 =
* Add 57 bundled Bootstrap Icons (MIT) with search and left/right/above placement; preserve original icons.
* Add visible icon choices and preserve the chosen icon when changing layouts.
* Add whole-message background/text colors with WordPress color picker and theme/local font choices.
* Keep the live preview beside the composition controls on desktop and immediately below the text on small screens.
* Add restricted rich-text editor, six optional icons, four editable visual presets and desktop/mobile appearance previews.
* Add library banners, alternative text, optional mobile image, link and placement.
* Preserve existing message content and eligibility rules. Local development alpha only.

= 0.1.0-rc.1 =
* Add task-oriented drafts, categories/subcategories, maximum quantity, audience, priorities and styles.
* Connect notices to actual Pricing reductions and current Min/Max validation; fail closed without a supported provider.
* Preserve native free-shipping progress when Pricing has no shipping grant.
* Add English/Italian guides, storefront scenarios and personal admin demo in the separate local demo system.
* Local candidate only; public deployment and channel review gates remain open.

= 0.1.0-alpha.2 =
* Add private message storage, create/edit/duplicate/delete and explicit activation.
* Add campaign scheduling, contextual CTA and cart amount/quantity/product/variation conditions.
* Add live text preview, classic/Blocks reactive rendering and open-page expiry.
* Extend English/Italian catalogs and shared admin controls.
* Internal preview only.

= 0.1.0-alpha.1 =
* Internal first implementation: native shipping threshold, editable copy, progress bar, classic and Blocks display.
* Shared HookSpark admin components and English/Italian translation catalog.
* No public release or production deployment.

== Visual editor development update ==
0.2.0-alpha.1: restricted rich-text editor, six optional icons, local raster banners, mobile alternative, four editable visual presets and server-rendered previews. Uploads follow WordPress permissions; restricted demo users select existing library images. No arbitrary HTML, scripts, remote-image fields or automatic promotion activation.

== Third-party assets ==
Bootstrap Icons 1.13.1: 57 selected icons, MIT license. Source: https://github.com/twbs/icons/tree/v1.13.1 . Copyright and license included in assets/icons/LICENSE-bootstrap-icons.txt. No remote runtime requests.

* Message list: combine title search with enabled, disabled, scheduled and expired status filters.
