Add input groups to the app builder, allowing users to organize widgets
into named collapsible groups with drag-and-drop reordering, side-by-side
pairing, and cross-group item movement.
- InputGroupAccordion: Reka UI Collapsible component with rename,
ungroup confirmation dialog, builder/app mode rendering
- inputGroupStore: Pinia store with full CRUD, persistence to
linearData, auto-delete empty groups, pair management
- useGroupDrop: pragmatic-drag-and-drop directives for within-group
reorder, cross-group moves, and DraggableList mouseup bridge
- useInputGroups: pure functions for resolving items, auto-naming,
pair grouping
- itemKeyHelper: key format utilities for input/group item keys
- UngroupConfirmDialog: extracted Reka UI Dialog component
- PopoverMenuItem: local type replacing PrimeVue MenuItem import
- "Add to group" / "New group" in widget context menu
- "Create group" button pinned at bottom (builder mode)
- Drag ungrouped inputs into groups, drag out to ungroup
- 56 unit tests across 4 test files
Follow-up: Unified ordering of ungrouped inputs and groups (reorder/swap
positions between them) is scoped for a separate PR to keep LOC manageable.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>