Release as SoloFrame Evo (#2)

* docs: Add onboarding documentation for new developers

Add four comprehensive guides to help new developers get started
with the VDI-Starter-v5 WordPress theme:

- docs/getting-started.md: Setup from zero, local WordPress options,
  env config, theme activation warnings, troubleshooting
- docs/architecture.md: Bootstrap flow, 7 architectural layers,
  namespace conventions, WP hooks cleanup, enqueue system, theme.json
- docs/creating-blocks.md: Step-by-step ACF block creation tutorial,
  helper functions, parent-child patterns, Tailwind integration
- docs/reference.md: Hooks/filters tables, design tokens, CSS import
  tree, JS module graph, class reference, CLI commands, deployment

Update README.md: trim deep-dive API docs (moved to reference),
add documentation links section, fix CSS paths (views/styles/ →
styles/), add missing contact-info block, fix deployment filename
typo (wpengine,yml → wpengine.yml), add backToTop.js and
enqEditorAssets(), add namespace conventions table.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs: language graph

* docs: Update readme

* 🔵 other: Rename project and publish

* 🔵 other: Update .gitignore
This commit is contained in:
Keith Solomon
2026-07-29 15:52:21 -05:00
committed by GitHub
co-authored by Claude Opus 4.7
parent bcc701120b
commit e2f6270717
66 changed files with 2797 additions and 713 deletions
+2 -2
View File
@@ -4,10 +4,10 @@
*
* This is the template that renders the Accordion block.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
$open = get_field( 'open' );
$group = get_field( 'group_items' );
+1 -1
View File
@@ -5,7 +5,7 @@
"style": [
"file:./boilerplate.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "block-default",
"keywords": [
"boilerplate"
+2 -2
View File
@@ -4,10 +4,10 @@
*
* This is the template for building your own custom blocks.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
$classes = 'boilerplate';
+2 -2
View File
@@ -1,8 +1,8 @@
{
"name": "acf/button",
"title": "Button (VDI)",
"title": "Button (SFE)",
"description": "A button.",
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "button",
"keywords": [
"button"
+2 -2
View File
@@ -2,10 +2,10 @@
/**
* Button block
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
// Retrieve ACF fields
$element = get_field( 'element' ) ? get_field( 'element' ) : 'a';
+2 -2
View File
@@ -1,9 +1,9 @@
{
"name": "acf/buttons",
"title": "Buttons (VDI)",
"title": "Buttons (SFE)",
"description": "A button or group of buttons.",
"allowedBlocks": [ "acf/button" ],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "button",
"keywords": [
"buttons"
+2 -2
View File
@@ -4,10 +4,10 @@
*
* This is the template that renders the Buttons block.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
$ibClasses = 'flex flex-wrap gap-4 w-full justify-center sm:justify-start';
+1 -1
View File
@@ -5,7 +5,7 @@
"style": [
"file:./contact-info.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "feedback",
"keywords": [
"contact info",
+5 -5
View File
@@ -4,10 +4,10 @@
*
* Display contact information from global fields with icons and optional form.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
$classes = 'contact-info';
$wrapper = blockWrapperAttributes( $classes, $is_preview );
@@ -19,13 +19,13 @@ $wrapper = blockWrapperAttributes( $classes, $is_preview );
<h2 class="text-2xl font-bold mb-4">Contact Information</h2>
<div class="not-prose text-black my-4">
<h3 class="mb-0"><?php echo esc_html__( 'Mailing Address', 'basicwp' ); ?></h3>
<h3 class="mb-0"><?php echo esc_html__( 'Mailing Address', 'sf-evo' ); ?></h3>
<p class="my-0.5"><?php echo wp_kses_post( get_field( 'contact_info', 'option' )['address'] ); ?></p>
<h3 class="mb-0"><?php echo esc_html__( 'Email', 'basicwp' ); ?></h3>
<h3 class="mb-0"><?php echo esc_html__( 'Email', 'sf-evo' ); ?></h3>
<p class="my-0.5"><a class="hover:opacity-80 transition-colors duration-100" href="mailto:<?php echo esc_html( get_field( 'contact_info', 'option' )['email'] ); ?>"><?php echo esc_html( get_field( 'contact_info', 'option' )['email'] ); ?></a></p>
<h3 class="mb-0"><?php echo esc_html__( 'Phone', 'basicwp' ); ?></h3>
<h3 class="mb-0"><?php echo esc_html__( 'Phone', 'sf-evo' ); ?></h3>
<p class="my-0.5"><a class="hover:opacity-80 transition-colors duration-100" href="tel:<?php echo esc_html( get_field( 'contact_info', 'option' )['phone'] ); ?>"><?php echo esc_html( get_field( 'contact_info', 'option' )['phone'] ); ?></a></p>
</div>
</div>
+2 -2
View File
@@ -1,11 +1,11 @@
{
"name": "acf/grid-cell",
"title": "Grid Cell (VDI)",
"title": "Grid Cell (SFE)",
"description": "Custom grid cell block.",
"style": [
"file:./grid-cell.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "grid-view",
"keywords": [
"grid"
+2 -2
View File
@@ -4,10 +4,10 @@
*
* This is the template that displays the Grid Cell block.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
// Initialize variables
$className = ! empty( $block['className'] ) ? $block['className'] : '';
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "acf/grid",
"title": "Grid Block (VDI)",
"title": "Grid Block (SFE)",
"description": "Custom grid block.",
"style": [
"file:./grid.css"
],
"allowedBlocks": [ "acf/grid-cell" ],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "grid-view",
"keywords": [
"grid"
+2 -2
View File
@@ -4,10 +4,10 @@
*
* This is the template that displays the grid block.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
$allowedBlocks = array( 'acf/grid-cell' );
$default_blocks = array(
+1 -1
View File
@@ -5,7 +5,7 @@
"style": [
"file:./homepage-hero.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "block-default",
"keywords": [
"homepage-hero",
+2 -2
View File
@@ -2,10 +2,10 @@
/**
* Block Name: Homepage Hero
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
// Retrieve ACF fields
$heading = get_field( 'heading' );
@@ -5,7 +5,7 @@
"style": [
"file:./media-text-innerblocks.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "screenoptions",
"keywords": [
"media",
@@ -4,10 +4,10 @@
*
* This is the template that displays the media text inner blocks.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
// Retrieve ACF fields
$bgColor = get_field( 'background_color' ) ? get_field( 'background_color' ) : '#c5c5c5';
+1 -1
View File
@@ -5,7 +5,7 @@
"style": [
"file:./media-text.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "screenoptions",
"keywords": [
"media",
+2 -2
View File
@@ -4,10 +4,10 @@
*
* This is the template that displays the Media With Text block.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
// Retrieve ACF fields
$bgColor = get_field( 'background_color' ) ? get_field( 'background_color' ) : '#c5c5c5';
+1 -1
View File
@@ -5,7 +5,7 @@
"style": [
"file:./page-children.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "block-default",
"keywords": [
"page-children"
+3 -3
View File
@@ -2,10 +2,10 @@
/**
* Page Children block
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
// Retrieve the current page ID and its children
$parentId = get_queried_object_id();
@@ -89,7 +89,7 @@ $wrapper = blockWrapperAttributes( $classes, $is_preview );
</h3>
</div>
<div class="my-0 grow-1 text-18px text-gray-600 <?php echo esc_attr( $gcPad ); ?>">
<div class="my-0 grow text-18px text-gray-600 <?php echo esc_attr( $gcPad ); ?>">
<?php
if ( ! empty( $grandchildren ) ) {
?>
+1 -1
View File
@@ -5,7 +5,7 @@
"style": [
"file:./section.css"
],
"category": "vdi-blocks",
"category": "sf-blocks",
"icon": "align-wide",
"keywords": [
"setion",
+2 -2
View File
@@ -4,10 +4,10 @@
*
* This is the template that displays the section block.
*
* @package BasicWP
* @package SoloFrameEvo
*/
namespace BasicWP;
namespace SoloFrameEvo;
// Retrieve ACF fields
$contentWidth = get_field( 'content_width' );