=== 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