artisanpack-ui/accessibility
Laravel package adding accessibility-focused UI helpers for ArtisanPack apps—components, utilities, and sensible defaults to improve keyboard navigation, ARIA labels, focus states, and screen reader support with minimal setup.
Core Strengths:
Laravel-Specific Advantages:
<x-button> with auto-contrast text).config('artisanpack.accessibility.*') with mergeable defaults.audit:colors and palette:generate for automated accessibility checks in CI/CD pipelines.Weaknesses/Risks:
axe-core, pa11y).AuditTrail, CertificateGenerator) may introduce complexity for SMBs.PluginInterface, ResultSet) could increase onboarding friction for custom rule development.Laravel Ecosystem Fit:
bg-blue-500) are supported, reducing CSS-to-hex conversion overhead.Migration Path:
a11yGetContrastColor().config('accessibility.*') → config('artisanpack.accessibility.*') (v2.1.1+).enterprise_tables), but core functionality is database-agnostic.Compatibility:
TailwindExporter (v2.0.0+).Key Questions:
axe-laravel or pa11y.FileCache/ArrayCache).| Risk Area | Severity | Mitigation |
|---|---|---|
| Plugin API Complexity | Medium | Start with core features; defer custom plugins until needed. |
| Performance Overhead | Low | Cache contrast calculations; avoid runtime analysis for static assets. |
| Configuration Migration | Low | Use php artisan vendor:publish --tag=artisanpack-package-config to auto-generate config. |
| Enterprise Feature Bloat | Medium | Disable unused features (e.g., AuditTrail) via config. |
| Frontend Framework Lock-in | Low | API endpoints allow use with non-Laravel frontends (e.g., React via Inertia). |
AuditTrail); core functionality is DB-agnostic.<x-button> with auto-contrast).bg-blue-500)./api/a11y/contrast) for frontend validation.audit:colors for automated contrast checks (e.g., GitHub Actions).AccessibilityScorer in PHPUnit/Pest for unit tests.composer require artisanpack-ui/accessibility
php artisan vendor:publish --tag=artisanpack-package-config
// Before (v2.1.0)
config('accessibility.contrast_min_ratio');
// After (v2.1.1+)
config('artisanpack.accessibility.contrast_min_ratio');
a11yGetContrastColor():
// Before
$textColor = getContrastColor($bgColor); // Custom function
// After
$textColor = a11yGetContrastColor($bgColor);
<!-- Before -->
<button style="background: {{ $bgColor }}; color: {{ getContrastColor($bgColor) }}">
<!-- After -->
<x-button bg-color="{{ $bgColor }}">Click Me</x-button>
php artisan palette:generate --theme=dark
php artisan migrate --path=/vendor/artisanpack-ui/accessibility/database/migrations/enterprise
# .github/workflows/audit.yml
- name: Run Accessibility Audit
run: php artisan audit:colors --format=json > accessibility-report.json
| Integration Point | Compatibility | Notes |
|---|---|---|
| Blade Components | ✅ Full | Use <x-button> or custom components with a11yGetContrastColor(). |
| Tailwind CSS | ✅ Full | Supports Tailwind classes (e.g., bg-blue-500). |
| Livewire | ✅ Full | Dynamic theming works with wire:model + contrast validation. |
| Inertia/React/Vue | ✅ Partial | Use API endpoints (/api/a11y/contrast) for frontend validation. |
| CSS Variables | ✅ Partial | Requires CssVariableParser (v2.0.0+). |
| **Legacy PHP (7 |
How can I help you explore Laravel packages today?