=== Season Spark ===
Contributors: designsbyshahzad
Stable tag: 1.0.0
Tags: holiday, snow, particles, fireworks, seasonal
Requires at least: 5.4
Requires PHP: 7.2
Tested up to: 6.9
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Lightweight seasonal and holiday visual effects for WordPress, including snow, fireworks, hearts, and more, with accessibility-friendly controls.


== Description ==
Season Spark loads tasteful front-end particle effects and lightweight visual overlays. The plugin's implementation and admin UI provide the following behavior and options (exactly as implemented in the plugin):

- Included effects: `christmas` (snow/twinkles), `halloween` (ghosts/pumpkins + fog overlay), `valentines` (hearts + confetti), `newyear` (occasional fireworks bursts), `easter` (eggs & bunnies, occasional large egg drop), `thanksgiving` (falling leaves + occasional turkey popup), `independence` (fireworks + occasional flag/spark bursts), `diwali` (lights/diya sparkles + occasional diya popup), `hanukkah` (menorah sparkles + occasional menorah popup), and `generic` (custom graphics: rain/stars/bubbles or an uploaded background).
- Per-effect configuration: `enabled`, optional `schedule` with `start`/`end` dates, `density`, `speed`, and `color` for effects that use color (the admin shows color pickers only for effects that accept color).
- Custom Graphics support: the `generic` effect can use an uploaded background (`custom_bg`) and an uploaded custom cursor image (`custom_cursor_image`). When `custom_bg` is set the plugin creates a lightweight animated background element instead of particles.
- Custom Cursor support: when a per-effect `custom_cursor` is enabled the front-end will attempt to use a provided `custom_cursor_image` or bundled SVG image as an overlay cursor (implemented by the public JS initializer).
- Accessibility: the plugin respects the user's `prefers-reduced-motion` setting, supports a site-level `motion_reduced` admin toggle, and prints a small per-user motion toggle (stored in `localStorage`). When reduced motion is active, visual initialization is skipped.
- Performance: only enabled effects have their per-effect JS files enqueued; the plugin localizes `seasonSparkSettings` and `seasonSparkImages` for front-end initialization and ships the `tsparticles` bundle under `assets/vendor/tsparticles/`.

Admin and developer features (as implemented):

- Admin pages: top-level "Season Spark" menu with the subpages `Effects`, `Settings`, and `For Devs`.
- Settings: global toggles (load particle library, reduce motion) and default density/speed values; the Effects page exposes per-effect controls, schedule toggles, density/speed inputs, color pickers for color effects, and WP Media-based selectors for custom background/cursor on the `generic` effect.
- Developer filters present in the code: `seasonspark_get_registered_effects` (modify the list of effects), `seasonspark_settings_for_js` (filter settings passed to front-end JS), and `seasonspark_images_for_js` (filter the image mapping sent to JS).

Notes:

- Default activation: by default only the `valentines` effect is enabled on activation.
- Assets: effect scripts, images and styles are bundled under `assets/`; the plugin enqueues only enabled effect scripts to keep the front-end lightweight.

== Screenshots ==

1. Main plugin dashboard screen.
2. Effect module box
3. Additional settings
4. Dedicated developer information page

== Installation ==
1. Upload the `season-spark` folder to the `/wp-content/plugins/` directory.
2. Activate the plugin through the 'Plugins' screen in WordPress.
3. Configure the plugin under the Season Spark menu in the admin sidebar.

== Frequently Asked Questions ==
= Will these effects affect my SEO? =
No. Effects are decorative, output in aria-hidden containers, and rendered on canvas or as non-semantic visual overlays; they do not alter semantic page content.

= How can I add a new effect? =
Use the `seasonspark_get_registered_effects` filter to add a new key/title pair, and add a corresponding JS file under `assets/js/effects/` that calls `seasonSparkRegisterEffect('yourkey', fn)` to register an initializer for that effect.

== Changelog ==
= 1.0.0 =
* Initial release — core effects, admin UI, per-effect options and accessibility-aware front-end initialization.

== Upgrade Notice ==
N/A
