From b414ec2b85a5e8ec34194aefab9677f0f50e9cb4 Mon Sep 17 00:00:00 2001 From: dev Date: Sat, 23 May 2026 14:04:43 +0200 Subject: [PATCH] =?UTF-8?q?docs(CONTINUE):=20refresh=20for=20next=20sessio?= =?UTF-8?q?n=20=E2=80=94=20#118=20+=20#120=20+=20#127=20closed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates CONTINUE.md to reflect the segunda-mitad sprint of 2026-05-23: the 7 commits between dc03773c and 0b55be5c that closed the menu indicator partial (#118), removed the unused modal prop (#127), and refactored 5 consumers to render ` + {/if} + {/snippet} + +``` -## Pendiente / en curso +Nota: si el wrapper tiene un prop llamado `child`, **renombra en destructure +a `outerChild`** — el `{#snippet child}` shadow infinite-loops si no. -### 1. Task #118 — Shared check/radio indicator recipe +**Regla 4 — Contracts cross-layer.** Si el dialog/popover/menu padre tiene +estado evaluativo (intent, color, status) que el Button hijo debe heredar, +el soma provider del Button-like part lo expone via `child({ props, ... })` +mediante `WithChildNoChildrenSnippetProps` para que `children` siga siendo +un Snippet plano: -**Problema:** los recipes `[data-checkbox][data-state='checked']`, -`[data-context-menu-checkbox-item][data-state='checked']::before` y -`[data-dropdown-menu-checkbox-item][data-state='checked']::before` redibujan -los indicadores (palomita rounded square / círculo radio) en bloques separados. +```ts +// soma types.ts +export type FooButtonProps = WithChildNoChildrenSnippetProps< + { id?: string }, + { intent: 'neutral' | 'risk' | 'threat' } // extra snippet props +>; -**Plan:** -- Crear un partial / sub-recipe compartido (e.g. `src/uix/eidos/lib/recipes/indicator.css` o sub-mixin en base.ts) con la geometría del check / radio dot. -- Importar desde checkbox.css, context-menu.css, dropdown-menu.css. -- Verificar también `Select.OptionIndicator` y `RadioGroup.Indicator` si aplican. +// soma provider.svelte.ts +readonly dialogIntent = $derived.by(() => this.dialog.opts.intent.current); -**No fusionar los componentes** — Checkbox / MenuCheckboxItem / MenuRadioItem son primitivas ARIA distintas (`role="checkbox"` vs `role="menuitemcheckbox"` vs `role="menuitemradio"`) con keyboard models distintos. Solo unificar el indicador visual. +// soma component +{@render child({ props: mergedProps, intent: state.dialogIntent })} +``` -### 2. Task #120 — Refactor restantes consumidores a `