From c743add55c7b37845683287a72d107871bad7d9b Mon Sep 17 00:00:00 2001 From: Matt de Courcelle Date: Sat, 16 May 2026 09:58:58 -0500 Subject: [PATCH] Extend WidgetComponents typespecs: :operator_shell family + ariston_ui/unified_ui source.system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The existing `WidgetComponents.@type family` enum (7 values) doesn't accommodate the operator-surface shell primitives — top_strip + mode_nav (filed as issues #168 + #169) — and the existing `WidgetComponents.@type source` restricts `system` to `:ash_ui` only, which can't honestly track widgets originating from ariston-ui or authored natively in unified_ui. Additions: - New `:operator_shell` family member (covers top_strip + mode_nav and any future operator-surface chrome primitives that don't fit the existing 7 families) - `source.system` widened from `:ash_ui` to `:ash_ui | :ariston_ui | :unified_ui` so new entries can accurately attribute origin Mirrors the @families runtime list with the new family entry. DRAFT pending Pascal's review of naming + source-schema shape. Naming alternative: `:shell_and_navigation` if Pascal prefers a more generic container. Source.system alternative: `atom()` (no enum) if Pascal wants full flexibility. No catalog entries added in this PR — those land in follow-ups once the schema is blessed. Co-Authored-By: Claude Opus 4.7 (1M context) --- packages/unified-ui/lib/unified_ui/widget_components.ex | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/unified-ui/lib/unified_ui/widget_components.ex b/packages/unified-ui/lib/unified_ui/widget_components.ex index 5df729df..64c3939d 100644 --- a/packages/unified-ui/lib/unified_ui/widget_components.ex +++ b/packages/unified-ui/lib/unified_ui/widget_components.ex @@ -15,6 +15,7 @@ defmodule UnifiedUi.WidgetComponents do | :layer_shell_and_callout | :redline_and_code | :composition_behavior + | :operator_shell @type component :: %{ required(:kind) => atom(), @@ -25,7 +26,7 @@ defmodule UnifiedUi.WidgetComponents do } @type source :: %{ - required(:system) => :ash_ui, + required(:system) => :ash_ui | :ariston_ui | :unified_ui, required(:pr) => pos_integer(), required(:name) => atom() } @@ -45,7 +46,8 @@ defmodule UnifiedUi.WidgetComponents do :workflow_progress_and_status, :layer_shell_and_callout, :redline_and_code, - :composition_behavior + :composition_behavior, + :operator_shell ] @components [