You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/docs/audit/components/search-field.md

11 KiB

search-field — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)

  • Familia: fields (input de texto especializado) · Método: solo análisis; evidencia por dimensión · demos fuera
  • Capas leídas: morfo completo (8 partes verificadas) · soma types completo · provider dirigido (debounce :38-116) · wrapper eidos leído · pack sema ✓ existe
  • Máquina: PASS con R-1.3 · tests ✓ · README ×2 ✓

Dimensiones (evidencia leída)

# Dimensión Estado Evidencia
1 Composición ✓ Partes compositivas (Icon/Input/LoadingIndicator/ClearTrigger); Input bloquea passthrough de value/onchange vía Without (types :105-108) — el provider posee el valor
2 Naming ✓ con heterogeneidad de tipado value/onValueChange ✓; onSubmit: (value)=>void y onClear: ()=>void en crudo mientras onValueChange usa OnChangeFn (types :43-47) — tipado de callbacks heterogéneo → fila en _naming; debounceMs (sufijo-unidad, :74); clearOnEscape (:50)
3 Coherencia semántica ✓ mejor que el trío commit-submit + commit-reset (morfo :14-34) — buscar Y limpiar suenan; nota: target=provider mientras el trío targetea input (convención de target a unificar, menor)
4 API ✓ ejemplar Doble camino documentado con razón (live vs formal, types :29-32); debounce con semántica precisa (valor síncrono, callback diferido, flush en clear/submit, :68-74); interacción aria-label↔Field.Label documentada (:82-86)
5 Tokens ✓ con dup height-{k} duplicada (SYS-6); resto canónico
6 Sema ✓ expression: 'pack' + pack existente — submit/reset con carácter
7 Animaciones ✓ Sin keyframes; LoadingIndicator = spinner del sistema
8 Contrato morfo 2 hallazgos F-1: apg: combobox (:9) pero NO hay popup/listbox (8 partes verificadas) — el patrón real es role=searchbox (:73); cita APG errónea. F-2: LoadingIndicator con aria-hidden='true' Y aria-live='polite' juntos (:113-116) — se anulan (un nodo hidden no anuncia); elegir uno. Flags focused/empty/loading en provider (:49-51) ✓ superficie de estado rica. Escape condicional DECLARADO en morfo (when: prop-truthy clearOnEscape, :95-99) ✓ elegante
9 A11y ✓ con F-2 aria-label vía translationRef con fallback (:82-84 — mecanismo i18n en el contrato ✓); aria-invalid condicional
10 Theming hallazgo R-1.3 data-readonly declarado (:46,:77) SIN estilo — contrato visual incompleto (máquina); focus outline puro → SYS-5
11 Composición interna ✓ Participa de Field.Provider (OR-merge documentado, types :26-27, :52)
12 Estados ✓ disabled/readonly/required/invalid + focused/empty/loading proyectados
13 Runtime ✓ ejemplar Debounce vía TimerHandle de uix.timers con clave namespaced soma:search-field:{id}:debounce (provider :71,:115-116) + cancel al desmontar (regla A6 citada, :107-109) — el patrón de disciplina que la dimensión pide
14 Docs+tests ✓ README ×2, suite ✓
15 i18n ✓ texts morfo (label + clear); translationRef en aria

Hallazgos y propuestas

ID Hallazgo Propuesta
F-1 Cita APG errónea (combobox sin popup) Cambiar a la referencia correcta (searchbox no tiene patrón APG propio → usar la regla "sin patrón + razón" que saldrá de SYS para media-player/drag-drop)
F-2 aria-hidden + aria-live juntos en LoadingIndicator — se anulan Decidir la intención: si debe ANUNCIAR "buscando…", quitar aria-hidden y dar texto sr-only; si es decorativo, quitar aria-live
F-3 readonly sin estilo (R-1.3) Tratamiento único de familia (composición Field, SYS-6)
F-4 Tipado de callbacks heterogéneo (OnChangeFn vs crudo) Normalizar en el veredicto de _naming (propuesta: OnChangeFn para todo callback de dato; crudo solo para señales sin payload)
F-5 height-{k} duplicada SYS-6

Escalan al sistema

_naming (tipado de callbacks + debounceMs + target-de-evento provider-vs-input) · SYS-5 · SYS-6 · regla APG-sin-patrón (con media-player/drag-drop).

Veredictos

(pendiente — checkpoint post-barrido)

Powered by TurnKey Linux.