From 46d681c6b825d21b3f698d793c4e630c687d90ad Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 21 May 2026 21:41:53 +0000
Subject: [PATCH] =Major CustomBlocks.php overhaul, expanding block support and customization from the editor. theme.json should now be updated on new themes to set brand colours, etc. Also note: major change to .col vs .row alignment: simplifying it to .top .bottom vs the confusion of the differences for .col/.row .start and .a-start
---
inc/managers/IconsManager.php | 70 +++++++++++++++++++----------------
1 files changed, 38 insertions(+), 32 deletions(-)
diff --git a/inc/managers/IconsManager.php b/inc/managers/IconsManager.php
index 65e583d..f54120b 100644
--- a/inc/managers/IconsManager.php
+++ b/inc/managers/IconsManager.php
@@ -1,7 +1,8 @@
<?php
namespace JVBase\managers;
-use JVBase\utility\Features;
+use JVBase\registrar\Registrar;
+use JVBase\base\Site;
if (!defined('ABSPATH')) {
exit;
@@ -43,9 +44,7 @@
{
$this->source = $source;
$this->cache = Cache::for('icons_' . $source, WEEK_IN_SECONDS);
- $this->style = (array_key_exists('icons', JVB_SITE) && in_array(JVB_SITE['icons'], $this->styles))
- ? JVB_SITE['icons']
- : 'regular';
+ $this->style = Site::icon();
$this->addMap();
@@ -145,6 +144,7 @@
'apple-logo',
'check-circle',
'close-circle',
+ 'faders-horizontal',
'cloud-slash',
'exclamation-mark',
'cloud-arrow-down',
@@ -195,15 +195,11 @@
// ]
];
+
// Add icons from content/taxonomy/user configs (like old behavior)
$configIcons = $this->getIconsFromConfigs();
if (!empty($configIcons)) {
- foreach ($configIcons as $source => $icons) {
- if (!isset($defaults[$source])) {
- $defaults[$source] = [];
- }
- $defaults[$source] = array_merge($defaults[$source], $icons);
- }
+ $defaults['icons'] = array_merge($defaults['icons'], $configIcons);
}
// Allow filtering per source (extensibility)
@@ -214,35 +210,27 @@
if (isset($allIcons[$this->source])) {
$icons = array_merge($icons, $allIcons[$this->source]);
}
-
if (!empty($icons)) {
$this->include($icons);
}
}
/**
- * Get icons from JVB_CONTENT, JVB_TAXONOMY, JVB_USER configs
+ * Get icons from Registrar instances
+ *
*/
protected function getIconsFromConfigs(): array
{
$icons = [];
- $check = [JVB_CONTENT, JVB_TAXONOMY, JVB_USER];
+ $registered = Registrar::getRegistered();
- foreach ($check as $constant) {
- foreach ($constant as $key => $value) {
- if (isset($value['icon'])) {
- // Determine source based on context (you could add 'icon_source' to configs)
- $source = $value['icon_source'] ?? 'icons';
-
- if (!isset($icons[$source])) {
- $icons[$source] = [];
- }
- $icons[$source][] = $value['icon'];
- }
- }
+ foreach ($registered as $type) {
+ $registrar = Registrar::getInstance($type);
+ $icons[] = $registrar->getIcon();
}
- return $icons;
+
+ return array_unique(array_filter($icons));
}
/**
@@ -362,16 +350,16 @@
$map = [
'seo' => 'robot'
];
- if (Features::forSite()->has('referrals')) {
+ if (Site::has('referrals')) {
$map['referrals'] = 'hand-heart';
}
- if (Features::forSite()->has('dashboard')) {
+ if (Site::has('dashboard')) {
$map['dash'] = 'door';
}
- if (Features::forSite()->has('magicLink')) {
+ if (Site::has('magicLink')) {
$map['magicLink'] = 'magic-wand';
}
- if (Features::hasAnyIntegration()) {
+ if (Site::hasAnyIntegration()) {
$map['integrations'] = 'plugs-connected';
}
update_option(BASE.'iconMap', $map);
@@ -386,6 +374,7 @@
protected function registerGlobalHooks(): void
{
add_action('wp_loaded', [self::class, 'checkCSS']);
+ add_action('shutdown', [self::class, 'checkCSS']);
}
/**
@@ -532,7 +521,7 @@
*/
public function get(string $name, array $options = []): string
{
- if ($name === '') {
+ if (empty($name)) {
//No icon requested
return '';
}
@@ -636,7 +625,7 @@
/**
* Get raw SVG content for CSS mask-image
*/
- protected function getRawSvg(string $name, ?string $style = null): ?string
+ public function getRawSvg(string $name, ?string $style = null): ?string
{
if (!$style) {
$style = $this->style;
@@ -683,6 +672,15 @@
foreach ($names as $icon) {
$svg = $this->getEncodedSVG($icon, $style);
if ($svg !== '') {
+ if ($icon === 'caret-down') {
+ $css .= 'details summary::after,';
+ } elseif ($icon === 'faders-horizontal') {
+ $css .= 'details.all-filters summary::after,';
+ } elseif ($icon === 'link') {
+ $css .= 'input[type=url],';
+ } elseif ($icon === apply_filters('jvbSeparatorLogo', 'logo')) {
+ $css .= 'hr.logo::before,';
+ }
$css .= ".icon-{$icon}{$styleClass}{";
$css .= "--icon:url('data:image/svg+xml;base64,{$svg}');";
$css .= "}";
@@ -710,6 +708,14 @@
if (!$style) {
$style = $this->style;
}
+
+ $icon = $this->map[$icon] ?? $icon;
+
+ // Validate icon exists
+ if (!$this->iconExists($icon, $style)) {
+ error_log('[IconsManager] Icon not found: ' . $icon);
+ return '';
+ }
$svg = $this->getEncodedSVG($icon, $style);
if ($svg !== '') {
return "data:image/svg+xml;base64,{$svg}";
--
Gitblit v1.10.0