From f20efd468137033b1917ba6a16c9069befebb7e6 Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 24 Jun 2026 20:26:43 +0200 Subject: [PATCH] fix(eidos): picker triggers flush via field-trigger archetype + footer follows picker size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two picker-coherence fixes: 1. Field-trigger flush treatment — popover.css excluded the picker's generic button envelope only for `[data-field-control-trigger]`. The time-picker / time-range-picker clock icons carry `data-{component}-trigger` (NOT the field-control marker), so they still got the popover button border/bg — looking like a bordered button instead of a flush field icon. The exclusion now keys off the `field-trigger` archetype, which the morfo/soma stamp on EVERY picker trigger; added the missing override to time-range-picker. All five pickers verified: date / time / time-range / date-range render a flush 28px icon; color renders its own field-box (its border is the field's, not the popover envelope's). 2. Footer follows picker size — picker-shell Clear/Cancel/Close were pinned to `size="xs"`, so md/lg pickers had a tiny incoherent footer. New shared `picker-shell/visual-context` lets each picker publish its resolved size; the footer buttons read it (fallback xs). Wired into all five pickers. Verified: at picker md the footer buttons are md (36px). svelte-check clean. Excludes words/palabras/chronos. Co-Authored-By: Claude Opus 4.8 --- .../color-picker/color-picker.svelte | 3 +++ .../components/date-picker/date-picker.svelte | 3 +++ .../date-range-picker.svelte | 3 +++ .../picker-shell/picker-shell-cancel.svelte | 10 ++++--- .../picker-shell/picker-shell-clear.svelte | 7 +++-- .../picker-shell/picker-shell-close.svelte | 11 ++++---- .../components/picker-shell/visual-context.ts | 26 +++++++++++++++++++ src/uix/eidos/components/popover/popover.css | 22 +++++++++------- .../components/time-picker/time-picker.svelte | 3 +++ .../time-range-picker.svelte | 3 +++ .../time-range-picker-trigger.svelte | 2 ++ 11 files changed, 72 insertions(+), 21 deletions(-) create mode 100644 src/uix/eidos/components/picker-shell/visual-context.ts diff --git a/src/uix/eidos/components/color-picker/color-picker.svelte b/src/uix/eidos/components/color-picker/color-picker.svelte index 356ecd61e..432658bbb 100644 --- a/src/uix/eidos/components/color-picker/color-picker.svelte +++ b/src/uix/eidos/components/color-picker/color-picker.svelte @@ -8,6 +8,7 @@ import { ActiveEidos } from '$uix/eidos'; import * as ColorPicker from '$soma/components/color-picker'; import { setColorPickerVisualContext } from './context.svelte'; + import { setPickerShellVisual } from '$uix/eidos/components/picker-shell/visual-context'; import type { ColorPickerProps } from './types'; let { @@ -30,6 +31,8 @@ getVariant: () => variant, getColor: () => color }); + // Footer controls follow the picker size. + setPickerShellVisual({ getSize: () => resolvedSize }); variant, getColor: () => color }); + // Footer controls (Clear / Cancel / Close) follow the picker size. + setPickerShellVisual({ getSize: () => resolvedSize }); variant, getColor: () => color }); + // Footer controls follow the picker size. + setPickerShellVisual({ getSize: () => resolvedSize }); ` at - // size='xs' so the safe-escape action stays visually subordinate to - // the solid primary Close. + // and closes the popover. Visual: ghost neutral `