artisanpack-ui/forms
ArtisanPack UI Forms provides Laravel form components and helpers for building consistent, accessible forms with Blade. It streamlines form rendering, validation display, and styling so you can create maintainable interfaces faster.
layout: 'inline' option on FormRenderer makes the canonical high-intent pattern — one email field plus a Subscribe button on a single line — a supported, first-class configuration rather than a bespoke stylesheet every team rewrites. This directly de-risks newsletter capture, waitlist signups, and inline CTA blocks in marketing pages and landing templates.submitClassName (applied in both layouts) lets a host application pass its own design tokens — e.g. wp-element-button in a WordPress-adjacent stack, or an internal btn btn-primary primitive — instead of fighting package defaults. This is the deciding argument when the alternative is either (a) building a form renderer in-house to get button-level styling control, or (b) adopting the package and then shipping a CSS override layer you have to maintain forever.submitClassName is additive and the default stacked output is explicitly unchanged, adopting v1.5.2 is safe to slot into an in-flight design-system migration without a freeze on form work. You can adopt the hook now and defer the visual migration.layout. If your roadmap includes wizard-style onboarding or checkout flows, do not assume this release moves that needle; keep multi-step UX scoped separately.FormLayout type export and matching layout prop on FieldRenderer mean typed wrappers and internal component libraries can pass layout through without any casts — a small but real velocity and correctness gain for teams with a shared component layer.Consider adopting when:
layout: 'inline' or the default stacked covers the requirement outright.submitClassName is the pressure valve here.Look elsewhere, or supplement, when:
layout is explicitly ignored there; this release adds nothing to that surface, and you should not let a form-package decision be justified by multi-step needs it does not serve.inline is a one-row, button-shares-the-row primitive with a 12rem field minimum and wrap behavior — deliberately narrow. Complex responsive form composition still argues for a dedicated builder or bespoke components.For executives: This is a low-risk, additive release to a package we already depend on for form rendering. It removes a recurring source of custom frontend work — every team hand-styling a one-line email-plus-button signup — and lets forms inherit our design system's button styles through a single supported prop instead of a maintained CSS override layer. There are no breaking changes: the default rendered output is unchanged, so there is no migration cost and no regression risk to existing pages. The business value is faster shipping of conversion-oriented signup surfaces and less bespoke frontend maintenance.
For engineering leads: v1.5.2 is non-breaking and additive. FormRenderer (React and Vue) gains two optional props — layout: 'stacked' | 'inline' defaulting to 'stacked', and submitClassName appended to the submit button in both layouts. layout: 'inline' places the submit button as the last item in the field row, bottom-aligned, non-growing, without its own wrapper <div>; full-width fields clamp to a 12rem minimum capped at row width so narrow rows wrap rather than overflow. Multi-step forms ignore layout entirely. TypeScript consumers get a new FormLayout type and a matching layout prop on FieldRenderer. Recommendation: adopt now to unblock design-system button integration and retire local override CSS; keep multi-step form work scoped separately, since this release does not touch it. Validate inline wrapping behavior at your narrowest supported breakpoint before standardizing on it in shared templates.
How can I help you explore Laravel packages today?