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

---
 src/drawer-menu/render.php |   38 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/src/drawer-menu/render.php b/src/drawer-menu/render.php
new file mode 100644
index 0000000..05da41a
--- /dev/null
+++ b/src/drawer-menu/render.php
@@ -0,0 +1,38 @@
+<?php
+
+use JVBase\managers\Cache;
+use JVBase\ui\Navigation;
+
+$menu_id = $attributes['menuId'] ?? '';
+$collapsed = $attributes['collapsed'] ?? true;
+
+// You'd populate this from options, a filter, or however you store menu data
+$menu_items = apply_filters('jvbDrawerItems', [], $menu_id);
+
+if (empty($menu_items) || empty($menu_id)) {
+	return '<p>Please configure the drawer menu in block settings.</p>';
+}
+
+$cache = Cache::for('drawer');
+
+if (!is_front_page()) {
+	$menu_items[] = [
+		'text'	=> 'Home',
+		'url'	=> home_url(),
+		'icon'	=> 'house-simple',
+	];
+}
+$items = array_map(function($item) { return $item['text'];}, $menu_items);
+
+$key = $cache->generateKey($items);
+$menu =  $cache->remember($key,
+function () use ($menu_items, $menu_id, $collapsed) {
+	$menu = new Navigation($menu_id);
+	$menu->asDrawer($collapsed)->populateFromArray($menu_items);
+	return $menu->render();
+});
+
+global $wp;
+
+$current = home_url($wp->request.'/');
+echo str_replace($current.'"', $current.'" class="current" aria-current="page"', $menu);

--
Gitblit v1.10.0