diff --git a/scripts/component-audit.ts b/scripts/component-audit.ts index 72853666a..1af7c763c 100644 --- a/scripts/component-audit.ts +++ b/scripts/component-audit.ts @@ -553,12 +553,19 @@ function checkRecipe(kebab: string, info: ComponentReport): CheckResult[] { if (hasRoot) out.push(pass('R-1.1', 'error')); else out.push(fail('R-1.1', 'error', `Missing root selector [data-${kebab}]`)); - // R-1.2: data-disabled state styled if interactive - if (info.interactive) { + // R-1.2: data-disabled state styled. Only required when the morfo + // actually declares `data-disabled` on any part — otherwise the audit + // would demand defensive styling for state the contract never emits. + const morfoDeclaresDisabled = (tryRead(join(MORFO_DIR, `${kebab}.ts`)) ?? '').includes( + 'data-disabled' + ); + if (info.interactive && morfoDeclaresDisabled) { const hasDisabled = /\[data-disabled\b/.test(css); if (hasDisabled) out.push(pass('R-1.2', 'error')); else out.push(fail('R-1.2', 'error', 'No [data-disabled] styles')); + } + if (info.interactive) { // R-1.5: focus-visible const hasFocus = /:focus-visible\b/.test(css); if (hasFocus) out.push(pass('R-1.5', 'error')); diff --git a/src/uix/eidos/components/form/README.md b/src/uix/eidos/components/form/README.md index 725162ea1..724052114 100644 --- a/src/uix/eidos/components/form/README.md +++ b/src/uix/eidos/components/form/README.md @@ -6,6 +6,19 @@ state, error aggregation, reset and first-error focus. Eidos owns only visual attrs: `data-size`, `data-layout`, `data-variant` on the root and `data-size`/`data-variant`/`data-color` on actions. +## Baseline + +- **air**: no había `Form` reflexivo. Air tenía field individuales + un + contenedor `