@ -728,16 +728,26 @@ time-picker + morfo: **65/65**. Navegador: langs ES + transición de los 4 input
familia close defiere a los defaults de Button (solid/primary), sin hardcodear
ghost/neutral (banner ajustado). **Familia close COMPLETA** (dialog·drawer·popover·
banner·toast·float-panel), 4 commits, verificada en navegador.
- ⏳ **Pendiente del Lote A** (más delicado — handoff):
- **calendar/range prev/next** (× 4) → `IconButton` +`SvgChevron`. **Riesgo de layout** :
`--_calendar-control-size` lo comparten el botón Y la **columna del grid** (`grid-template-
columns: ctrl minmax(0,1fr) ctrl`), así que el size se queda (grid) y solo el chrome se
va; `:focus-visible` /`:disabled` son selectores **compartidos** con month-select/year-
select/day (extraer prev/next sin tocar el resto). Verificar el layout del header en
navegador tras migrar. Borrar `--calendar-control-{border,bg,color,hover,...}` (NO
`--calendar-control-size` ).
- **code-block copy** → componer `<Clipboard>` (cierra también su hardcode de langs
"Copy code to clipboard"; el botón reimplementa el comportamiento de clipboard).
- ⏳ **Pendiente del Lote A** (más delicado — handoff con scoping profundo):
- **calendar/range prev/next** (× 4) → `IconButton` +`SvgChevron`. Scoping verificado:
(1) **recipe NO se toca** — `--calendar-control-{border,bg,color,radius,hover,...}` los
comparten prev/next Y los month/year-select (CSS 201-234), y `--_calendar-control-size`
lo usan grid (119) + selects (204) → **cero orphans** al migrar solo prev/next.
(2) **Quitar** el chrome de prev/next (CSS 156-182) + extraer prev/next de los selectores
**compartidos** `:focus-visible` (184) y `:disabled` (193) sin tocar month/year-select+day.
(3) **Size** : las flechas deben escalar con el calendario; NO hay contexto eidos →
crear `calendar-context.ts` + `range-calendar-context.ts` (patrón carousel-context) que
propaguen el size; mapear calendar-size→IconButton-size (control-size-md = control-height-sm,
hay offset de un paso). (4) Grid: dejar la columna en `--_calendar-control-size` o pasar a
`auto` . (5) El **demo pasa el chevron como texto** (`< Calendar.PrevButton > < </ ... > `) →
actualizar el demo para mostrar `SvgChevron` . ~12 ficheros (calendar + range-calendar).
- **code-block copy** → componer `<Clipboard>` . Scoping: `<Clipboard value={codeText}>`
con `codeText = codeRef.textContent` (dinámico, reactivo al montar el `<code bind:this>` );
`<Clipboard.Trigger>` (compone Button) + `<Clipboard.Indicator>` reemplazan el botón único
que togglea "Copy"/"Copied" → **cambio de UX** (trigger + indicator). Quitar `handleCopy` /
`copied` /`copyTimer`/`onDestroy` (Clipboard los posee) + el chrome `[data-code-block-copy]`
(CSS 76-108) + adaptar el layout del header (el wrapper Clipboard vs el botón). Cierra el
hardcode de langs (Clipboard posee su label).
- **float-panel `action` + `stage-trigger`** (los "controles"): mismo patrón que la
migración del close, pero no son closes — opcional, comparten chrome propio coherente.
2. **DIM 1 — Lote B** (estructural): 6 `<select>` nativos → `<Select>` (calendar