=== Spectre Icons ===
Contributors: phcdevworks
Tags: icons, elementor, svg, lucide, font awesome
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.5.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Adds Lucide, Font Awesome, and uploaded SVG icon libraries to Elementor's icon picker.

== Description ==

Spectre Icons registers curated and uploaded SVG icon libraries inside Elementor's icon picker and renders them as inline SVGs on the frontend.

* Enable or disable individual libraries from Settings → Spectre Icons
* Upload custom SVG icons from Settings → My Icons
* Manifest-driven rendering for bundled and uploaded SVG libraries
* Inline SVG injection in editor preview and frontend
* Disabled libraries are hidden from the picker; existing icons keep rendering
* Theme-friendly color inheritance through builder color controls

Supported widgets: Icon, Icon Box, Icon List, Social Icons.

== Installation ==

= From the WordPress admin =

1. Go to Plugins → Add New
2. Search for "Spectre Icons"
3. Click Install Now, then Activate
4. Go to Settings → Spectre Icons and enable the libraries you want

= Manual install =

1. Download the plugin ZIP
2. Go to Plugins → Add New → Upload Plugin
3. Upload the ZIP, activate it, then go to Settings → Spectre Icons

== Frequently Asked Questions ==

= Which page builders are supported? =

Elementor 3.x and 4.x, tested through Elementor 4.x. The architecture is built to support additional builders in future releases.

= Can I disable individual icon libraries? =

Yes. Uncheck a library under Settings → Spectre Icons to hide it from the Elementor icon picker. Icons already placed on your site will continue to render.

= Can I add my own icon packs? =

Yes. Upload SVG files from Settings → My Icons. Uploaded icons are sanitized, stored in a site-specific My Icons library, and appear in supported builder icon pickers after the first upload.

= What are the system requirements? =

WordPress 6.0+, PHP 7.4+, and Elementor 3.x or 4.x tested through Elementor 4.x.

== Changelog ==

= 1.5.0 =

* Adds file-based storage for uploaded My Icons SVGs, with each icon stored as an individual sanitized .svg file
* Adds a lightweight manifest index and compiled editor manifest for uploaded icon libraries
* Migrates existing 1.4.x inline My Icons manifests to the new storage layout on the next admin load
* Preserves saved spectre-user-* icon classes and legacy inline manifest fallback behavior during migration
* Resolves filename-based SVG entries in the manifest registry while keeping bundled icon slugs unchanged
* Removes individual uploaded SVG files when their matching My Icons entry is deleted

= 1.4.1 =

* Fixes manifest header discovery so library metadata does not depend on the WordPress filesystem global
* Reads only the small manifest header needed for icon library metadata instead of loading entire large manifest files during discovery
* Fixes Elementor preview config support for uploaded and external manifest_path icon libraries
* Ensures uploaded icon manifests are available before editor and frontend render calls need them
* Improves outline icon rendering by preserving inherited stroke behavior instead of forcing SVG fill or stroke values
* Adds My Icons e2e coverage for uploaded icons in the Elementor picker, editor preview, and published frontend
* Stabilizes GitHub Actions and wp-env e2e setup by pinning Elementor, activating Spectre Icons, waiting for WordPress readiness, and collecting failure logs

= 1.4.0 =

* Makes the My Icons upload library unlimited by default
* Keeps support for custom limits through the spectre_icons_user_library_limit filter
* Updates the upload page and admin JavaScript to display and enforce limits only when a numeric limit is configured

= 1.3.1 =

* Updated release metadata for the 1.3.1 maintenance release
* Preserved bundled library slugs, saved icon class prefixes, and existing icon rendering behavior

= 1.3.0 =

* Added the My Icons admin page for uploading up to 25 site-specific SVG icons
* Added the spectre-user icon library for user-uploaded icons in Elementor
* Added upload and delete controls with SVG sanitization, file-size checks, and safe manifest storage
* Kept bundled Lucide and Font Awesome libraries first in the picker before custom libraries
* Hardened custom library manifest handling with WordPress filesystem APIs
* Escaped upload delete button labels and tightened empty attribute rendering
* Added Font Awesome Elementor e2e coverage and release/version proposal tooling
* Updated compatibility metadata for WordPress 7.0 and Elementor 4.x

= 1.2.1 =

* Introduced core manifest registry and builder-agnostic SVG renderer
* Added runtime manifest auto-discovery — drop a JSON file to add a library
* Fixed icon SVG persisting in the editor after resetting or changing an icon
* Fixed Elementor editor cache invalidating on every plugin update (ver now uses manifest filemtime)
* Added automatic Elementor cache flush on first admin load after a version change
* Bundled Lucide and Font Awesome manifests are now self-describing (metadata in JSON header)

= 1.2.0 =

* Added per-library enable/disable controls with reliable Elementor v4 picker hiding
* Disabled libraries are hidden from the icon picker; existing placed icons keep rendering
* Hardened SVG sanitizer, manifest renderer, and plugin bootstrap
* Added PHPUnit and Playwright e2e test coverage
* Updated WordPress compatibility to 6.7

= 1.1.0 =

* Added SPDX license metadata and finalized bundled icon attribution
* Refined Elementor manifest rendering, integration hooks, and SVG sanitization
* Updated plugin metadata and release packaging for WordPress.org

= 1.0.0 =

* Fixed manifest loading and icon lookup for prefixed libraries
* Aligned Elementor editor config and asset enqueues
* Ensured Lucide outline icons render correctly
* Cleaned up WordPress.org ZIP packaging

== Upgrade Notice ==

= 1.5.0 =
Migrates uploaded My Icons storage to individual SVG files plus a compiled editor manifest. Existing uploaded icons and saved spectre-user-* icon classes are preserved.

= 1.4.1 =
Improves manifest discovery, uploaded icon preview/render reliability, and Elementor validation stability. Existing bundled icons, uploaded icons, and saved icon classes are preserved.

= 1.4.0 =
My Icons uploads are unlimited by default. Sites using the spectre_icons_user_library_limit filter can still enforce a custom cap.

= 1.3.1 =
Maintenance release metadata update. Existing bundled-library icons, uploaded icons, and saved icon classes are preserved.

= 1.3.0 =
Adds a My Icons upload library for site-specific SVG icons. Existing bundled-library icons and saved icon classes are preserved.

= 1.2.1 =
Fixes blank icon previews in the Elementor editor after plugin updates. Existing icons on your site are not affected.

= 1.2.0 =
Adds reliable enable/disable controls for icon libraries. Existing icons on your site are not affected.

== Icon Attributions ==

= Font Awesome Free =
Licensed under CC BY 4.0 (icons) and MIT (code).
https://fontawesome.com/license/free

= Lucide Icons =
Licensed under the ISC License.
https://lucide.dev
