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/date-range-picker.md

7.0 KiB

date-range-picker — ficha de auditoría (RE-AUDITADA 2026-07-07, profundidad piloto)

  • Familia: pickers (compone date-range-field + range-calendar; month/year-range bespoke) · Método: solo análisis; evidencia por dimensión · demos fuera
  • Capas leídas: morfo (323 líneas; expression :15, evento :25-31, MonthView razón :146-148, namespacing :165-166, literales :160/:248, cells :228-229/:316-317) · eidos css dirigido (:21-28,:111-114)
  • Máquina: PASS · tests ✓ · README ×2 ✓

Dimensiones (evidencia leída)

# Dimensión Estado Evidencia
1 Composición ✓ con razón in-place expression: "delegated" (:15) + commit-reset propio (:25-31) ✓ patrón canónico; MonthView NO duplica month-grid: es el "month-view range bridge for kind='month'" con su state machine empty/pending/complete + year stepper (razón :146-148) y partes flat por namespacing month-view-* (:165-166) — funcionalidad distinta (rango de meses vs mes único), legítima y documentada
3 Coherencia semántica ✓ delegada Suena por date-field (tuneado hoy); la coherencia del cuarteto range depende de SYS-3
8 Contrato morfo 2 hallazgos F-1: aria-label v.literal('Select month range') (:160) y v.literal('Select year range') (:248) — inglés HARDCODEADO no localizable, cuando calendar usa v.commonRef(key, fallback); único caso de la familia · MonthViewCell/YearViewCell declaran data-range-start/end (:228-229,:316-317) ✓ caps; verificar en fase de fixes cómo pinta eidos el TRAMO MEDIO del rango pendiente (sin hook data-* de in-range visible en el morfo)
10 Theming hallazgo doctrina F-2: su CSS re-declara privados AJENOS --_calendar-range-{start,end}-* con roles hardcodeados (affirm/accent :21-28; secondary :111-114) — cross-component private tuning: el anti-patrón "override del compuesto desde el host" (doctrina respect-composed-styles) en su forma más densa; + re-declara alturas de date-field per-size ×5
12 Estados ✓ con memoria Placeholder compartido de endpoints (incidencia 2026-05-20 #1) documentado en el provider del single ✓
9 A11y ✓ con F-1 Content: Escape close + Tab/Shift+Tab trap declarado (:140-142)
resto ✓ / hereda tests ✓; README ×2 ✓

Hallazgos y propuestas

ID Hallazgo Propuesta
F-1 2 aria-labels en inglés hardcodeado (v.literal) — no localizables Migrar a v.commonRef('date-range-picker.month-range', 'Select month range') + entrada de texts; censar v.literal con texto humano en el resto del catálogo (guard candidato: literal con espacios = sospechoso)
F-2 Re-declaración masiva de privados ajenos (--_calendar-range-* con roles + alturas date-field ×5) SYS-8 (capa calendar-surface con los tokens de rango COMO API pública de la capa) + SYS-6 (token de familia field); las dos capas formales eliminan las copias
F-3 Hook del tramo medio del rango sin declarar en morfo (solo caps) Verificación dirigida al ejecutar SYS-8: si eidos pinta in-range por selector no-morfo, es drift del contrato

Escalan al sistema

SYS-3 · SYS-6 · SYS-8 (evidencia máxima del borrow) · SYS-11 (ejemplo positivo de delegated) · censo nuevo: v.literal con texto humano (F-1 — regla de máquina candidata).

Veredictos

(pendiente — checkpoint post-barrido)

Powered by TurnKey Linux.