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

Filament Advanced Choice Laravel Package

codewithdennis/filament-advanced-choice

Adds 8 advanced Filament form fields: radio- and checkbox-based card/stacked card variants plus enhanced CheckboxList with descriptions and extras. Supports Filament v4/v5 and integrates into custom themes via @source for proper styling.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Pros:

    • Filament-Native: Designed specifically for Filament 4/5, leveraging its existing form component architecture (Radio/CheckboxList). Minimal abstraction overhead.
    • Component Granularity: Eight distinct field types (4 radio, 4 checkbox) cater to diverse UX needs (cards, tables, lists, stacked layouts). Aligns with Filament’s modular philosophy.
    • Enum Integration: Supports Filament’s HasLabel, HasDescription, and custom HasExtra interfaces, enabling type-safe, maintainable configurations. Reduces boilerplate for complex forms.
    • Theming Compatibility: CSS source inclusion ensures visual consistency with custom Filament themes. No forced global styles.
    • Bulk Actions/Search: Inherits Filament’s searchable()/bulkToggleable() APIs, reducing custom implementation effort for common patterns.
  • Cons:

    • Tight Coupling: Hard dependency on Filament’s form system. Not reusable outside Filament contexts (e.g., Livewire, Inertia, or vanilla Blade).
    • Limited Validation Hooks: Relies on Filament’s validation pipeline; custom validation logic must be implemented via Filament’s existing methods (e.g., rules()).
    • No Server-Side Rendering: Assumes client-side rendering (Vite/Tailwind). May require adjustments for SSR-heavy stacks.

Integration Feasibility

  • Low-Friction Adoption:
    • Composer Install: Single composer require command. No database migrations or schema changes.
    • Theme Integration: Minimal CSS setup (1 line for source inclusion + npm run build). No breaking changes to existing themes.
    • Backward Compatibility: Deprecated plural aliases (RadioCards) ensure smooth upgrades.
  • Dependency Risks:
    • Filament Version Lock: Requires Filament 4/5. Potential conflicts if using older versions or Filament plugins with overlapping form components.
    • Tailwind/Vite Dependency: Assumes Tailwind CSS and Vite for asset compilation. May need polyfills for alternative setups (e.g., Laravel Mix).

Technical Risk

  • Medium Risk:

    • Stability: 98 stars but limited dependents (0). No major issues reported in releases, but lack of production-scale adoption is a red flag.
    • Maintenance: Actively maintained (last release: 2026-05-08), but small contributor base (1 core maintainer + occasional PRs).
    • Edge Cases:
      • Repeater Compatibility: Fixed in v1.0.6, but test thoroughly if using Filament’s repeaters.
      • Nested Forms: No explicit documentation on nested form support (e.g., within tabs or collapsibles). Validate with complex UIs.
      • Accessibility: Relies on Filament’s base accessibility; test with screen readers if compliance is critical.
  • Key Questions:

    1. Filament Version: Is the project locked to Filament 4/5, or is there flexibility to upgrade/downgrade?
    2. Customization Limits: Can the package’s styling/behavior be overridden without forking? (e.g., Blade template overrides).
    3. Performance: How do these components perform with large option sets (e.g., 50+ items)? Test memory/rendering impact.
    4. Localization: Does the package support Filament’s localization system for labels/descriptions? (Yes, via getLabel()/getDescription() methods.)
    5. Audit Trails: How are changes to these fields logged in Filament’s audit logs? (Depends on Filament’s base implementation; no custom hooks exposed.)
    6. Future-Proofing: Are there plans to add server-side rendering support or Inertia/Livewire compatibility?

Integration Approach

Stack Fit

  • Ideal For:
    • Filament-Powered Admin Panels: CMS backends, e-commerce dashboards, SaaS management tools.
    • Internal Tools: Employee portals, HR systems, or any Filament-based self-service platforms.
    • Forms with Rich UX: Subscription tiers, order customization, or multi-step workflows where visual hierarchy matters.
  • Less Suitable:
    • Non-Filament Projects: Cannot be used outside Filament’s form system.
    • Highly Dynamic Forms: If options are generated entirely client-side (e.g., via API calls), additional logic is needed to sync with Filament’s state management.

Migration Path

  1. Assessment Phase:
    • Audit existing Filament forms to identify candidates for replacement (e.g., verbose Select fields with descriptions, custom-built radio/checkbox grids).
    • Prioritize forms with:
      • Multiple options needing descriptions/extras.
      • Search/bulk-select requirements.
      • Complex layouts (cards, tables).
  2. Pilot Implementation:
    • Replace one form component (e.g., a subscription plan selector) using RadioCard.
    • Test edge cases: validation, nested forms, repeater compatibility.
  3. Rollout Strategy:
    • Phase 1: Replace static forms (e.g., settings pages).
    • Phase 2: Migrate dynamic forms (e.g., order customization).
    • Phase 3: Standardize across all Filament resources using a custom trait or base form class.

Compatibility

  • Filament Plugins: May conflict with plugins introducing similar form components (e.g., filament-spatie-laravel-medialibrary). Test for namespace/class collisions.
  • Custom Form Components: If extending Filament’s form system, ensure the package’s components don’t override or duplicate existing logic.
  • Legacy Code: Deprecated plural aliases (RadioCards) allow gradual migration but should be phased out post-adoption.

Sequencing

  1. Prerequisites:
    • Upgrade to Filament 4/5 if not already using it.
    • Ensure Tailwind CSS and Vite are configured (or adapt for alternative setups).
  2. Installation:
    composer require codewithdennis/filament-advanced-choice
    
    Add CSS source to resources/css/filament/app.css:
    @source '../../../../vendor/codewithdennis/filament-advanced-choice/resources/**/*.blade.php';
    
    Rebuild assets:
    npm run build
    
  3. Testing:
    • Validate all 8 component types in a staging environment.
    • Test with:
      • Enums vs. arrays.
      • Search functionality.
      • Bulk actions (checkbox-only).
      • Nested forms/repeaters.
  4. Documentation:
    • Create internal runbooks for:
      • Component configuration (e.g., RadioCard vs. RadioTable tradeoffs).
      • Troubleshooting (e.g., missing styles, disabled options).
      • Customization (e.g., overriding Blade templates).

Operational Impact

Maintenance

  • Pros:
    • Minimal Overhead: No server-side logic; purely UI-layer changes.
    • Centralized Updates: Single Composer package to update. No forking required.
    • Filament Ecosystem: Bug fixes/updates aligned with Filament’s release cycle.
  • Cons:
    • Dependency Bloat: Adds ~100KB of JS/CSS per page (estimate). Monitor bundle size.
    • Theme Drift: Custom styles may break across Filament updates. Test with major versions.
    • Support Gaps: Limited official documentation for advanced use cases (e.g., custom validation).

Support

  • Internal Resources:
    • Training: Document component-specific quirks (e.g., hiddenInputs() behavior, enum requirements).
    • Debugging: Provide examples for common issues (e.g., disabled options not rendering correctly).
  • External Support:
    • GitHub Issues: Active maintainer but small community. Prioritize clear, reproducible bug reports.
    • Filament Forums: Leverage Filament’s community for broader troubleshooting.

Scaling

  • Performance:
    • Large Option Sets: Test rendering performance with >100 options. Consider lazy-loading or pagination for searchable fields.
    • Memory: No server-side impact; client-side only. Monitor Vite build times with many components.
  • Concurrency:
    • Stateless components; no race conditions. Safe for multi-user Filament panels.
  • Horizontal Scaling: No impact on Laravel’s scaling capabilities.

Failure Modes

Failure Scenario Impact Mitigation
CSS/JS build fails Broken UI Add npm run dev to CI/CD pipeline; monitor build logs.
Filament update breaks compatibility Component rendering issues Test with Filament’s beta releases; use version constraints in composer.json.
Custom enum implementation errors Runtime errors Validate enums with HasLabel, HasDescription, and HasExtra interfaces.
Repeater compatibility issues Forms not saving in repeaters Use the latest package version (v1.0.6+).
Search functionality broken UX degradation Test search with special
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.
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle