Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Radio Deck Laravel Package

jaocero/radio-deck

FilamentPHP plugin that upgrades the default radio field into selectable “card” options with icons, titles, and descriptions. Built for Filament v4 (Laravel 11, PHP 8.2+, Tailwind v4) with support via custom theme @source directive.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • UI/UX Enhancement: The package transforms Filament’s default radio buttons into visually rich, card-based components with icons, titles, and descriptions—ideal for improving user experience in admin panels where selection clarity is critical.
  • Component-Based Design: Leverages Filament’s form component ecosystem, ensuring seamless integration with existing Laravel/PHP applications.
  • Theming Compatibility: Requires a custom Filament theme (v4+), aligning with Filament’s modular styling approach. This enforces consistency but may require upfront theme configuration.

Integration Feasibility

  • Low-Coupling: The package extends Filament’s Radio component without modifying core Filament logic, reducing merge conflicts or breaking changes.
  • Tailwind CSS Dependency: Relies on Tailwind v4.0+ for styling, which is already a requirement for Filament v4. No additional CSS frameworks are needed.
  • Enum Support: Provides first-class support for Laravel/PHP enums, enabling type-safe, maintainable configurations (e.g., for multi-language or domain-specific options).

Technical Risk

  • Filament v4 Dependency: Requires Filament v4.x, which may not align with legacy projects using v3. Migration path exists but involves theme refactoring (see Migration Path).
  • Tailwind Customization Overhead: Custom theme setup is mandatory for v4, adding complexity for teams unfamiliar with Filament’s theming system.
  • State Management: Multi-select mode (->multiple()) introduces state complexity; ensure validation and form handling account for array returns.
  • Icon System: Depends on Heroicons (via Filament’s Icon system). Custom icons require alignment with Filament’s icon registry or manual CSS/JS overrides.

Key Questions

  1. Filament Version Alignment:

    • Is the project already on Filament v4? If not, what’s the migration timeline?
    • Are there legacy Filament v3 components that could conflict with this package?
  2. Theming Strategy:

    • Does the team have experience with Filament custom themes? If not, allocate time for theme setup and testing.
    • Will the package’s styles clash with existing Tailwind configurations?
  3. Performance Impact:

    • How many RadioDeck instances will be used per form? Large grids (e.g., columns(3)) may impact rendering performance.
    • Are there plans to lazy-load or paginate options for forms with >50 items?
  4. Accessibility:

    • Have the card-based interactions been tested with screen readers? Filament’s default radio buttons are WCAG-compliant; verify this package maintains compliance.
    • Are keyboard navigation and focus states adequately styled?
  5. Maintenance:

    • The package is actively maintained (last release: 2026-04-04), but dependents are zero. Is this a risk for long-term support?
    • Are there plans to backport fixes to Filament v3, or is v4-only acceptable?

Integration Approach

Stack Fit

  • Primary Use Case: Ideal for Filament-powered admin panels where radio buttons need visual hierarchy (e.g., feature toggles, multi-option selectors, or category pickers).
  • Alternatives Considered:
    • Filament’s Native Radio: Lacks icons/descriptions; this package adds UX value for complex options.
    • Custom Blade Components: More flexible but requires reinventing state management, validation, and theming.
  • Non-Filament Projects: Not directly applicable unless using Filament as a frontend layer (e.g., Laravel Livewire + Filament).

Migration Path

  1. Filament v3 → v4:

    • Step 1: Upgrade Filament to v4.x (follow official docs).
    • Step 2: Create a custom theme:
      php artisan make:filament-theme
      
    • Step 3: Migrate Tailwind config to use @source in theme.css (as per package docs).
    • Step 4: Replace Radio components with RadioDeck incrementally, testing form submissions and validation.
  2. Incremental Adoption:

    • Start with low-risk forms (e.g., settings pages) before applying to critical workflows (e.g., user onboarding).
    • Use feature flags to toggle RadioDeck visibility during testing.

Compatibility

  • Laravel/PHP: Compatible with Laravel 11.28+ and PHP 8.2+. Tested up to Laravel 13 (via changelog).
  • Tailwind CSS: Requires v4.0+. Conflicts unlikely if using Filament’s default Tailwind config.
  • Database/Validation: No direct DB changes, but ensure form validation rules handle multiple() mode (e.g., array vs. string types).

Sequencing

  1. Pre-requisites:
    • Upgrade Filament to v4.x.
    • Set up a custom theme and verify base styling.
  2. Core Integration:
    • Replace Radio with RadioDeck in forms, starting with non-critical fields.
    • Test single-select and multi-select modes separately.
  3. Advanced Customization:
    • Implement enum-based configurations for type safety.
    • Customize icons/colors per option if needed.
  4. QA:
    • Validate form submissions, edge cases (e.g., empty selections), and accessibility.
    • Performance-test forms with >20 options.

Operational Impact

Maintenance

  • Dependency Management:
    • Monitor jaocero/radio-deck for updates (MIT license allows forks if needed).
    • Pin versions in composer.json to avoid unexpected breaking changes.
  • Theme Updates:
    • Custom theme files (e.g., theme.css) may need updates if Filament or Tailwind versions change. Track Filament’s release notes.
  • Debugging:
    • Use Filament’s debug:view command to inspect RadioDeck Blade templates if styling issues arise.

Support

  • Troubleshooting:
    • Common issues:
      • Missing styles: Verify @source directive in theme.css and Tailwind rebuild (npx tailwindcss -i ...).
      • Icon display: Ensure Heroicons are properly registered in Filament’s icon set.
      • State persistence: Check for JavaScript conflicts if using multiple() mode.
    • Leverage Filament’s discord or GitHub issues for package-specific help.
  • Documentation:
    • The package’s README is comprehensive, but internal docs should capture:
      • Custom theme setup steps.
      • Example configurations for common use cases (e.g., enums, multi-column layouts).

Scaling

  • Performance:
    • Large Option Sets: For >50 options, consider:
      • Virtual scrolling (e.g., via Alpine.js or custom JS).
      • Server-side pagination of options (if fetched dynamically).
    • Memory: Each RadioDeck instance loads its own Blade view. Cache compiled views if using Filament’s view caching.
  • Concurrency:
    • No server-side scaling concerns; impact is UI-only. Test with high-traffic admin panels to monitor client-side rendering.

Failure Modes

Failure Scenario Impact Mitigation
Tailwind build fails Broken styles Add jaocero/radio-deck views to tailwind.config.js as fallback.
Custom theme misconfiguration Styles not applied Use Filament’s debug:view to verify template paths.
Multi-select state corruption Invalid form submissions Validate multiple() returns as arrays; use ->rules(['array']) in Filament.
Icon/heroicon conflicts Missing or incorrect icons Override icons via ->icons() or add custom Heroicons to Filament’s registry.
PHP 8.2+ compatibility issues Runtime errors Test with php -v and composer validate; pin PHP version in CI.

Ramp-Up

  • Developer Onboarding:
    • Time Estimate: 2–4 hours for initial setup (theme + first integration).
    • Key Tasks:
      1. Review Filament v4 theming docs.
      2. Set up a custom theme and test RadioDeck in a sandbox environment.
      3. Document internal patterns for RadioDeck usage (e.g., enum templates).
  • Team Training:
    • Focus on:
      • Differences between Radio and RadioDeck (e.g., multiple() behavior).
      • Tailwind customization for edge cases (e.g., dark mode).
  • CI/CD:
    • Add tests for:
      • Form submission with RadioDeck (single/multi-select).
      • Visual regression testing (e.g., using Percy or Storybook).
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
cadot.eu/make
besmartand-pro/php-quality-config
sentix/ai-chatbot
codifyo/ts-generator-bundle
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity
christhompsontldr/laravel-inky