diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 5a51b02..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1,483 +0,0 @@ -# Priority+ Navigation Plugin - Technical Documentation - -## Overview - -This WordPress plugin implements the Priority+ navigation pattern as a **block variation** of the core WordPress Navigation block. It automatically moves navigation items that don't fit the available viewport width into a "More" dropdown menu, ensuring responsive navigation without requiring a hamburger menu. - -## Architecture - -### Block Variation Approach - -The plugin extends `core/navigation` as a variation rather than creating a custom block: - -**Benefits:** -- Leverages core navigation functionality (menu management, styling, block supports) -- Future-proof - benefits from WordPress core updates -- Seamless integration with block themes -- Users can convert between standard and Priority+ navigation easily - -### File Structure - -``` -priority-plus-nav/ -├── priority-plus-nav.php # Main plugin file, bootstraps autoloader -├── classes/ -│ ├── class-plugin-module.php # Abstract base class for modules -│ ├── class-plugin-paths.php # Path/URL resolution utilities -│ └── class-enqueues.php # Asset enqueueing & block rendering -├── src/ -│ ├── priority-editor.js # Editor entry point -│ ├── priority-plus-nav.js # Frontend entry point -│ ├── variation/ -│ │ ├── block.js # Block variation registration & attributes -│ │ └── controls.js # Editor sidebar controls (settings panel) -│ ├── core/ -│ │ └── PriorityNav.js # Main class - priority nav logic -│ ├── dom/ -│ │ ├── dom-builder.js # Build More button, dropdown, accordion HTML -│ │ └── dom-extractor.js # Extract data from nav items -│ ├── events/ -│ │ ├── event-handlers.js # Setup click/keyboard event listeners -│ │ └── accordion-handler.js # Accordion open/close logic -│ ├── layout/ -│ │ └── width-calculator.js # Width caching & gap calculations -│ ├── utils/ -│ │ ├── constants.js # Default values (labels, icons) -│ │ ├── dom-utils.js # DOM utility functions -│ │ └── html-utils.js # HTML escaping utilities -│ └── styles/ -│ ├── style.scss # Frontend styles -│ └── editor.scss # Editor styles -└── build/ # Compiled assets (generated) -``` - -## How It Works - -### 1. Block Registration (Editor) - -**File:** `src/variation/block.js` - -- Registers a block variation named `priority-nav` on `core/navigation` -- Sets default attributes: - - `className`: `is-style-priority-nav` (CSS class for styling & detection) - - `overlayMenu`: `never` (disable core hamburger menu) - - `priorityNavEnabled`: `true` - - `priorityNavMoreLabel`: `'Browse'` - - `priorityNavMoreIcon`: `'none'` -- Adds `isActive` check to detect when variation is active based on className -- Extends core/navigation with custom attributes via WordPress hooks filter - -**File:** `src/variation/controls.js` - -- Adds InspectorControls (sidebar panel) to core/navigation when Priority+ is enabled -- Provides settings: - - Text input for "More Button Label" - - Select control for icon (None, Chevron, Plus, Menu) -- Wraps editor preview in `.priority-nav-editor-wrapper` for editor-specific styling - -### 2. Asset Enqueueing (PHP) - -**File:** `classes/class-enqueues.php` - -**Editor Assets:** -- Enqueues `priority-editor.js` and styles on `enqueue_block_editor_assets` hook -- Loaded in WordPress editor for variation registration and controls - -**Frontend Assets:** -- Hooks into `render_block` filter for `core/navigation` blocks -- Checks if Priority+ is enabled via: - 1. `priorityNavEnabled` attribute - 2. `is-style-priority-nav` class in className -- If enabled: - - Enqueues `priority-plus-nav.js` and styles (once per page) - - Injects `data-more-label` and `data-more-icon` attributes into `