diff --git a/web/routes/uix/components/dialog/+page.svelte b/web/routes/uix/components/dialog/+page.svelte index 667913359..43ee1508d 100644 --- a/web/routes/uix/components/dialog/+page.svelte +++ b/web/routes/uix/components/dialog/+page.svelte @@ -148,10 +148,17 @@
- Modal blocking surface. Eight parts; six events with the full
- asymmetric exit set (saved · cancelled · dismissed · dismissed-outside
- · failed) surfaced via data-last-action. Modal subset of
- intent — only neutral / risk /
+ Modal blocking surface. Eight parts; two events
+ (open + a polymorphic close) with the
+ full asymmetric exit set (saved · cancelled · dismissed ·
+ dismissed-outside · failed) surfaced via
+ data-last-action. The provider concretes the
+ close event's family at trigger time —
+ emerge.close (cancel / dismiss / dismiss-outside),
+ commit.save + fulfill (save) or
+ signal.alert + threat (fail) — per book §5.3
+ polymorphism. Modal subset of intent — only
+ neutral / risk /
threat; affirm / fulfill / loss are intentionally
off the table per the modal canon.
- Source: src/uix/morfo/components/dialog.ts. Six
- events surface five distinct exit reasons via
- data-last-action prewrites. open is intent-bound;
- close-cancel / close-dismiss / close-dismiss-outside drop the
- intent (backing out has no evaluative load); close-after-fail
- explicitly carries threat regardless of provider intent.
+ Source: src/uix/morfo/components/dialog.ts. Two
+ events — open (intent-bound via fromProp) and
+ a polymorphic close (book §5.3) with
+ allowedFamilies: ['emerge', 'commit', 'signal'].
+ The provider sets data-last-action imperatively
+ before each close and passes the concrete semantic per cause:
+ cancel / dismiss / dismiss-outside fire as plain emerge
+ (backing out has no evaluative load); save fires as
+ commit.save + fulfill; fail fires as signal.alert + threat
+ regardless of provider intent.
- Six events. open is fromProp-bound to the
+ Two events. open is fromProp-bound to the
provider's intent — a threat dialog opens with
- threat-flavoured perceptual weight. close-save consummates as
- fulfill (the user committed). close-cancel /
- close-dismiss-* drop intent (no evaluative load on backing
- out). close-after-fail explicitly hits threat regardless of
- provider intent. Click play to fire on the
- live dialog.
+ threat-flavoured perceptual weight. close is
+ polymorphic (book §5.3) — the table shows its declared
+ default family (emerge); the runtime swaps the
+ family per cause via opts.semantic in
+ dismissWith(): save → commit.save + fulfill;
+ cancel / dismiss / dismiss-outside → emerge.close (no
+ evaluative load on backing out); fail → signal.alert +
+ threat regardless of provider intent. Click
+ play to fire on the live dialog.