From e5883d279c10dc85bf753c39631cc98013435d4e Mon Sep 17 00:00:00 2001 From: Jordan Burke Date: Sat, 18 Apr 2026 20:49:30 -0400 Subject: [PATCH 1/5] feat: add CheckboxComponent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tri-state form checkbox (unchecked / checked / indeterminate) with optional label + caption. Matches Shipwright Pro's Checkbox atom. API: <%= render Shipwright::CheckboxComponent.new(name: "terms", label: "Accept") %> <%= render Shipwright::CheckboxComponent.new( name: "notify", label: "Email me", caption: "Weekly updates only", checked: true) %> <%= render Shipwright::CheckboxComponent.new( name: "delete", label: "Permanent", variant: :destructive) %> Props: - name: form field name - value: form field value (default "1") - label: optional visible label text - caption: optional secondary text beneath the label - checked: default false - indeterminate: default false (see note below) - disabled: default false - variant: :default (black) or :destructive (red) - label_position: :right (default) or :left - id: optional; auto-derives from name - class: consumer override on the