# Orphic Block and Function Plugin

This WordPress plugin provides custom blocks and modules with a modular architecture.

## Description

The Orphic Block and Function plugin is designed to add custom Gutenberg blocks and additional functionality to your WordPress site. It's built with modern development practices and offers a seamless integration with the WordPress block editor.

## Project Structure

```bash
orphic-ui/
├── src/                    # Source files for blocks
│   ├── blockBase/         # Base template for new blocks
│   └── your-block/        # Your block folder
├── features/
│   └── modules/           # Modules architecture
│       ├── module-js/     # JavaScript modules
│       │   └── module-name/
│       │       ├── editor/  # Editor-specific files
│       │       └── view/    # Front-end files
│       └── module-php/    # PHP modules
└── public/
    └── const/             # Constants and configurations
```

## Adding New Components

### 1. Adding a New Block

1. Create your block in `src/` folder (you can copy `blockBase` as template)
2. Register it in `public/const/class-global-plugin-option.php`:

```php
class ConstBlockOrphicBlockList {
    const BLOCKS = array(
        array(
            "label" => "Your Block Name",
            "key" => "your-block-key",
            "description" => "Description of your block"
        ),
        // ... other blocks
    );
}
```

### 2. Adding a New Module

1. Create module structure in `features/modules/`:

```bash
module-js/
└── your-module-name/
    ├── editor/          # Files loaded in Gutenberg
    │   └── script.js    # Editor functionality
    └── view/            # Files loaded in frontend
        └── script.js    # Frontend functionality
```

2. Register it in `public/const/class-global-plugin-option.php`:

```php
class ConstBlockOrphicModuleList {
    const MODULES = array(
        array(
            "label" => "Your Module Name",
            "key" => "your-module-name",
            "type" => "js", // or "php"
            "description" => "Description of your module",
            "dependencies" => array() // Any dependencies
        ),
        // ... other modules
    );
}
```

## How It Works

### Blocks

- Blocks are React components built for Gutenberg
- Each block must be built using `npm run build`
- Blocks appear in the option page when added to `ConstBlockOrphicBlockList`
- Blocks can be activated/deactivated from the admin interface

### Modules

- Modules are feature sets that can be used by blocks
- Editor scripts (`editor/`) are only loaded in Gutenberg when module is active
- View scripts (`view/`) are loaded in frontend when module is active
- Modules can be activated/deactivated from the admin interface

## Development

1. Install dependencies:

```bash
npm install
```

2. Start development:

```bash
npm run start
```

⚠️ Warning: Always run `npm run build` after making changes to see updates in WordPress.

## Module System

The module system uses two main hooks:

- `enqueue_block_editor_assets`: Loads editor files only in Gutenberg
- `wp_enqueue_scripts`: Loads view files in frontend

Files are:

- REGISTERED if module is inactive
- ENQUEUED if module is active

## Example: Motion Animation Module

```bash
module-js/
└── motion-animation/
    ├── editor/
    │   └── animation-filters.js    # Gutenberg controls
    └── view/
        └── orphic-motion-animation.js  # Frontend animations
```

This module is registered in `ConstBlockOrphicModuleList` and provides animation capabilities to blocks.

## Installation

1. Téléchargez le plugin
2. Installez-le dans votre WordPress
3. Activez-le depuis l'interface d'administration

## Mode Développeur

Pour activer le mode développeur et afficher les blocs en cours de développement, ajoutez la ligne suivante à votre fichier `wp-config.php` :

```php
define('ORPHIC_EXPERIMENTAL_MODE', true);
```

Lorsque le mode développeur est activé :

- Les blocs en développement sont visibles dans l'interface d'administration
- Ils sont marqués avec un badge "DEV" pour les identifier facilement
- Ils peuvent être activés et utilisés pour des tests

Lorsque le mode développeur est désactivé (par défaut) :

- Les blocs en développement ne sont pas visibles dans l'interface
- Ils ne sont pas enregistrés dans WordPress et ne peuvent pas être utilisés

## Fonctionnalités

- Blocs Gutenberg personnalisés
- Système de thème avec palette de couleurs personnalisable
- Modules d'extension pour fonctionnalités avancées
- Interface d'administration intuitive

## Support

Pour toute question ou assistance, contactez-nous à contact@orphic.ca
