=== Safesprite Icons ===
Contributors: kianbabai09
Donate link: https://profiles.wordpress.org/kianbabai09/
Tags: svg, icons, spritesheet, gutenberg, elementor
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Secure icon library with footer SVG spritesheets. Does not enable Media Library SVG uploads.

== Description ==

Safesprite Icons lets you manage brand icons in a dedicated plugin library (collections/folders), sanitize every upload, and render icons with a lightweight `<use>` reference plus a single footer spritesheet.

= Security first =

* SVG uploads are accepted **only** through the plugin Icon Library
* This plugin does **not** enable SVG uploads in the WordPress Media Library
* Uploads are sanitized with the vendored `enshrined/svg-sanitize` library (GPL-2.0-or-later), shipped inside the plugin
* Front-end output uses sanitized `<symbol>` sprites + `<use>` — not raw uploaded files as `<img src>`

= Features =

* Collections (one collection per icon)
* Rename icon titles and collection names (slugs stay stable)
* Trash / restore / permanent delete
* Shortcode: `[sfsi_icon slug="my-icon"]`
* PHP helper: `sfsi_icon( 'my-icon' )`
* Gutenberg block
* TinyMCE button
* Elementor widget (loads only when Elementor is active)
* Nav menu item icons

== Installation ==

1. Upload the `safesprite-icons` folder to `/wp-content/plugins/`
2. Activate the plugin through the Plugins menu
3. Open **Safesprite** in wp-admin, create a collection, upload SVGs
4. Insert icons via block, shortcode, TinyMCE, menus, or Elementor

== Frequently Asked Questions ==

= Does this allow SVG in the Media Library? =

No. Icons are managed only in the plugin library.

= Where are files stored? =

Sanitized SVG files live under `wp-content/uploads/safesprite-icons/` with opaque filenames. Metadata is stored in plugin custom tables (not as custom post types).

= What happens on uninstall? =

By default, data is kept. Enable “Delete all plugin data on uninstall” under Safesprite -> Settings if you want tables and files removed.

= What PHP extensions are required? =

PHP 7.4+ with the `dom` and `libxml` extensions (used by the SVG sanitizer).

== Screenshots ==

1. Collections screen — create and manage icon folders
2. Icons library — upload, search, rename, and copy shortcodes
3. Icon picker in the block editor
4. Settings — upload size limit and uninstall data option
5. Trash — restore items or permanently delete icons and collections

== Changelog ==

= 1.0.0 =
* First wordpress.org release candidate
* Secure Icon Library with sanitized uploads and footer spritesheets
* Gutenberg, Elementor, TinyMCE, Nav Menus, shortcode, and PHP helper
* Hardened SVG sanitization (no Media Library SVG enablement)

= 0.2.15 =
* Security: strip SVG `<style>` / `style=` and remote hrefs after sanitize
* Performance: skip upload-dir ensure on front requests; memoize icon lookups
* Fix: nav menu icon meta no longer wiped on unrelated saves
* Packaging: exclude list moved to docs (no `.distignore` in plugin — Plugin Check)

= 0.2.14 =
* Plugins list: Settings action link to Safesprite -> Settings

= 0.2.13 =
* Rename icon titles and collection names (slugs unchanged)
* Icon picker: search by title or slug
* Nav menus: icon preview and Clear control

= 0.2.12 =
* Gutenberg editor: size and color preview match Elementor (no fixed admin tile CSS)

= 0.2.11 =
* Elementor canvas: fix size slider and custom color live preview

= 0.2.10 =
* Elementor editor: show inline icon preview (canvas has no footer spritesheet)

= 0.2.9 =
* Elementor & Gutenberg: visual icon picker, size slider (16–256px), inherit or custom color

= 0.2.8 =
* Trash: bulk select, restore, and permanently delete icons and collections

= 0.1.0 =
* Initial release candidate build

== Upgrade Notice ==

= 1.0.0 =
First public release. Install and manage icons from Safesprite in wp-admin. Does not enable Media Library SVG uploads.
