Files
metabuilder/workflow/plugins/go/DEPENDENCIES.md
johndoe6345789 bb17f395fe feat: complete fakemui accessibility integration with data-testid and ARIA
Complete implementation of accessibility utilities across fakemui components:

**New Files**:
- src/utils/accessibility.ts - Core accessibility utilities (moved from legacy)
- src/utils/accessibility.module.scss - Accessibility SCSS styles
- src/utils/useAccessible.ts - React hooks for accessibility:
  * useAccessible() - Generate test IDs and ARIA attributes
  * useKeyboardNavigation() - Handle keyboard events
  * useFocusManagement() - Programmatic focus control
  * useLiveRegion() - Screen reader announcements
  * useFocusTrap() - Focus trapping for modals

**Component Updates**:
- Button.tsx - Added data-testid and ARIA support via useAccessible hook
- TextField.tsx - Added data-testid, aria-invalid, aria-describedby support

**Documentation**:
- docs/ACCESSIBILITY_INTEGRATION.md - Complete integration guide with examples

**Features**:
- 50+ preset test ID generators (form, canvas, settings, navigation, etc.)
- ARIA attribute patterns for buttons, toggles, dialogs, tabs, live regions
- Keyboard navigation helpers (Enter, Escape, Arrow keys, Tab)
- Accessibility validators (hasLabel, isKeyboardAccessible, etc.)
- Fully typed TypeScript with AccessibilityFeature, Component, Action types

All components now support reliable testing via data-testid and screen reader access via ARIA attributes.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-01-23 17:25:48 +00:00

128 lines
3.1 KiB
Markdown

# Go Workflow Plugins - Dependency Management
**Last Updated**: 2026-01-23
**Go Version**: 1.21+
## Overview
All Go workflow plugins are designed to have **zero external dependencies** (except the core workflow interface). All plugins use only the Go standard library.
## Module Structure
### Root Module: `go.mod`
- **Module Path**: `github.com/metabuilder/workflow-plugins-go`
- **Go Version**: 1.21
- **Dependencies**: Only `github.com/metabuilder/workflow` for the interface
### Workspace: `go.work`
- Coordinates all 15 plugin categories
- Enables monorepo development with `go mod tidy`
## Plugin Categories (Zero External Dependencies)
| Category | Plugins | External Deps | Status |
|----------|---------|---------------|--------|
| **control** | 1 | None | ✓ Complete |
| **convert** | 7 | None | ✓ Complete |
| **core** | 1 | None | ✓ Complete |
| **dict** | 6 | None | ✓ Complete |
| **list** | 7 | None | ✓ Complete |
| **logic** | 9 | None | ✓ Complete |
| **math** | 4 | None | ✓ Complete |
| **notifications** | 1 | None | ✓ Complete |
| **string** | 8 | None | ✓ Complete |
| **test** | 5 | None | ✓ Complete |
| **tools** | 1 | None | ✓ Complete |
| **utils** | 1 | None | ✓ Complete |
| **var** | 4 | None | ✓ Complete |
| **web** | 1 | None | ✓ Complete |
**Total Go Plugins**: 51
## Development Workflow
### Initialize Workspace
```bash
cd workflow/plugins/go
go mod download
go mod tidy
```
### Build All Plugins
```bash
go build ./...
```
### Test All Plugins
```bash
go test ./...
```
### Add New Plugin Module
For a new category `new_category`:
1. Create directory: `new_category/new_plugin/`
2. Add `main.go` with plugin implementation
3. Update `go.work` to include `./new_category`
4. Run `go mod tidy`
## Plugin Implementation Pattern
All Go plugins follow this interface:
```go
package plugin
// Plugin is the interface all workflow plugins must implement.
type Plugin interface {
Run(runtime *Runtime, inputs map[string]interface{}) (map[string]interface{}, error)
}
// Runtime provides context for plugin execution.
type Runtime struct {
Store map[string]interface{} // Workflow state storage
Context map[string]interface{} // Shared context (clients, config)
Logger Logger // Logging interface
}
```
## Migration Notes
### From Node Modules (TypeScript)
- Go plugins use workspace coordination instead of npm workspaces
- Each plugin category is a standalone Go module directory
- No package.json dependencies needed
### Dependencies Decision
- **External libraries**: Explicitly avoided to minimize deployment size
- **Standard library only**: Ensures compatibility across platforms
- **Plugin interface**: Single external import from `metabuilder/workflow`
## Future Enhancements
1. Consider adding optional plugins with external dependencies (separate directory)
2. Implement plugin registry for dynamic loading
3. Add plugin versioning strategy
4. Create plugin template generator
## Troubleshooting
### Import conflicts
```bash
go mod verify
go mod tidy
```
### Workspace issues
```bash
go work init
go work use ./...
```
### Version mismatches
```bash
go get -u ./...
go mod tidy
```