{"id":30281893,"url":"https://github.com/codewithdennis/filament-advanced-choice-docs","last_synced_at":"2025-08-16T16:55:58.907Z","repository":{"id":303660357,"uuid":"1016261047","full_name":"CodeWithDennis/filament-advanced-choice-docs","owner":"CodeWithDennis","description":"A beautifully styled, fully customizable set of radio group components for FilamentPHP 4.","archived":false,"fork":false,"pushed_at":"2025-07-12T17:27:46.000Z","size":4626,"stargazers_count":13,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T01:38:24.030Z","etag":null,"topics":["filament-plugin","filament-plugins","filamentphp","filamentphp-4","filamentphp-plugin","laravel"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CodeWithDennis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"CodeWithDennis"}},"created_at":"2025-07-08T18:24:07.000Z","updated_at":"2025-08-02T18:03:17.000Z","dependencies_parsed_at":"2025-07-08T19:54:55.764Z","dependency_job_id":null,"html_url":"https://github.com/CodeWithDennis/filament-advanced-choice-docs","commit_stats":null,"previous_names":["codewithdennis/filament-advanced-choice-docs"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CodeWithDennis/filament-advanced-choice-docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWithDennis%2Ffilament-advanced-choice-docs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWithDennis%2Ffilament-advanced-choice-docs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWithDennis%2Ffilament-advanced-choice-docs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWithDennis%2Ffilament-advanced-choice-docs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CodeWithDennis","download_url":"https://codeload.github.com/CodeWithDennis/filament-advanced-choice-docs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CodeWithDennis%2Ffilament-advanced-choice-docs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270742017,"owners_count":24637503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["filament-plugin","filament-plugins","filamentphp","filamentphp-4","filamentphp-plugin","laravel"],"created_at":"2025-08-16T16:55:57.966Z","updated_at":"2025-08-16T16:55:58.868Z","avatar_url":"https://github.com/CodeWithDennis.png","language":null,"funding_links":["https://github.com/sponsors/CodeWithDennis"],"categories":[],"sub_categories":[],"readme":"# Filament Advanced Choice\n\nEnhance your **FilamentPHP 4** forms with 4 beautifully styled radio button components and 4 modern checkbox components. Each comes with user-friendly design to improve form usability and engagement.\n\n![thumbnail.png](art/thumbnail.png)\n\n[Live Demo](https://plugins.codewithdennis.com/admin/login)\n\n## Licences\nYou can buy a license for the plugin on the [AnyStack](https://checkout.anystack.sh/filament-advanced-choice) website.\n\n## Installation\n\nMake sure you add the following repository to your `composer.json` file:\n\n```json\n{\n    \"repositories\": [\n        {\n            \"type\": \"composer\",\n            \"url\": \"https://filament-advanced-choice.composer.sh\"\n        }\n    ],\n}\n```\n\nThen, run the following command to install the package:\n\n```bash\ncomposer require codewithdennis/filament-advanced-choice\n```\n\nTo activate your license, use your email address as the username. For the password, you must enter your license key followed immediately by your activation fingerprint — both are required.\n\n```bash \nLoading composer repositories with package information\nAuthentication required (filament-advanced-choice.composer.sh):\nUsername: info@codewithdennis.nl\nPassword: 8c210f8f-6173-3932-c4ba-8bcc723ef500:codewithdennis.nl\n```\n\nTo clarify, the license key and fingerprint should be separated by a colon (:).\n\n### Custom Theme\n\nYou will need to [create a custom theme](https://filamentphp.com/docs/3.x/panels/themes#creating-a-custom-theme) for the styles to be applied correctly.\n\nMake sure you add the following to your `theme.css` file.\n\n```bash\n@source '../../../../vendor/codewithdennis/filament-advanced-choice/resources/**/*.blade.php';\n```\n\n## Components\n\n### CheckboxList\n\nVertical list layout with descriptions for multiple selections.\n\n![basic_checkbox_list.png](art/basic_checkbox_list.png)\n\n```php\nCheckboxList::make('delivery_type')\n    -\u003esearchable()\n    -\u003ebulkToggleable()\n    -\u003eoptions([\n        'standard' =\u003e 'Standard Delivery',\n        'express' =\u003e 'Express Delivery',\n        'overnight' =\u003e 'Overnight Delivery',\n        'same_day' =\u003e 'Same Day Delivery',\n        'economy' =\u003e 'Economy Delivery',\n        'premium' =\u003e 'Premium Delivery',\n        'international' =\u003e 'International Delivery',\n        'local' =\u003e 'Local Delivery',\n    ])\n    -\u003edescriptions([\n        'standard' =\u003e 'Delivery within 5-7 business days',\n        'express' =\u003e 'Delivery within 2-3 business days',\n        'overnight' =\u003e 'Next day delivery available',\n        'same_day' =\u003e 'Delivery on the same day',\n        'economy' =\u003e 'Budget-friendly delivery option',\n        'premium' =\u003e 'Premium service with tracking',\n        'international' =\u003e 'Worldwide shipping available',\n        'local' =\u003e 'Same city delivery service',\n    ])\n    -\u003eextras([\n        'standard' =\u003e '$5.00 flat rate',\n        'express' =\u003e '$10.00 flat rate',\n        'overnight' =\u003e '$20.00 flat rate',\n        'same_day' =\u003e '$25.00 flat rate',\n        'economy' =\u003e '$3.00 flat rate',\n        'premium' =\u003e '$15.00 flat rate',\n        'international' =\u003e '$50.00 flat rate',\n        'local' =\u003e '$8.00 flat rate',\n    ]),\n```\n\n### CheckboxCards\n\nCard-based layout with descriptions and extras support for multiple selections.\n\n![basic_checkbox_cards.png](art/basic_checkbox_cards.png)\n\n```php\nCheckboxCards::make('delivery_type')\n    -\u003esearchable()\n    -\u003ebulkToggleable()\n    -\u003eoptions([\n        'standard' =\u003e 'Standard Delivery',\n        'express' =\u003e 'Express Delivery',\n        'overnight' =\u003e 'Overnight Delivery',\n        'same_day' =\u003e 'Same Day Delivery',\n        'economy' =\u003e 'Economy Delivery',\n        'premium' =\u003e 'Premium Delivery',\n        'international' =\u003e 'International Delivery',\n        'local' =\u003e 'Local Delivery',\n    ])\n    -\u003edescriptions([\n        'standard' =\u003e 'Delivery within 5-7 business days',\n        'express' =\u003e 'Delivery within 2-3 business days',\n        'overnight' =\u003e 'Next day delivery available',\n        'same_day' =\u003e 'Delivery on the same day',\n        'economy' =\u003e 'Budget-friendly delivery option',\n        'premium' =\u003e 'Premium service with tracking',\n        'international' =\u003e 'Worldwide shipping available',\n        'local' =\u003e 'Same city delivery service',\n    ])\n    -\u003eextras([\n        'standard' =\u003e '$5.00 flat rate',\n        'express' =\u003e '$10.00 flat rate',\n        'overnight' =\u003e '$20.00 flat rate',\n        'same_day' =\u003e '$25.00 flat rate',\n        'economy' =\u003e '$3.00 flat rate',\n        'premium' =\u003e '$15.00 flat rate',\n        'international' =\u003e '$50.00 flat rate',\n        'local' =\u003e '$8.00 flat rate',\n    ]),\n```\n\n### CheckboxStackedCards\n\nStacked card layout with descriptions and extras support for multiple selections.\n\n![basic_checkbox_stacked_cards.png](art/basic_checkbox_stacked_cards.png)\n\n```php\nCheckboxStackedCards::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003esearchable()\n    -\u003ebulkToggleable(),\n```\n\n### CheckboxTable\n\nResponsive table layout with descriptions for multiple selections.\n\n![basic_checkbox_table.png](art/basic_checkbox_table.png)\n\n```php\nCheckboxTable::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003esearchable()\n    -\u003ebulkToggleable(),\n```\n\n### RadioList\n\nVertical list layout with descriptions.\n\n![basic_radio_list.png](art/basic_radio_list.png)\n\n```php\nRadioList::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class),\n```\n\n### RadioTable\n\nResponsive table layout with descriptions.\n\n![basic_radio_table.png](art/basic_radio_table.png)\n\n```php\nRadioTable::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class),\n```\n\n### RadioCards\n\nCard-based layout with descriptions and extras support.\n\n![basic_radio_cards.png](art/basic_radio_cards.png)\n\n```php\nRadioCards::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class),\n```\n\n### RadioStackedCards\n\nStacked card layout with descriptions and extras support.\n\n![basic_radio_stacked_cards.png](art/basic_radio_stacked_cards.png)\n\n```php\nRadioStackedCards::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class),\n```\n\n## Additional Features\n\n### Searchable Options\n\nAll checkbox components support searchable functionality to help users find options quickly in large lists.\n\n```php\nCheckboxList::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003esearchable()\n    -\u003esearchPrompt('Search delivery types...')\n    -\u003enoSearchResultsMessage('No delivery types found.')\n```\n\n### Disabling Specific Options\n\nYou can disable specific options based on conditions using the `disableOptionWhen()` method.\n\n```php\nCheckboxList::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003edisableOptionWhen(fn (string $value): bool =\u003e $value === 'premium')\n```\n\n### Bulk toggling checkboxes\n\nCheckbox components support bulk select/deselect actions for better user experience.\n\n```php\nCheckboxList::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003ebulkToggleable()\n```\n\n## Enum Support\n\nYou can use PHP enums with all components. When using enums, you need to implement Filament's `HasLabel` and `HasDescription` interfaces, plus the `HasExtra` interface from this package to provide labels, descriptions, and extras.\n\nFirst, create your enum implementing the required interfaces:\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📋 Enum Implementation Code\u003c/strong\u003e\u003c/summary\u003e\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nnamespace App\\Enums;\n\nuse CodeWithDennis\\FilamentAdvancedChoice\\Filament\\Interfaces\\HasExtra;use Filament\\Support\\Contracts\\HasDescription;use Filament\\Support\\Contracts\\HasLabel;\n\nenum DeliveryTypeEnum: string implements HasDescription, HasExtra, HasLabel\n{\n    case Standard = 'standard';\n    case Express = 'express';\n    case Overnight = 'overnight';\n    case SameDay = 'same_day';\n    case Economy = 'economy';\n    case Premium = 'premium';\n    case International = 'international';\n    case Local = 'local';\n\n    public function getLabel(): string\n    {\n        return match ($this) {\n            self::Standard =\u003e __('Standard Delivery'),\n            self::Express =\u003e __('Express Delivery'),\n            self::Overnight =\u003e __('Overnight Delivery'),\n            self::SameDay =\u003e __('Same Day Delivery'),\n            self::Economy =\u003e __('Economy Delivery'),\n            self::Premium =\u003e __('Premium Delivery'),\n            self::International =\u003e __('International Delivery'),\n            self::Local =\u003e __('Local Delivery'),\n        };\n    }\n\n    public function getDescription(): string\n    {\n        return match ($this) {\n            self::Standard =\u003e __('Delivery within 5-7 business days'),\n            self::Express =\u003e __('Delivery within 2-3 business days'),\n            self::Overnight =\u003e __('Next day delivery available'),\n            self::SameDay =\u003e __('Delivery on the same day'),\n            self::Economy =\u003e __('Budget-friendly delivery option'),\n            self::Premium =\u003e __('Premium service with tracking'),\n            self::International =\u003e __('Worldwide shipping available'),\n            self::Local =\u003e __('Same city delivery service'),\n        };\n    }\n\n    public function getExtra(): ?string\n    {\n        return match ($this) {\n            self::Standard =\u003e __('$5.00 flat rate'),\n            self::Express =\u003e __('$10.00 flat rate'),\n            self::Overnight =\u003e __('$20.00 flat rate'),\n            self::SameDay =\u003e __('$25.00 flat rate'),\n            self::Economy =\u003e __('$3.00 flat rate'),\n            self::Premium =\u003e __('$15.00 flat rate'),\n            self::International =\u003e __('$50.00 flat rate'),\n            self::Local =\u003e __('$8.00 flat rate'),\n        };\n    }\n}\n```\n\n\u003c/details\u003e\n\nThen use it in your form:\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📋 Form Usage Code\u003c/strong\u003e\u003c/summary\u003e\n\n```php\nuse App\\Enums\\DeliveryTypeEnum;\nuse CodeWithDennis\\FilamentAdvancedChoice\\Filament\\Forms\\Components\\RadioStackedCards;\n\npublic static function configure(Schema $schema): Schema\n{\n    return $schema\n        -\u003ecolumns(1)\n        -\u003ecomponents([\n            RadioStackedCards::make('delivery_type')\n                -\u003eoptions(DeliveryTypeEnum::class),\n        ]);\n}\n```\n\n\u003c/details\u003e\n\n## Customization\n\n### Input Visibility\n\nControl whether the inputs are visible or hidden.\n\n```php\nCheckboxCards::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003ehiddenInputs()\n```\n\n```php\nCheckboxCards::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003evisibleInputs()\n```\n\n### Colors\n\nAll components support custom colors using Filament's color system. The default color is `primary`, but you can customize it to any of Filament's supported colors.\n\n#### Using Color Enums (Recommended)\n\n```php\nuse Filament\\Support\\Colors\\Color;\n\nCheckboxCards::make('delivery_type')\n    -\u003eoptions(DeliveryTypeEnum::class)\n    -\u003ecolor(Color::Amber)\n```\n\n### Code Distribution\nLicenses strictly prohibit the public distribution of its source code. This means you are not permitted to use Filament Advanced Choice to build an application and then distribute that application publicly through open-source repositories, hosting platforms, or any other code-sharing platforms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewithdennis%2Ffilament-advanced-choice-docs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodewithdennis%2Ffilament-advanced-choice-docs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodewithdennis%2Ffilament-advanced-choice-docs/lists"}