rias/statamic-button-box
A Statamic addon that provides a Button Box fieldtype for building groups of configurable call-to-action buttons in the control panel. Editors can add button labels, links, and styling options, then reuse the button set across pages and templates for consistent CTAs.
What the package actually is. rias/statamic-button-box is a Statamic addon that provides a Control Panel fieldtype: instead of a dropdown or radio list, editors pick from a set of rendered buttons. "Create beautiful choices for your clients" is an accurate description — it is an editorial UX affordance layered over a scalar field value. There is no data store, no API surface, no front-end rendering, no query layer. This scope is the most important fact in the evaluation, because it caps both the upside and the blast radius.
Architecture fit. The package is only meaningful inside a Laravel application that already runs Statamic. It follows standard addon conventions: a service provider registering the Fieldtype, a Vue component for the publish form, and a config/options array declared in the blueprint. Stored values are content-file YAML like any other fieldtype. If the estate is Laravel-without-Statamic, or Statamic is being evaluated rather than already adopted, this package is not a factor in the decision — it is a garnish, not an ingredient.
Integration feasibility. High, and cheap. composer require, addon registration, then swap type: select for type: button_box in a blueprint or fieldset and supply options. Realistic effort is hours of developer time, dominated by verifying the version matrix rather than by the integration itself. This is a one-ticket change, not a workstream.
Technical risk. Low severity, moderate uncertainty.
composer.json rather than inferred.Key questions to close before adoption.
select fieldtype would persist? (If yes, the change is reversible and content stays portable.)Stack fit. Adopt only if Statamic is already the CMS. There is no partial-fit scenario: the package cannot be used in a plain Laravel admin, and it does not improve anything an application-owner would see.
Migration path. Minimal and reversible, which is the strongest argument for trying it. Introduce it first as a new field on a low-traffic blueprint rather than converting existing fields. Because the underlying stored value should be equivalent to a select, converting an existing field is a blueprint YAML edit with no content rewrite — and rolling back is the same edit in reverse. Verify the value serialization on staging before assuming that reversibility holds.
Compatibility. Pin the addon version explicitly in composer.json rather than floating it; an abandoned-but-pinned package is an annoyance, an abandoned-but-floating one is an incident. Confirm the addon ships prebuilt CP assets so it does not impose a Node build step on the host application. Confirm the fieldset compiles and the publish form renders before touching production blueprints.
Sequencing.
composer.json and the source directly — version constraints, license, stored-value format. Half a day, and it settles most of the risk.type back) and the pinned version so a future upgrade does not silently strand it.Maintenance. Low routine cost, with a known spike on Statamic majors. The realistic budget is a few hours per CMS upgrade to verify the CP component still renders, plus normal composer update hygiene. The material risk is not effort — it is that nobody notices the fieldtype has broken until an editor reports a blank field.
Support. No vendor SLA. Upstream support is GitHub issues on a 2-star repository with one maintainer; assume self-service. The internal owner should be whoever owns the CMS, and they should be able to read the fieldtype source — it is small. The larger support cost is editor-facing, not developer-facing: buttons invite more "which one do I pick" questions than a dropdown, so pair the rollout with a short note in the editorial docs. For a tool literally pitched at "your clients," that is the recurring cost to plan for.
Scaling. Negligible. Control Panel only — no front-end query, no caching implications, no effect on request latency or content API throughput. It scales with the number of editors, not the number of requests, and editor counts are small.
Failure modes.
select; not introduced by this package, but button grids make it easier to forget that labels and values are separate.composer.lock is still an unmaintained entry. Periodic review, not active monitoring.Ramp-up. Developers: hours. Editors: low to moderate, and mostly about confidence rather than capability — the buttons must be visibly equivalent to the choices they replaced. Given the 30.97 opportunity score, the correct posture is a cheap, reversible, well-pinned trial on one section, treated as UX polish rather than a dependency worth architecting around.
How can I help you explore Laravel packages today?