From 8e25f760fa32ff0a81daa0a0060b9b49088db8e1 Mon Sep 17 00:00:00 2001 From: krugazul Date: Mon, 7 Sep 2026 10:18:16 +0200 Subject: [PATCH 1/5] feat(icons): register LightSpeed SVG icon collection for block editor --- assets/icons/lightspeed/.gitkeep | 0 inc/class-ls-plugin-icons.php | 120 +++++++++++++++++++++++++++++++ ls-plugin.php | 4 ++ 3 files changed, 124 insertions(+) create mode 100644 assets/icons/lightspeed/.gitkeep create mode 100644 inc/class-ls-plugin-icons.php diff --git a/assets/icons/lightspeed/.gitkeep b/assets/icons/lightspeed/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/inc/class-ls-plugin-icons.php b/inc/class-ls-plugin-icons.php new file mode 100644 index 0000000..b327889 --- /dev/null +++ b/inc/class-ls-plugin-icons.php @@ -0,0 +1,120 @@ +icons_dir = LS_PLUGIN_PLUGIN_DIR . 'assets/icons/lightspeed/'; + + add_action( 'init', array( $this, 'register_icon_collection' ) ); + } + + /** + * Register the LightSpeed icon collection and its icons. + * + * Bails silently on WordPress versions before 7.1, where the icon API + * does not exist yet. + */ + public function register_icon_collection() { + if ( ! function_exists( 'wp_register_icon_collection' ) || ! function_exists( 'wp_register_icon' ) ) { + return; + } + + wp_register_icon_collection( + self::COLLECTION, + array( + 'label' => __( 'LightSpeed', 'ls-plugin' ), + 'description' => __( 'Icons provided by the LightSpeed Site Plugin.', 'ls-plugin' ), + ) + ); + + foreach ( $this->get_icon_files() as $name => $file_path ) { + wp_register_icon( + self::COLLECTION . '/' . $name, + array( + 'label' => $this->get_icon_label( $name ), + 'file_path' => $file_path, + ) + ); + } + } + + /** + * Find the SVG files to register, keyed by sanitized icon name. + * + * @return array Icon name => absolute file path. + */ + private function get_icon_files() { + if ( ! is_dir( $this->icons_dir ) ) { + return array(); + } + + $files = glob( $this->icons_dir . '*.svg' ); + + if ( empty( $files ) ) { + return array(); + } + + $icons = array(); + + foreach ( $files as $file_path ) { + $name = sanitize_title( basename( $file_path, '.svg' ) ); + + if ( '' !== $name ) { + $icons[ $name ] = $file_path; + } + } + + return $icons; + } + + /** + * Build a human-readable label from an icon's file name. + * + * @param string $name Sanitized icon name, e.g. "arrow-right". + * @return string Label, e.g. "Arrow Right". + */ + private function get_icon_label( $name ) { + return ucwords( str_replace( '-', ' ', $name ) ); + } +} diff --git a/ls-plugin.php b/ls-plugin.php index 9faaa2e..631afa3 100644 --- a/ls-plugin.php +++ b/ls-plugin.php @@ -55,6 +55,7 @@ function ls_plugin_init() { require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-permalinks.php'; require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-portfolio-terms.php'; require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-ls-plugin-nav-ref-resolver.php'; + require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-ls-plugin-icons.php'; // 3rd Party require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-ai-engine.php'; @@ -80,6 +81,9 @@ function ls_plugin_init() { // Auto-resolve the header navigation block's ref at render time. new LS_Plugin_Nav_Ref_Resolver(); + + // Register the LightSpeed SVG icon collection (WordPress 7.1+). + new LS_Plugin_Icons(); } add_action( 'plugins_loaded', 'ls_plugin_init' ); From 1000b9f010c82e4c8305589918e78d275b5773ad Mon Sep 17 00:00:00 2001 From: krugazul Date: Mon, 7 Sep 2026 10:25:23 +0200 Subject: [PATCH 2/5] feat(icons): refactor icon registration and update class names for consistency feat(nav-ref-resolver): implement navigation reference auto-resolver refactor: update class names to remove LS_Plugin_ prefix and adjust namespaces chore: reorganize file structure and remove deprecated classes --- .github/instructions/php.instructions.md | 2 +- AGENTS.md | 2 +- assets/swiper/README.md | 2 +- docs/carousel-block.md | 2 +- inc/class-carousel.php | 6 +++-- ...ss-ls-plugin-icons.php => class-icons.php} | 6 +++-- ...esolver.php => class-nav-ref-resolver.php} | 6 +++-- inc/class-portfolio-terms.php | 6 +++-- inc/class-scf-json-validator.php | 10 ++++---- inc/class-scf-json.php | 4 +++- inc/class-search-filter.php | 12 ++++++---- inc/class-style-switcher.php | 12 ++++++---- inc/class-taxonomy-filter.php | 16 +++++++++---- ls-plugin.php | 24 +++++++++---------- 14 files changed, 66 insertions(+), 44 deletions(-) rename inc/{class-ls-plugin-icons.php => class-icons.php} (98%) rename inc/{class-ls-plugin-nav-ref-resolver.php => class-nav-ref-resolver.php} (97%) diff --git a/.github/instructions/php.instructions.md b/.github/instructions/php.instructions.md index e7e61ea..a37e5b0 100644 --- a/.github/instructions/php.instructions.md +++ b/.github/instructions/php.instructions.md @@ -57,5 +57,5 @@ esc_attr__( 'String', 'ls-plugin' ) ## File structure - PHP includes go in `inc/`. -- Class files: `inc/class-ls-plugin-name.php`. +- Class files: `inc/class-name.php`, declaring `namespace LS_Plugin;` and a class named without an `LS_Plugin_` prefix (e.g. `inc/class-permalinks.php` declares `LS_Plugin\Permalinks`). - Load includes from the main plugin file via `plugins_loaded`. diff --git a/AGENTS.md b/AGENTS.md index 7a18d5b..43a6012 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -80,7 +80,7 @@ Responsibilities: - Load includes from `ls_plugin_init()` via `plugins_loaded`. - Use WordPress coding standards (tabs for indentation in PHP). - Do not add a PHP autoloader unless genuinely needed. -- Class files go in `inc/` — name them `class-ls-plugin-name.php`. +- Class files go in `inc/` — name them `class-name.php`, declare `namespace LS_Plugin;`, and name the class without an `LS_Plugin_` prefix (e.g. `inc/class-permalinks.php` declares `LS_Plugin\Permalinks`). ### Escaping output (required) diff --git a/assets/swiper/README.md b/assets/swiper/README.md index f694af9..23a21b0 100644 --- a/assets/swiper/README.md +++ b/assets/swiper/README.md @@ -11,7 +11,7 @@ Website: https://swiperjs.com/ ## Usage -These files are automatically enqueued by the `LS_Plugin_Carousel` class when the carousel block is present on a page. +These files are automatically enqueued by the `LS_Plugin\Carousel` class when the carousel block is present on a page. ## Updates diff --git a/docs/carousel-block.md b/docs/carousel-block.md index fbbe3bb..e76c0a9 100644 --- a/docs/carousel-block.md +++ b/docs/carousel-block.md @@ -55,7 +55,7 @@ Individual slides within the carousel. Can only be added inside a Carousel block ## Technical Details -**PHP Class:** `LS_Plugin_Carousel` ([inc/class-carousel.php](inc/class-carousel.php)) +**PHP Class:** `LS_Plugin\Carousel` ([inc/class-carousel.php](inc/class-carousel.php)) **Source Files:** - [src/blocks/carousel/](src/blocks/carousel/) - [src/blocks/carousel-slide/](src/blocks/carousel-slide/) diff --git a/inc/class-carousel.php b/inc/class-carousel.php index 7912d56..4b742a8 100644 --- a/inc/class-carousel.php +++ b/inc/class-carousel.php @@ -7,17 +7,19 @@ * @package LS_Plugin */ +namespace LS_Plugin; + // Prevent direct access. if ( ! defined( 'ABSPATH' ) ) { exit; } /** - * Class LS_Plugin_Carousel + * Class Carousel * * Handles registration and asset enqueuing for the Carousel blocks. */ -class LS_Plugin_Carousel { +class Carousel { /** * Track if carousel block has been rendered. diff --git a/inc/class-ls-plugin-icons.php b/inc/class-icons.php similarity index 98% rename from inc/class-ls-plugin-icons.php rename to inc/class-icons.php index b327889..f30004c 100644 --- a/inc/class-ls-plugin-icons.php +++ b/inc/class-icons.php @@ -13,18 +13,20 @@ * @since 0.3.0 */ +namespace LS_Plugin; + if ( ! defined( 'ABSPATH' ) ) { exit; } /** - * Class LS_Plugin_Icons + * Class Icons * * Registers the LightSpeed icon collection and its icons on `init`. * * @since 0.3.0 */ -class LS_Plugin_Icons { +class Icons { /** * Icon collection slug. diff --git a/inc/class-ls-plugin-nav-ref-resolver.php b/inc/class-nav-ref-resolver.php similarity index 97% rename from inc/class-ls-plugin-nav-ref-resolver.php rename to inc/class-nav-ref-resolver.php index dd97686..70ecff2 100644 --- a/inc/class-ls-plugin-nav-ref-resolver.php +++ b/inc/class-nav-ref-resolver.php @@ -14,12 +14,14 @@ * @since 0.2.0 */ +namespace LS_Plugin; + if ( ! defined( 'ABSPATH' ) ) { exit; } /** - * Class LS_Plugin_Nav_Ref_Resolver + * Class Nav_Ref_Resolver * * Scoped to the header navigation location only for Phase 1 — there is * currently only one active `core/navigation` block in the theme. Additional @@ -28,7 +30,7 @@ * * @since 0.2.0 */ -class LS_Plugin_Nav_Ref_Resolver { +class Nav_Ref_Resolver { /** * Default conventional slug for the header `wp_navigation` post. diff --git a/inc/class-portfolio-terms.php b/inc/class-portfolio-terms.php index 56296a1..8843d3c 100644 --- a/inc/class-portfolio-terms.php +++ b/inc/class-portfolio-terms.php @@ -10,18 +10,20 @@ * @since 0.2.0 */ +namespace LS_Plugin; + if ( ! defined( 'ABSPATH' ) ) { exit; } /** - * Class LS_Plugin_Portfolio_Terms + * Class Portfolio_Terms * * Idempotently creates default terms for the Portfolio taxonomies. * * @since 0.2.0 */ -class LS_Plugin_Portfolio_Terms { +class Portfolio_Terms { /** * Bump this whenever the default term list below changes, so the diff --git a/inc/class-scf-json-validator.php b/inc/class-scf-json-validator.php index 16be087..368dd56 100644 --- a/inc/class-scf-json-validator.php +++ b/inc/class-scf-json-validator.php @@ -6,6 +6,8 @@ * @since 1.0.0 */ +namespace LS_Plugin; + if ( ! defined( 'ABSPATH' ) ) { exit; } @@ -15,7 +17,7 @@ * * @since 1.0.0 */ -class LS_Plugin_SCF_JSON_Validator { +class SCF_JSON_Validator { /** * Path to JSON schema file. @@ -34,7 +36,7 @@ class LS_Plugin_SCF_JSON_Validator { /** * SCF JSON handler instance. * - * @var LS_Plugin_SCF_JSON + * @var SCF_JSON */ private $scf_json; @@ -79,8 +81,8 @@ class LS_Plugin_SCF_JSON_Validator { public function __construct() { $this->schema_path = LS_PLUGIN_PLUGIN_DIR . '.github/schemas/scf-field-group.schema.json'; - if ( class_exists( 'LS_Plugin_SCF_JSON' ) ) { - $this->scf_json = new LS_Plugin_SCF_JSON(); + if ( class_exists( __NAMESPACE__ . '\SCF_JSON' ) ) { + $this->scf_json = new SCF_JSON(); } $this->load_schema(); diff --git a/inc/class-scf-json.php b/inc/class-scf-json.php index 702bda7..8f8528e 100644 --- a/inc/class-scf-json.php +++ b/inc/class-scf-json.php @@ -6,6 +6,8 @@ * @since 1.0.0 */ +namespace LS_Plugin; + if ( ! defined( 'ABSPATH' ) ) { exit; } @@ -15,7 +17,7 @@ * * @since 1.0.0 */ -class LS_Plugin_SCF_JSON { +class SCF_JSON { /** * Local JSON directory path. diff --git a/inc/class-search-filter.php b/inc/class-search-filter.php index 7071ce6..1487d19 100644 --- a/inc/class-search-filter.php +++ b/inc/class-search-filter.php @@ -5,6 +5,8 @@ * @package LS_Plugin */ +namespace LS_Plugin; + // Prevent direct access. if ( ! defined( 'ABSPATH' ) ) { exit; @@ -13,7 +15,7 @@ /** * Handles the Search Filter block registration and Query Loop filtering. */ -class LS_Plugin_Search_Filter { +class Search_Filter { /** * Registers all WordPress hooks. @@ -67,11 +69,11 @@ public function register_block() { /** * Filters the inherited main query using the block request parameter. * - * @param WP_Query $query Query object. + * @param \WP_Query $query Query object. * @return void */ public function filter_main_query( $query ) { - if ( ! $query instanceof WP_Query || ! $query->is_main_query() ) { + if ( ! $query instanceof \WP_Query || ! $query->is_main_query() ) { return; } @@ -94,8 +96,8 @@ public function filter_main_query( $query ) { /** * Filters non-inherited Query Loop block queries using the block request parameter. * - * @param array $query Query vars. - * @param WP_Block $block Block instance. + * @param array $query Query vars. + * @param \WP_Block $block Block instance. * @param int $page Current page. * @return array */ diff --git a/inc/class-style-switcher.php b/inc/class-style-switcher.php index 5df6fa1..9026865 100644 --- a/inc/class-style-switcher.php +++ b/inc/class-style-switcher.php @@ -18,6 +18,8 @@ * @since 1.0.0 */ +namespace LS_Plugin; + // Prevent direct access. if ( ! defined( 'ABSPATH' ) ) { exit; @@ -28,7 +30,7 @@ * * @since 1.0.0 */ -class LS_Plugin_Style_Switcher { +class Style_Switcher { /** * Registers all WordPress hooks. @@ -57,7 +59,7 @@ public function register_block() { if ( file_exists( $block_path . '/block.json' ) ) { $block_type = register_block_type( $block_path ); - if ( $block_type instanceof WP_Block_Type ) { + if ( $block_type instanceof \WP_Block_Type ) { $this->localize_block_editor_data( $block_type ); } } @@ -68,7 +70,7 @@ public function register_block() { * * @since 1.0.0 * - * @param WP_Block_Type $block_type Registered block type object. + * @param \WP_Block_Type $block_type Registered block type object. * @return void */ private function localize_block_editor_data( $block_type ) { @@ -285,8 +287,8 @@ public function get_style_preference() { * * @since 1.0.0 * - * @param WP_Theme_JSON_Data $theme_json Theme JSON data object. - * @return WP_Theme_JSON_Data Modified theme JSON data object. + * @param \WP_Theme_JSON_Data $theme_json Theme JSON data object. + * @return \WP_Theme_JSON_Data Modified theme JSON data object. */ public function merge_dark_mode_theme_json( $theme_json ) { if ( 'dark' !== $this->get_style_preference() ) { diff --git a/inc/class-taxonomy-filter.php b/inc/class-taxonomy-filter.php index 2fbb645..0ce2faa 100644 --- a/inc/class-taxonomy-filter.php +++ b/inc/class-taxonomy-filter.php @@ -7,12 +7,18 @@ * @package LS_Plugin */ +namespace LS_Plugin; + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + /** - * Class LS_Plugin_Taxonomy_Filter + * Class Taxonomy_Filter * * Handles registration and query filtering for the Taxonomy Filter block. */ -class LS_Plugin_Taxonomy_Filter { +class Taxonomy_Filter { /** * Constructor. @@ -51,7 +57,7 @@ public function register_block() { /** * Filter the main query based on taxonomy filter parameters. * - * @param WP_Query $query The WP_Query instance. + * @param \WP_Query $query The WP_Query instance. */ public function filter_main_query( $query ) { if ( is_admin() || ! $query->is_main_query() ) { @@ -87,8 +93,8 @@ public function filter_main_query( $query ) { /** * Filter secondary queries (Query Loop blocks) based on taxonomy filter parameters. * - * @param array $query Query vars. - * @param WP_Block $block Block instance. + * @param array $query Query vars. + * @param \WP_Block $block Block instance. * @param int $page Current page number. * @return array Modified query vars. */ diff --git a/ls-plugin.php b/ls-plugin.php index 631afa3..309d4f8 100644 --- a/ls-plugin.php +++ b/ls-plugin.php @@ -54,49 +54,49 @@ function ls_plugin_init() { require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-scf-json-validator.php'; require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-permalinks.php'; require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-portfolio-terms.php'; - require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-ls-plugin-nav-ref-resolver.php'; - require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-ls-plugin-icons.php'; + require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-nav-ref-resolver.php'; + require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-icons.php'; // 3rd Party require_once LS_PLUGIN_PLUGIN_DIR . 'inc/class-ai-engine.php'; - $search_filter = new LS_Plugin_Search_Filter(); + $search_filter = new LS_Plugin\Search_Filter(); $search_filter->register_hooks(); - new LS_Plugin_Taxonomy_Filter(); + new LS_Plugin\Taxonomy_Filter(); - $style_switcher = new LS_Plugin_Style_Switcher(); + $style_switcher = new LS_Plugin\Style_Switcher(); $style_switcher->register_hooks(); - new LS_Plugin_Carousel(); + new LS_Plugin\Carousel(); // Configure SCF to use plugin-managed Local JSON paths. - new LS_Plugin_SCF_JSON(); + new LS_Plugin\SCF_JSON(); // Manage custom permalinks for SCF post types and taxonomies. new LS_Plugin\Permalinks(); // Seed default Portfolio taxonomy terms. - new LS_Plugin_Portfolio_Terms(); + new LS_Plugin\Portfolio_Terms(); // Auto-resolve the header navigation block's ref at render time. - new LS_Plugin_Nav_Ref_Resolver(); + new LS_Plugin\Nav_Ref_Resolver(); // Register the LightSpeed SVG icon collection (WordPress 7.1+). - new LS_Plugin_Icons(); + new LS_Plugin\Icons(); } add_action( 'plugins_loaded', 'ls_plugin_init' ); /** * Returns a shared SCF JSON validator instance. * - * @return LS_Plugin_SCF_JSON_Validator + * @return LS_Plugin\SCF_JSON_Validator */ function ls_plugin_get_scf_json_validator() { static $validator = null; if ( null === $validator ) { - $validator = new LS_Plugin_SCF_JSON_Validator(); + $validator = new LS_Plugin\SCF_JSON_Validator(); } return $validator; From f165863dbbb73d8293f81db61435992bc01f68bc Mon Sep 17 00:00:00 2001 From: krugazul Date: Mon, 7 Sep 2026 12:50:32 +0200 Subject: [PATCH 3/5] Add new SVG icons for various functionalities - Added share-alt.svg for alternative sharing functionality. - Added share.svg for standard sharing functionality. - Added shield.svg for security representation. - Added sort.svg for sorting options. - Added special-interests.svg for categorizing interests. - Added star-fill.svg for filled star representation. - Added star.svg for outlined star representation. - Added tag.svg for tagging functionality. - Added theme-moon.svg for dark mode representation. - Added theme-sun.svg for light mode representation. - Added thumbs-up.svg for positive feedback. - Added tiktok.svg for TikTok representation. - Added transport.svg for transportation options. - Added trending-up.svg for trending indicators. - Added trophy.svg for achievements. - Added truck.svg for delivery representation. - Added twitter-x.svg for Twitter integration. - Added upload.svg for upload functionality. - Added user-plus.svg for adding new users. - Added user.svg for user representation. - Added users.svg for multiple users representation. - Added video.svg for video content. - Added warning.svg for alerts and warnings. - Added whatsapp.svg for WhatsApp integration. - Added youtube.svg for YouTube representation. --- assets/icons/lightspeed/.gitkeep | 0 assets/icons/lightspeed/README.md | 29 +++++++++++++++++++ assets/icons/lightspeed/accommodation.svg | 1 + assets/icons/lightspeed/arrow-down.svg | 1 + assets/icons/lightspeed/arrow-left.svg | 1 + assets/icons/lightspeed/arrow-right.svg | 1 + assets/icons/lightspeed/arrow-up.svg | 1 + assets/icons/lightspeed/audio.svg | 1 + assets/icons/lightspeed/book.svg | 1 + assets/icons/lightspeed/booking-validity.svg | 1 + assets/icons/lightspeed/bookmark.svg | 1 + assets/icons/lightspeed/calendar.svg | 1 + assets/icons/lightspeed/camera.svg | 1 + assets/icons/lightspeed/cart.svg | 1 + assets/icons/lightspeed/category.svg | 1 + assets/icons/lightspeed/chat.svg | 1 + assets/icons/lightspeed/check-circle.svg | 1 + assets/icons/lightspeed/check-in.svg | 1 + assets/icons/lightspeed/check-out.svg | 1 + assets/icons/lightspeed/check.svg | 1 + assets/icons/lightspeed/chevron-down.svg | 1 + assets/icons/lightspeed/chevron-left.svg | 1 + assets/icons/lightspeed/chevron-right.svg | 1 + assets/icons/lightspeed/chevron-up.svg | 1 + assets/icons/lightspeed/clock.svg | 1 + assets/icons/lightspeed/close.svg | 1 + assets/icons/lightspeed/comments.svg | 1 + assets/icons/lightspeed/cookie.svg | 1 + assets/icons/lightspeed/copy.svg | 1 + assets/icons/lightspeed/credit-card.svg | 1 + assets/icons/lightspeed/departs-from.svg | 1 + assets/icons/lightspeed/destination.svg | 1 + assets/icons/lightspeed/download.svg | 1 + assets/icons/lightspeed/duration.svg | 1 + assets/icons/lightspeed/email.svg | 1 + assets/icons/lightspeed/ends-in.svg | 1 + assets/icons/lightspeed/external-link.svg | 1 + assets/icons/lightspeed/eye.svg | 1 + assets/icons/lightspeed/facebook.svg | 1 + assets/icons/lightspeed/filter.svg | 1 + assets/icons/lightspeed/flower.svg | 1 + assets/icons/lightspeed/gallery.svg | 1 + assets/icons/lightspeed/gift.svg | 1 + assets/icons/lightspeed/globe.svg | 1 + assets/icons/lightspeed/group-size.svg | 1 + assets/icons/lightspeed/heart.svg | 1 + assets/icons/lightspeed/help.svg | 1 + assets/icons/lightspeed/info.svg | 1 + assets/icons/lightspeed/instagram.svg | 1 + assets/icons/lightspeed/languages.svg | 1 + assets/icons/lightspeed/linkedin.svg | 1 + assets/icons/lightspeed/location.svg | 1 + assets/icons/lightspeed/lock.svg | 1 + assets/icons/lightspeed/login.svg | 1 + assets/icons/lightspeed/menu-close.svg | 1 + assets/icons/lightspeed/menu.svg | 1 + assets/icons/lightspeed/minus.svg | 1 + assets/icons/lightspeed/monitor.svg | 1 + assets/icons/lightspeed/newsletter.svg | 1 + assets/icons/lightspeed/newspaper.svg | 1 + assets/icons/lightspeed/phone.svg | 1 + assets/icons/lightspeed/pinterest.svg | 1 + assets/icons/lightspeed/play.svg | 1 + assets/icons/lightspeed/plus.svg | 1 + assets/icons/lightspeed/price.svg | 1 + assets/icons/lightspeed/printer.svg | 1 + assets/icons/lightspeed/quote.svg | 1 + assets/icons/lightspeed/scroll-down.svg | 1 + assets/icons/lightspeed/search.svg | 1 + assets/icons/lightspeed/settings.svg | 1 + assets/icons/lightspeed/share-alt.svg | 1 + assets/icons/lightspeed/share.svg | 1 + assets/icons/lightspeed/shield.svg | 1 + assets/icons/lightspeed/sort.svg | 1 + assets/icons/lightspeed/special-interests.svg | 1 + assets/icons/lightspeed/star-fill.svg | 1 + assets/icons/lightspeed/star.svg | 1 + assets/icons/lightspeed/tag.svg | 1 + assets/icons/lightspeed/theme-moon.svg | 1 + assets/icons/lightspeed/theme-sun.svg | 1 + assets/icons/lightspeed/thumbs-up.svg | 1 + assets/icons/lightspeed/tiktok.svg | 1 + assets/icons/lightspeed/transport.svg | 1 + assets/icons/lightspeed/trending-up.svg | 1 + assets/icons/lightspeed/trophy.svg | 1 + assets/icons/lightspeed/truck.svg | 1 + assets/icons/lightspeed/twitter-x.svg | 1 + assets/icons/lightspeed/upload.svg | 1 + assets/icons/lightspeed/user-plus.svg | 1 + assets/icons/lightspeed/user.svg | 1 + assets/icons/lightspeed/users.svg | 1 + assets/icons/lightspeed/video.svg | 1 + assets/icons/lightspeed/warning.svg | 1 + assets/icons/lightspeed/whatsapp.svg | 1 + assets/icons/lightspeed/youtube.svg | 1 + 95 files changed, 122 insertions(+) delete mode 100644 assets/icons/lightspeed/.gitkeep create mode 100644 assets/icons/lightspeed/README.md create mode 100644 assets/icons/lightspeed/accommodation.svg create mode 100644 assets/icons/lightspeed/arrow-down.svg create mode 100644 assets/icons/lightspeed/arrow-left.svg create mode 100644 assets/icons/lightspeed/arrow-right.svg create mode 100644 assets/icons/lightspeed/arrow-up.svg create mode 100644 assets/icons/lightspeed/audio.svg create mode 100644 assets/icons/lightspeed/book.svg create mode 100644 assets/icons/lightspeed/booking-validity.svg create mode 100644 assets/icons/lightspeed/bookmark.svg create mode 100644 assets/icons/lightspeed/calendar.svg create mode 100644 assets/icons/lightspeed/camera.svg create mode 100644 assets/icons/lightspeed/cart.svg create mode 100644 assets/icons/lightspeed/category.svg create mode 100644 assets/icons/lightspeed/chat.svg create mode 100644 assets/icons/lightspeed/check-circle.svg create mode 100644 assets/icons/lightspeed/check-in.svg create mode 100644 assets/icons/lightspeed/check-out.svg create mode 100644 assets/icons/lightspeed/check.svg create mode 100644 assets/icons/lightspeed/chevron-down.svg create mode 100644 assets/icons/lightspeed/chevron-left.svg create mode 100644 assets/icons/lightspeed/chevron-right.svg create mode 100644 assets/icons/lightspeed/chevron-up.svg create mode 100644 assets/icons/lightspeed/clock.svg create mode 100644 assets/icons/lightspeed/close.svg create mode 100644 assets/icons/lightspeed/comments.svg create mode 100644 assets/icons/lightspeed/cookie.svg create mode 100644 assets/icons/lightspeed/copy.svg create mode 100644 assets/icons/lightspeed/credit-card.svg create mode 100644 assets/icons/lightspeed/departs-from.svg create mode 100644 assets/icons/lightspeed/destination.svg create mode 100644 assets/icons/lightspeed/download.svg create mode 100644 assets/icons/lightspeed/duration.svg create mode 100644 assets/icons/lightspeed/email.svg create mode 100644 assets/icons/lightspeed/ends-in.svg create mode 100644 assets/icons/lightspeed/external-link.svg create mode 100644 assets/icons/lightspeed/eye.svg create mode 100644 assets/icons/lightspeed/facebook.svg create mode 100644 assets/icons/lightspeed/filter.svg create mode 100644 assets/icons/lightspeed/flower.svg create mode 100644 assets/icons/lightspeed/gallery.svg create mode 100644 assets/icons/lightspeed/gift.svg create mode 100644 assets/icons/lightspeed/globe.svg create mode 100644 assets/icons/lightspeed/group-size.svg create mode 100644 assets/icons/lightspeed/heart.svg create mode 100644 assets/icons/lightspeed/help.svg create mode 100644 assets/icons/lightspeed/info.svg create mode 100644 assets/icons/lightspeed/instagram.svg create mode 100644 assets/icons/lightspeed/languages.svg create mode 100644 assets/icons/lightspeed/linkedin.svg create mode 100644 assets/icons/lightspeed/location.svg create mode 100644 assets/icons/lightspeed/lock.svg create mode 100644 assets/icons/lightspeed/login.svg create mode 100644 assets/icons/lightspeed/menu-close.svg create mode 100644 assets/icons/lightspeed/menu.svg create mode 100644 assets/icons/lightspeed/minus.svg create mode 100644 assets/icons/lightspeed/monitor.svg create mode 100644 assets/icons/lightspeed/newsletter.svg create mode 100644 assets/icons/lightspeed/newspaper.svg create mode 100644 assets/icons/lightspeed/phone.svg create mode 100644 assets/icons/lightspeed/pinterest.svg create mode 100644 assets/icons/lightspeed/play.svg create mode 100644 assets/icons/lightspeed/plus.svg create mode 100644 assets/icons/lightspeed/price.svg create mode 100644 assets/icons/lightspeed/printer.svg create mode 100644 assets/icons/lightspeed/quote.svg create mode 100644 assets/icons/lightspeed/scroll-down.svg create mode 100644 assets/icons/lightspeed/search.svg create mode 100644 assets/icons/lightspeed/settings.svg create mode 100644 assets/icons/lightspeed/share-alt.svg create mode 100644 assets/icons/lightspeed/share.svg create mode 100644 assets/icons/lightspeed/shield.svg create mode 100644 assets/icons/lightspeed/sort.svg create mode 100644 assets/icons/lightspeed/special-interests.svg create mode 100644 assets/icons/lightspeed/star-fill.svg create mode 100644 assets/icons/lightspeed/star.svg create mode 100644 assets/icons/lightspeed/tag.svg create mode 100644 assets/icons/lightspeed/theme-moon.svg create mode 100644 assets/icons/lightspeed/theme-sun.svg create mode 100644 assets/icons/lightspeed/thumbs-up.svg create mode 100644 assets/icons/lightspeed/tiktok.svg create mode 100644 assets/icons/lightspeed/transport.svg create mode 100644 assets/icons/lightspeed/trending-up.svg create mode 100644 assets/icons/lightspeed/trophy.svg create mode 100644 assets/icons/lightspeed/truck.svg create mode 100644 assets/icons/lightspeed/twitter-x.svg create mode 100644 assets/icons/lightspeed/upload.svg create mode 100644 assets/icons/lightspeed/user-plus.svg create mode 100644 assets/icons/lightspeed/user.svg create mode 100644 assets/icons/lightspeed/users.svg create mode 100644 assets/icons/lightspeed/video.svg create mode 100644 assets/icons/lightspeed/warning.svg create mode 100644 assets/icons/lightspeed/whatsapp.svg create mode 100644 assets/icons/lightspeed/youtube.svg diff --git a/assets/icons/lightspeed/.gitkeep b/assets/icons/lightspeed/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/assets/icons/lightspeed/README.md b/assets/icons/lightspeed/README.md new file mode 100644 index 0000000..15477a6 --- /dev/null +++ b/assets/icons/lightspeed/README.md @@ -0,0 +1,29 @@ +# LightSpeed Icon Collection + +SVG source files for the `lightspeed` WordPress 7.1 icon collection, registered by +[`inc/class-icons.php`](../../../inc/class-icons.php) (`LS_Plugin\Icons`). Every `.svg` +file in this directory is auto-registered on `init` as `lightspeed/{filename}`, so +adding, renaming, or removing a file here changes what's available in the block +editor's icon picker and to `wp_get_icon( 'lightspeed/{name}' )` — no PHP changes needed. + +## Source + +Icons are drawn from [Phosphor Icons](https://phosphoricons.com/) +([github.com/phosphor-icons/core](https://github.com/phosphor-icons/core)), MIT licensed, +copyright (c) Phosphor Icons. + +Each file has been reduced to a single `` +— the `regular` (or `fill`, for `star-fill.svg`) weight, with `fill="currentColor"` moved +from the `` root onto the ``. This matches the WordPress 7.1 icon sanitizer, +which only allows `fill` on ``/`` elements, not on `` — putting it on +the outer element would otherwise be stripped, leaving the icon defaulting to solid black +instead of following the surrounding text color. + +## Adding more icons + +1. Pick an icon from [phosphoricons.com](https://phosphoricons.com/), preferably the + `regular` weight — Phosphor's fill-based paths pass the WordPress sanitizer cleanly, + unlike stroke-based icon sets. +2. Save it here as `{icon-name}.svg`, with `fill="currentColor"` on the `` + (not the `` root). +3. That's it — `LS_Plugin\Icons` picks it up automatically on the next request. diff --git a/assets/icons/lightspeed/accommodation.svg b/assets/icons/lightspeed/accommodation.svg new file mode 100644 index 0000000..53dc6b3 --- /dev/null +++ b/assets/icons/lightspeed/accommodation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/arrow-down.svg b/assets/icons/lightspeed/arrow-down.svg new file mode 100644 index 0000000..acf1c7b --- /dev/null +++ b/assets/icons/lightspeed/arrow-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/arrow-left.svg b/assets/icons/lightspeed/arrow-left.svg new file mode 100644 index 0000000..7917c8e --- /dev/null +++ b/assets/icons/lightspeed/arrow-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/arrow-right.svg b/assets/icons/lightspeed/arrow-right.svg new file mode 100644 index 0000000..f3c2188 --- /dev/null +++ b/assets/icons/lightspeed/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/arrow-up.svg b/assets/icons/lightspeed/arrow-up.svg new file mode 100644 index 0000000..deeaa06 --- /dev/null +++ b/assets/icons/lightspeed/arrow-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/audio.svg b/assets/icons/lightspeed/audio.svg new file mode 100644 index 0000000..cf9b7a5 --- /dev/null +++ b/assets/icons/lightspeed/audio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/book.svg b/assets/icons/lightspeed/book.svg new file mode 100644 index 0000000..6f39e17 --- /dev/null +++ b/assets/icons/lightspeed/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/booking-validity.svg b/assets/icons/lightspeed/booking-validity.svg new file mode 100644 index 0000000..c59982a --- /dev/null +++ b/assets/icons/lightspeed/booking-validity.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/bookmark.svg b/assets/icons/lightspeed/bookmark.svg new file mode 100644 index 0000000..0d22c2b --- /dev/null +++ b/assets/icons/lightspeed/bookmark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/calendar.svg b/assets/icons/lightspeed/calendar.svg new file mode 100644 index 0000000..0dad2c0 --- /dev/null +++ b/assets/icons/lightspeed/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/camera.svg b/assets/icons/lightspeed/camera.svg new file mode 100644 index 0000000..dadc342 --- /dev/null +++ b/assets/icons/lightspeed/camera.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/cart.svg b/assets/icons/lightspeed/cart.svg new file mode 100644 index 0000000..1905e56 --- /dev/null +++ b/assets/icons/lightspeed/cart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/category.svg b/assets/icons/lightspeed/category.svg new file mode 100644 index 0000000..7fade70 --- /dev/null +++ b/assets/icons/lightspeed/category.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/chat.svg b/assets/icons/lightspeed/chat.svg new file mode 100644 index 0000000..0317398 --- /dev/null +++ b/assets/icons/lightspeed/chat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/check-circle.svg b/assets/icons/lightspeed/check-circle.svg new file mode 100644 index 0000000..9e6a9f6 --- /dev/null +++ b/assets/icons/lightspeed/check-circle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/check-in.svg b/assets/icons/lightspeed/check-in.svg new file mode 100644 index 0000000..9525bdc --- /dev/null +++ b/assets/icons/lightspeed/check-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/check-out.svg b/assets/icons/lightspeed/check-out.svg new file mode 100644 index 0000000..78569ba --- /dev/null +++ b/assets/icons/lightspeed/check-out.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/check.svg b/assets/icons/lightspeed/check.svg new file mode 100644 index 0000000..5063443 --- /dev/null +++ b/assets/icons/lightspeed/check.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/chevron-down.svg b/assets/icons/lightspeed/chevron-down.svg new file mode 100644 index 0000000..758bb7c --- /dev/null +++ b/assets/icons/lightspeed/chevron-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/chevron-left.svg b/assets/icons/lightspeed/chevron-left.svg new file mode 100644 index 0000000..ede5639 --- /dev/null +++ b/assets/icons/lightspeed/chevron-left.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/chevron-right.svg b/assets/icons/lightspeed/chevron-right.svg new file mode 100644 index 0000000..709e8e6 --- /dev/null +++ b/assets/icons/lightspeed/chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/chevron-up.svg b/assets/icons/lightspeed/chevron-up.svg new file mode 100644 index 0000000..95fbcce --- /dev/null +++ b/assets/icons/lightspeed/chevron-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/clock.svg b/assets/icons/lightspeed/clock.svg new file mode 100644 index 0000000..7ff1dce --- /dev/null +++ b/assets/icons/lightspeed/clock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/close.svg b/assets/icons/lightspeed/close.svg new file mode 100644 index 0000000..30ce91e --- /dev/null +++ b/assets/icons/lightspeed/close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/comments.svg b/assets/icons/lightspeed/comments.svg new file mode 100644 index 0000000..bb778e2 --- /dev/null +++ b/assets/icons/lightspeed/comments.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/cookie.svg b/assets/icons/lightspeed/cookie.svg new file mode 100644 index 0000000..729c100 --- /dev/null +++ b/assets/icons/lightspeed/cookie.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/copy.svg b/assets/icons/lightspeed/copy.svg new file mode 100644 index 0000000..92eae93 --- /dev/null +++ b/assets/icons/lightspeed/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/credit-card.svg b/assets/icons/lightspeed/credit-card.svg new file mode 100644 index 0000000..03471d9 --- /dev/null +++ b/assets/icons/lightspeed/credit-card.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/departs-from.svg b/assets/icons/lightspeed/departs-from.svg new file mode 100644 index 0000000..7424415 --- /dev/null +++ b/assets/icons/lightspeed/departs-from.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/destination.svg b/assets/icons/lightspeed/destination.svg new file mode 100644 index 0000000..19863a6 --- /dev/null +++ b/assets/icons/lightspeed/destination.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/download.svg b/assets/icons/lightspeed/download.svg new file mode 100644 index 0000000..990a583 --- /dev/null +++ b/assets/icons/lightspeed/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/duration.svg b/assets/icons/lightspeed/duration.svg new file mode 100644 index 0000000..eb310c9 --- /dev/null +++ b/assets/icons/lightspeed/duration.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/email.svg b/assets/icons/lightspeed/email.svg new file mode 100644 index 0000000..7b55a16 --- /dev/null +++ b/assets/icons/lightspeed/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/ends-in.svg b/assets/icons/lightspeed/ends-in.svg new file mode 100644 index 0000000..90a044a --- /dev/null +++ b/assets/icons/lightspeed/ends-in.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/external-link.svg b/assets/icons/lightspeed/external-link.svg new file mode 100644 index 0000000..e0763b6 --- /dev/null +++ b/assets/icons/lightspeed/external-link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/eye.svg b/assets/icons/lightspeed/eye.svg new file mode 100644 index 0000000..395f12e --- /dev/null +++ b/assets/icons/lightspeed/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/facebook.svg b/assets/icons/lightspeed/facebook.svg new file mode 100644 index 0000000..8f0aa57 --- /dev/null +++ b/assets/icons/lightspeed/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/filter.svg b/assets/icons/lightspeed/filter.svg new file mode 100644 index 0000000..0361079 --- /dev/null +++ b/assets/icons/lightspeed/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/flower.svg b/assets/icons/lightspeed/flower.svg new file mode 100644 index 0000000..1aa6b42 --- /dev/null +++ b/assets/icons/lightspeed/flower.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/gallery.svg b/assets/icons/lightspeed/gallery.svg new file mode 100644 index 0000000..996e016 --- /dev/null +++ b/assets/icons/lightspeed/gallery.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/gift.svg b/assets/icons/lightspeed/gift.svg new file mode 100644 index 0000000..7375150 --- /dev/null +++ b/assets/icons/lightspeed/gift.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/globe.svg b/assets/icons/lightspeed/globe.svg new file mode 100644 index 0000000..16f69ce --- /dev/null +++ b/assets/icons/lightspeed/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/group-size.svg b/assets/icons/lightspeed/group-size.svg new file mode 100644 index 0000000..e472d25 --- /dev/null +++ b/assets/icons/lightspeed/group-size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/heart.svg b/assets/icons/lightspeed/heart.svg new file mode 100644 index 0000000..edd9cd6 --- /dev/null +++ b/assets/icons/lightspeed/heart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/help.svg b/assets/icons/lightspeed/help.svg new file mode 100644 index 0000000..6cfe434 --- /dev/null +++ b/assets/icons/lightspeed/help.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/info.svg b/assets/icons/lightspeed/info.svg new file mode 100644 index 0000000..570012e --- /dev/null +++ b/assets/icons/lightspeed/info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/instagram.svg b/assets/icons/lightspeed/instagram.svg new file mode 100644 index 0000000..4b0f2fb --- /dev/null +++ b/assets/icons/lightspeed/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/languages.svg b/assets/icons/lightspeed/languages.svg new file mode 100644 index 0000000..1e1ca5b --- /dev/null +++ b/assets/icons/lightspeed/languages.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/linkedin.svg b/assets/icons/lightspeed/linkedin.svg new file mode 100644 index 0000000..517969e --- /dev/null +++ b/assets/icons/lightspeed/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/location.svg b/assets/icons/lightspeed/location.svg new file mode 100644 index 0000000..987d00b --- /dev/null +++ b/assets/icons/lightspeed/location.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/lock.svg b/assets/icons/lightspeed/lock.svg new file mode 100644 index 0000000..9f3adc8 --- /dev/null +++ b/assets/icons/lightspeed/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/login.svg b/assets/icons/lightspeed/login.svg new file mode 100644 index 0000000..9525bdc --- /dev/null +++ b/assets/icons/lightspeed/login.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/menu-close.svg b/assets/icons/lightspeed/menu-close.svg new file mode 100644 index 0000000..30ce91e --- /dev/null +++ b/assets/icons/lightspeed/menu-close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/menu.svg b/assets/icons/lightspeed/menu.svg new file mode 100644 index 0000000..e9ba598 --- /dev/null +++ b/assets/icons/lightspeed/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/minus.svg b/assets/icons/lightspeed/minus.svg new file mode 100644 index 0000000..0258b8f --- /dev/null +++ b/assets/icons/lightspeed/minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/monitor.svg b/assets/icons/lightspeed/monitor.svg new file mode 100644 index 0000000..8943d1f --- /dev/null +++ b/assets/icons/lightspeed/monitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/newsletter.svg b/assets/icons/lightspeed/newsletter.svg new file mode 100644 index 0000000..ef82e53 --- /dev/null +++ b/assets/icons/lightspeed/newsletter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/newspaper.svg b/assets/icons/lightspeed/newspaper.svg new file mode 100644 index 0000000..fc0ff55 --- /dev/null +++ b/assets/icons/lightspeed/newspaper.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/phone.svg b/assets/icons/lightspeed/phone.svg new file mode 100644 index 0000000..23e247d --- /dev/null +++ b/assets/icons/lightspeed/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/pinterest.svg b/assets/icons/lightspeed/pinterest.svg new file mode 100644 index 0000000..903823d --- /dev/null +++ b/assets/icons/lightspeed/pinterest.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/play.svg b/assets/icons/lightspeed/play.svg new file mode 100644 index 0000000..fa1c8cc --- /dev/null +++ b/assets/icons/lightspeed/play.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/plus.svg b/assets/icons/lightspeed/plus.svg new file mode 100644 index 0000000..960a77f --- /dev/null +++ b/assets/icons/lightspeed/plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/price.svg b/assets/icons/lightspeed/price.svg new file mode 100644 index 0000000..f3807d8 --- /dev/null +++ b/assets/icons/lightspeed/price.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/printer.svg b/assets/icons/lightspeed/printer.svg new file mode 100644 index 0000000..d55a175 --- /dev/null +++ b/assets/icons/lightspeed/printer.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/quote.svg b/assets/icons/lightspeed/quote.svg new file mode 100644 index 0000000..df01d82 --- /dev/null +++ b/assets/icons/lightspeed/quote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/scroll-down.svg b/assets/icons/lightspeed/scroll-down.svg new file mode 100644 index 0000000..c525b6f --- /dev/null +++ b/assets/icons/lightspeed/scroll-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/search.svg b/assets/icons/lightspeed/search.svg new file mode 100644 index 0000000..93970d4 --- /dev/null +++ b/assets/icons/lightspeed/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/settings.svg b/assets/icons/lightspeed/settings.svg new file mode 100644 index 0000000..d352244 --- /dev/null +++ b/assets/icons/lightspeed/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/share-alt.svg b/assets/icons/lightspeed/share-alt.svg new file mode 100644 index 0000000..29271c0 --- /dev/null +++ b/assets/icons/lightspeed/share-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/share.svg b/assets/icons/lightspeed/share.svg new file mode 100644 index 0000000..c656e66 --- /dev/null +++ b/assets/icons/lightspeed/share.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/shield.svg b/assets/icons/lightspeed/shield.svg new file mode 100644 index 0000000..09e06f0 --- /dev/null +++ b/assets/icons/lightspeed/shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/sort.svg b/assets/icons/lightspeed/sort.svg new file mode 100644 index 0000000..4b49037 --- /dev/null +++ b/assets/icons/lightspeed/sort.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/special-interests.svg b/assets/icons/lightspeed/special-interests.svg new file mode 100644 index 0000000..044d040 --- /dev/null +++ b/assets/icons/lightspeed/special-interests.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/star-fill.svg b/assets/icons/lightspeed/star-fill.svg new file mode 100644 index 0000000..fa2c225 --- /dev/null +++ b/assets/icons/lightspeed/star-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/star.svg b/assets/icons/lightspeed/star.svg new file mode 100644 index 0000000..f9c7c8d --- /dev/null +++ b/assets/icons/lightspeed/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/tag.svg b/assets/icons/lightspeed/tag.svg new file mode 100644 index 0000000..679d57a --- /dev/null +++ b/assets/icons/lightspeed/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/theme-moon.svg b/assets/icons/lightspeed/theme-moon.svg new file mode 100644 index 0000000..f4be44f --- /dev/null +++ b/assets/icons/lightspeed/theme-moon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/theme-sun.svg b/assets/icons/lightspeed/theme-sun.svg new file mode 100644 index 0000000..4cdb3bb --- /dev/null +++ b/assets/icons/lightspeed/theme-sun.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/thumbs-up.svg b/assets/icons/lightspeed/thumbs-up.svg new file mode 100644 index 0000000..f500682 --- /dev/null +++ b/assets/icons/lightspeed/thumbs-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/tiktok.svg b/assets/icons/lightspeed/tiktok.svg new file mode 100644 index 0000000..781d224 --- /dev/null +++ b/assets/icons/lightspeed/tiktok.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/transport.svg b/assets/icons/lightspeed/transport.svg new file mode 100644 index 0000000..2ce1dd2 --- /dev/null +++ b/assets/icons/lightspeed/transport.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/trending-up.svg b/assets/icons/lightspeed/trending-up.svg new file mode 100644 index 0000000..07f0d9c --- /dev/null +++ b/assets/icons/lightspeed/trending-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/trophy.svg b/assets/icons/lightspeed/trophy.svg new file mode 100644 index 0000000..227a7d8 --- /dev/null +++ b/assets/icons/lightspeed/trophy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/truck.svg b/assets/icons/lightspeed/truck.svg new file mode 100644 index 0000000..3a556e2 --- /dev/null +++ b/assets/icons/lightspeed/truck.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/twitter-x.svg b/assets/icons/lightspeed/twitter-x.svg new file mode 100644 index 0000000..1cf3969 --- /dev/null +++ b/assets/icons/lightspeed/twitter-x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/upload.svg b/assets/icons/lightspeed/upload.svg new file mode 100644 index 0000000..ddbece8 --- /dev/null +++ b/assets/icons/lightspeed/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/user-plus.svg b/assets/icons/lightspeed/user-plus.svg new file mode 100644 index 0000000..b2a201a --- /dev/null +++ b/assets/icons/lightspeed/user-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/user.svg b/assets/icons/lightspeed/user.svg new file mode 100644 index 0000000..9a123ef --- /dev/null +++ b/assets/icons/lightspeed/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/users.svg b/assets/icons/lightspeed/users.svg new file mode 100644 index 0000000..5da7696 --- /dev/null +++ b/assets/icons/lightspeed/users.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/video.svg b/assets/icons/lightspeed/video.svg new file mode 100644 index 0000000..e473d6d --- /dev/null +++ b/assets/icons/lightspeed/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/warning.svg b/assets/icons/lightspeed/warning.svg new file mode 100644 index 0000000..c088515 --- /dev/null +++ b/assets/icons/lightspeed/warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/whatsapp.svg b/assets/icons/lightspeed/whatsapp.svg new file mode 100644 index 0000000..2a2fa15 --- /dev/null +++ b/assets/icons/lightspeed/whatsapp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/icons/lightspeed/youtube.svg b/assets/icons/lightspeed/youtube.svg new file mode 100644 index 0000000..e6fcdd1 --- /dev/null +++ b/assets/icons/lightspeed/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file From 23e344f84a497c216a40aaeca887d9dcc863d706 Mon Sep 17 00:00:00 2001 From: krugazul Date: Mon, 7 Sep 2026 12:51:48 +0200 Subject: [PATCH 4/5] docs(changelog): document the LightSpeed icon collection and inc/ namespace refactor Co-Authored-By: Claude Sonnet 5 --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e57b90..75fbb78 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added Carousel Slide block (`ls-plugin/carousel-slide`) as a child block with InnerBlocks support for core content blocks, vertical alignment controls, and full block supports (border, color, spacing). - Added Swiper library (v12.0.3) bundled locally in the plugin assets folder for offline carousel functionality. - Added server-side carousel asset management using render_block filter for reliable conditional loading of Swiper CSS, JS, and initialization scripts. +- Added a `lightspeed` SVG icon collection (`LS_Plugin\Icons`) using the WordPress 7.1 icon registration API (`wp_register_icon_collection()` / `wp_register_icon()`), auto-registering every SVG dropped into `assets/icons/lightspeed/` for use in the block editor and via `wp_get_icon()`. +- Added 93 icons to the `lightspeed` collection, sourced from [Phosphor Icons](https://phosphoricons.com/) (MIT licensed), covering navigation, search, contact, social, content/meta, media, tour/commerce, and site-chrome use cases. ### Changed - Changed Back to Top implementation from a standalone custom block to a `core/button` variation. @@ -38,6 +40,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Changed the plugin bootstrap to load SCF JSON configuration, validation, and permalink management classes. - Changed Search Filter block interactivity handling to use a dedicated view script module with debounced query updates and Query Loop integration hooks. - Changed Taxonomy Filter block interactivity handling to use dedicated view script module with client-side navigation and per-instance state management for expand/collapse controls. +- Changed all `inc/` classes to be namespaced under `LS_Plugin\`, dropping the `LS_Plugin_` prefix from class names (e.g. `LS_Plugin_Carousel` → `LS_Plugin\Carousel`), and renamed the corresponding files to match (e.g. `class-ls-plugin-icons.php` → `class-icons.php`). ### Deprecated From bfaf34328e01f65d44930d916869cba42c1a4e41 Mon Sep 17 00:00:00 2001 From: krugazul Date: Mon, 7 Sep 2026 13:04:58 +0200 Subject: [PATCH 5/5] feat(portfolio): update post type and add industry/service taxonomies --- .../group_ls_plugin_portfolio_fields.json | 23 +----- scf-json/post_type_portfolio.json | 7 +- scf-json/taxonomy-portfolio-industry.json | 70 +++++++++++++++++++ scf-json/taxonomy-portfolio-service.json | 68 ++++++++++++++++++ 4 files changed, 142 insertions(+), 26 deletions(-) create mode 100644 scf-json/taxonomy-portfolio-industry.json create mode 100644 scf-json/taxonomy-portfolio-service.json diff --git a/scf-json/group_ls_plugin_portfolio_fields.json b/scf-json/group_ls_plugin_portfolio_fields.json index 0692bf3..15a1e9f 100644 --- a/scf-json/group_ls_plugin_portfolio_fields.json +++ b/scf-json/group_ls_plugin_portfolio_fields.json @@ -43,27 +43,6 @@ }, "placeholder": "https://", "default_value": "" - }, - { - "key": "field_ls_plugin_client_name", - "label": "Client Name", - "name": "ls_plugin_client_name", - "aria-label": "", - "type": "text", - "instructions": "", - "required": 0, - "conditional_logic": 0, - "wrapper": { - "width": "", - "class": "", - "id": "" - }, - "default_value": "", - "maxlength": "", - "allow_in_bindings": 0, - "placeholder": "", - "prepend": "", - "append": "" } ], "location": [ @@ -71,7 +50,7 @@ { "param": "post_type", "operator": "==", - "value": "project" + "value": "ls_plugin_portfolio" } ] ], diff --git a/scf-json/post_type_portfolio.json b/scf-json/post_type_portfolio.json index 9390182..925dc00 100644 --- a/scf-json/post_type_portfolio.json +++ b/scf-json/post_type_portfolio.json @@ -3,7 +3,7 @@ "title": "Portfolios", "menu_order": 0, "active": true, - "post_type": "project", + "post_type": "ls_plugin_portfolio", "advanced_configuration": true, "labels": { "name": "Portfolios", @@ -66,9 +66,8 @@ "custom-fields" ], "taxonomies": [ - "project-type", - "project-tag", - "project-group" + "ls_plugin_portfolio_industry", + "ls_plugin_portfolio_service" ], "has_archive": true, "has_archive_slug": "portfolio", diff --git a/scf-json/taxonomy-portfolio-industry.json b/scf-json/taxonomy-portfolio-industry.json new file mode 100644 index 0000000..31a7438 --- /dev/null +++ b/scf-json/taxonomy-portfolio-industry.json @@ -0,0 +1,70 @@ +{ + "key": "taxonomy_ls_plugin_portfolio_industry", + "title": "Industry", + "menu_order": 0, + "active": true, + "taxonomy": "ls_plugin_portfolio_industry", + "object_type": [ + "ls_plugin_portfolio" + ], + "advanced_configuration": true, + "labels": { + "name": "Industries", + "singular_name": "Industry", + "menu_name": "Industries", + "all_items": "All Industries", + "edit_item": "Edit Industry", + "view_item": "View Industry", + "update_item": "Update Industry", + "add_new_item": "Add New Industry", + "new_item_name": "New Industry Name", + "parent_item": "Parent Industry", + "parent_item_colon": "Parent Industry:", + "search_items": "Search Industries", + "popular_items": "Popular Industries", + "separate_items_with_commas": "Separate industries with commas", + "add_or_remove_items": "Add or remove industries", + "choose_from_most_used": "Choose from the most used industries", + "not_found": "No industries found", + "items_list_navigation": "Industries list navigation", + "items_list": "Industries list", + "back_to_items": "Back to Industries", + "item_link": "Industry Link", + "item_link_description": "A link to an industry." + }, + "description": "", + "capabilities": { + "manage_terms": "manage_categories", + "edit_terms": "manage_categories", + "delete_terms": "manage_categories", + "assign_terms": "edit_posts" + }, + "public": true, + "publicly_queryable": true, + "hierarchical": true, + "show_ui": true, + "show_in_menu": true, + "show_in_nav_menus": true, + "show_in_rest": true, + "rest_base": "portfolio-industry", + "rest_namespace": "wp/v2", + "rest_controller_class": "", + "show_tagcloud": true, + "show_in_quick_edit": true, + "show_admin_column": true, + "rewrite": { + "slug": "portfolio-industry", + "permalink_rewrite": "custom_permalink", + "with_front": "1", + "rewrite_hierarchical": "1" + }, + "query_var": "post_type_key", + "query_var_name": "", + "default_term": { + "default_term_enabled": "0" + }, + "sort": false, + "meta_box": "default", + "meta_box_cb": "", + "meta_box_sanitize_cb": "" +} diff --git a/scf-json/taxonomy-portfolio-service.json b/scf-json/taxonomy-portfolio-service.json new file mode 100644 index 0000000..2a08fa8 --- /dev/null +++ b/scf-json/taxonomy-portfolio-service.json @@ -0,0 +1,68 @@ +{ + "key": "taxonomy_ls_plugin_portfolio_service", + "title": "Service", + "menu_order": 0, + "active": true, + "taxonomy": "ls_plugin_portfolio_service", + "object_type": [ + "ls_plugin_portfolio" + ], + "advanced_configuration": true, + "labels": { + "name": "Services", + "singular_name": "Service", + "menu_name": "Services", + "all_items": "All Services", + "edit_item": "Edit Service", + "view_item": "View Service", + "update_item": "Update Service", + "add_new_item": "Add New Service", + "new_item_name": "New Service Name", + "search_items": "Search Services", + "popular_items": "Popular Services", + "separate_items_with_commas": "Separate services with commas", + "add_or_remove_items": "Add or remove services", + "choose_from_most_used": "Choose from the most used services", + "not_found": "No services found", + "items_list_navigation": "Services list navigation", + "items_list": "Services list", + "back_to_items": "Back to Services", + "item_link": "Service Link", + "item_link_description": "A link to a service." + }, + "description": "", + "capabilities": { + "manage_terms": "manage_categories", + "edit_terms": "manage_categories", + "delete_terms": "manage_categories", + "assign_terms": "edit_posts" + }, + "public": true, + "publicly_queryable": true, + "hierarchical": false, + "show_ui": true, + "show_in_menu": true, + "show_in_nav_menus": true, + "show_in_rest": true, + "rest_base": "portfolio-service", + "rest_namespace": "wp/v2", + "rest_controller_class": "", + "show_tagcloud": true, + "show_in_quick_edit": true, + "show_admin_column": true, + "rewrite": { + "slug": "portfolio-service", + "permalink_rewrite": "custom_permalink", + "with_front": "1", + "rewrite_hierarchical": "0" + }, + "query_var": "post_type_key", + "query_var_name": "", + "default_term": { + "default_term_enabled": "0" + }, + "sort": false, + "meta_box": "default", + "meta_box_cb": "", + "meta_box_sanitize_cb": "" +}