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.
This release joins the cross-package hooks standardization initiative. artisanpack-ui/hooks (^1.3) is now a hard dependency, and the color-contrast pipeline fires three filter hooks that let applications override the WCAG threshold, extend the Tailwind color map, and take a final say on the generated text color.
ap.accessibility.contrastThreshold — (float $ratio, string $context). Fires inside WcagValidator::checkContrast() right before the ratio comparison, with the default WCAG threshold and a context string (aa, aa-large, aaa, aaa-large, non-text). Return a different float to bump every check globally (e.g. force AAA) without touching call sites.ap.accessibility.contrastColorMap — (array $map). Fires the first time AccessibleColorGenerator loads its Tailwind name → hex map, allowing apps to register custom palette entries or replace the map entirely.ap.accessibility.textColorGenerated — (string $color, string $bg, bool $tinted). Fires at every return path of AccessibleColorGenerator::generateAccessibleTextColor() (including cached results), giving apps an escape hatch to override the algorithm for specific backgrounds.artisanpack-ui/hooks: ^1.3 as a required dependency.This release introduces AI-powered accessibility tooling on top of artisanpack-ui/ai v1.0. The three new agents — content-level issue analysis, ARIA attribute suggestion, and plain-language contrast-failure explanation — are delivered with framework surfaces for Livewire, React, and Vue that ship inside this package, so extending framework support does not require any changes to [@artisanpack-ui](https://github.com/artisanpack-ui)/react or [@artisanpack-ui](https://github.com/artisanpack-ui)/vue.
^8.2 to ^8.3 to match the artisanpack-ui/ai foundation dependency. Users staying on PHP 8.2 should pin to ^2.1.2.illuminate/support constraint is now ^12.0|^13.0. All Laravel 11 versions (v11.0.0–v11.54.0) are currently blocked by published security advisories with no unblocked release available, so the matrix cannot be honestly claimed to support Laravel 11. Users staying on Laravel 11 should pin to ^2.1.2.artisanpack-ui/ai v1.0:
ContentAccessibilityAgent (a11y.content_analysis) — finds content-level issues (ambiguous link text, vague headings, undefined jargon) that static rules miss. Default model claude-sonnet-4-6.AriaSuggestionAgent (a11y.aria_suggestion) — suggests ARIA roles, states, and properties for custom components from their markup and behavior description. Default model claude-sonnet-4-6.ColorContrastExplanationAgent (a11y.contrast_explanation) — explains contrast failures in plain language and proposes accessible alternatives that preserve brand intent. Contrast math is computed locally; the model only reasons about the explanation and suggestions. Default model claude-haiku-4-5.[@artisanpack-ui](https://github.com/artisanpack-ui)/react or [@artisanpack-ui](https://github.com/artisanpack-ui)/vue:
a11y-ai-content-analysis, a11y-ai-aria-suggestion, a11y-ai-contrast-explanation).resources/js/react/ with a barrel export in resources/js/react/index.ts.resources/js/vue/./api/v1/a11y/ai/{content-analysis,aria-suggestion,contrast-explanation} for framework-agnostic callers.A11yServiceProvider::aiFeatures() and honors its own toggle through artisanpack-ui/ai's FeatureRegistry — trigger UIs surface FeatureDisabledException as a friendly message when the toggle is off.This release adds Laravel 13 support alongside the existing Laravel 11 and 12 compatibility, and modernizes the release pipeline so tagged versions publish to Packagist automatically.
illuminate/support framework constraint now resolves against ^11.44.1|^12.0|^13.0. The Laravel 11 lower bound is 11.44.1 to exclude versions covered by published security advisories on the framework; users staying on Laravel 11 should already be on 11.44.1 or later. Laravel 13 is only selectable on PHP 8.3+ via Laravel's own constraint — no PHP-floor bump is required..github/workflows/release.yml that triggers on v* tag pushes, runs the pre-release test suite, creates the GitHub Release with notes extracted from this changelog, and notifies the Packagist update-package API so the new version publishes without manual intervention.illuminate/support from suggest to a hard require so the multi-version framework constraint is enforced at install time. The Laravel integration layer (service provider, facade, HTTP/API controllers) has always required illuminate/support at runtime.orchestra/testbench to ^9.0|^10.2|^11.0, pestphp/pest to ^3.8|^4.0, and pestphp/pest-plugin-laravel to ^3.1|^4.0. The lock file still resolves to the Laravel 12 toolchain for local development; the CI matrix overrides per-row to exercise the other framework versions.README.md and docs/guides/getting-started.md to reflect Laravel 11/12/13.docs/guides/getting-started.md (auto-discovery is automatic on every supported Laravel version) and corrected the documented service-provider and facade class names to match the actual namespaces. The new manual-registration example uses AliasLoader::getInstance()->alias() from a service provider's register() method, which is the idiomatic approach in the streamlined Laravel 11+ app structure..github/workflows/ci.yml and dropped its tag trigger; ci.yml now only fires on pushes to main and pull requests targeting main.This release integrates the package with the core ArtisanPack UI package for a unified configuration structure.
accessibility.* to artisanpack.accessibility.* to align with the ArtisanPack UI ecosystemconfig/accessibility.php to config/artisanpack/accessibility.phpconfig to artisanpack-package-configmergeConfiguration() method in service provider to properly merge package defaults with user customizationsconfig('accessibility.*') to use config('artisanpack.accessibility.*') insteadconfig/accessibility.php, move it to config/artisanpack/accessibility.phpThis release focuses on developer experience improvements, including code style tooling, CI/CD enhancements, and documentation cleanup.
artisanpack-ui/code-style-pint (v1.0+) for standardized code style rulesresources/boost/guidelines/core.blade.php) for AI-assisted developmentgetToastDuration() function which was not implemented in the codebaseThis is a major release with a redesigned core, an expanded plugin system, first‑class reporting, theming and palette generation features, and a new HTTP/Laravel integration layer. It includes breaking changes for plugin authors and anyone consuming internal classes that were reorganized.
src/Plugins/Contracts (e.g., PluginInterface, PluginMetadata, Capability, Context, Report, ResultSet, AccessibilityRulePluginInterface, AnalysisToolPluginInterface, ColorFormatPluginInterface). Existing plugins must be updated to the new interfaces and the new ResultSet shape.src/Core; Laravel-specific integration under src/Laravel. Update any imports that referenced moved classes.config/accessibility.php and config/plugins.php were added; review and publish them if you use Laravel.AccessibilityScorer, PerceptualAnalyzer, ColorBlindnessSimulator, ReportGenerator, WcagValidator, constants and helpers.ArrayCache, FileCache, NullCache, and CacheManager.PaletteGenerator, ColorHarmony, and export formats (CssExporter, JsonExporter, ScssExporter, TailwindExporter) plus resources/tailwind-colors.php.ThemeGenerator, ThemeValidator, CssVariableParser.HtmlWriter, JsonWriter, MarkdownWriter), ComplianceReporter, ComplianceMonitor, TrendAnalyzer, AccessManager, Dashboard, TeamManager, CertificateGenerator, AuditTrail model and services.routes/api.php), controller (A11yApiController), form requests, Laravel service provider/facade, and a Blade view for certificates.audit:colors and palette:generate (see docs/commands.md).ContrastRulePlugin, updated ColorFormatHexPlugin, and LinksAnalysisTool with plugin.json manifests.docs/ (API, plugins, palette generation, theming, performance, WCAG compliance, framework‑agnostic usage, etc.)..gitlab-ci.yml).ResultSet structure.src/Core or src/Laravel, update imports accordingly.docs/ for details and examples.How can I help you explore Laravel packages today?