Skip to content

Add canonical collection_picker component - #130

Merged
pcharbon70 merged 1 commit into
mainfrom
claude/widget-bundle-rail-wave-3-7-b
May 21, 2026
Merged

pcharbon70 merged 1 commit into
mainfrom
claude/widget-bundle-rail-wave-3-7-b

Conversation

@ty13r

@ty13r ty13r commented May 18, 2026 •

Copy link
Copy Markdown
Member

Summary

Reworks the original app-specific bundle_rail draft into a canonical collection_picker component.

The rail remains the existing canonical right_rail; collection_picker is a reusable form_control_and_composer widget that can be placed inside that rail or any other host-owned surface. Canonical attrs stay generic and renderer-neutral: no bundle-specific fields, Ariston names, route helpers, LiveView event names, or phx-* fields are stored in IUR.

Architecture Decisions

  • collection_picker is now first-class in Unified IUR, Unified UI DSL/catalog/lowering, Live UI rendering, Ash UI canonical conversion, and resource admission.
  • The old bundle_rail concern is handled as composition: host apps use right_rail plus collection_picker, rather than adding a second canonical rail primitive.
  • Drag/drop remains semantic interaction intent at the canonical layer; renderer-specific phx-* attributes are created only at the Live UI boundary.
  • Items, filters, and suggestions use generic id/label maps. App-specific item cards remain app-owned composition, not canonical picker payload.
  • density is a semantic prop on the picker, not a hard-coded width or theme decision.

What Changed

  • Added UnifiedIUR.Widgets.Components.collection_picker/1 and validation for the canonical shape.
  • Added Unified UI DSL admission, verifier rules, compiler lowering, and catalog coverage.
  • Added a native Live UI CollectionPicker component and renderer mapping from canonical interactions to renderer attrs.
  • Added Ash UI adapter and fallback rendering support.
  • Updated widget docs/specs/examples and canonical component contracts.
  • Added missing Phase 32/33 conformance traceability discovered while running the full suite.

Verification

  • mix test - 1064 tests, 0 failures
  • mix ash_ui.examples.validate
  • bash ./scripts/validate_specs_governance.sh
  • git diff --check
  • Explicit mix format --check-formatted ... over touched Elixir files
  • mix spec.next / mix spec.check --base HEAD attempted; these Mix tasks are not wired in this checkout

@pcharbon70
pcharbon70 force-pushed the claude/widget-bundle-rail-wave-3-7-b branch from 5bb5d4a to 61f61ee Compare May 20, 2026 18:42
@pcharbon70 pcharbon70 changed the title feat(live_ui): add BundleRail widget Phoenix.Component (Wave 3.7-B Stage-4, DRAFT, Pascal-review REQUIRED) Add canonical collection_picker component May 20, 2026
@pcharbon70
pcharbon70 marked this pull request as ready for review May 20, 2026 18:43
@pcharbon70
pcharbon70 merged commit fedb02e into main May 21, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants