From 730812c074eca7abd6d4f6702d5b9d035d01b6c6 Mon Sep 17 00:00:00 2001 From: dev Date: Fri, 3 Jul 2026 02:52:40 +0200 Subject: [PATCH] fix(uix): clear the catalog's clean functional-error flags + reframe C10 tiers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cleared the error-severity flags that were mature components missing a documented exception, not real gaps: - 4 service components (format-date, format-number, relative-time, trans) get their E-2.2 exception: they render text via $format/$langs with no visual recipe — no {name}.css by design. - alert-dialog gets its R-1.1 exception: it composes Dialog (soma reuses the Dialog runtime, data-dialog-* markers reach the DOM, dialog.css paints the chrome) — a [data-alert-dialog] root rule would style nothing. - card gets its missing A-1.3 texts.label (+ langs entry, registered) — card had no label at all. C10 (maturity tiers) reframed after the classification exercise showed the audit VERDICT is the maturity oracle, and 'experimental' is nearly empty once exceptions are documented: stable = PASS (82); preview = NEEDS-WORK on docs/demo only (E-2.3/F-1.x/D-*) — functionally sound but underdocumented, which includes mature components like button/table/listbox (a README gap is not immaturity); experimental/WIP = a real FUNCTIONAL gap or foreign track. C10 folds into C8 (document the tier + exceptions when writing READMEs). Real gaps registered, NOT silenced: float-panel A-3.7 (28 mutating keyboard actions, 6 events — a morfo-completeness question), card-group (no morfo), natural-time-picker A-3.1; announce/clipboard R-1.5 (live-region / composed-focus) await their READMEs in C8 to host the exception. npm run check at the 59 baseline; alert-dialog -> PASS. Co-Authored-By: Claude Fable 5 --- docs/process/PLAN-component-coherence.md | 3 ++- src/uix/eidos/components/alert-dialog/README.md | 4 ++++ src/uix/eidos/components/format-date/README.md | 4 ++++ src/uix/eidos/components/format-number/README.md | 4 ++++ src/uix/eidos/components/relative-time/README.md | 4 ++++ src/uix/eidos/components/trans/README.md | 4 ++++ src/uix/langs/components/card.ts | 8 ++++++++ src/uix/langs/components/index.ts | 2 ++ src/uix/morfo/components/card.ts | 3 +++ 9 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/uix/langs/components/card.ts diff --git a/docs/process/PLAN-component-coherence.md b/docs/process/PLAN-component-coherence.md index 39dfa659a..e1ee17f6f 100644 --- a/docs/process/PLAN-component-coherence.md +++ b/docs/process/PLAN-component-coherence.md @@ -46,7 +46,8 @@ Por dimensión: | **C7** | **Size-bundle sweep HECHA 2026-07-03** — 366 refs de coordenada cruda (`--control-height-{k}` · `--font-size-{k}` · `--icon-size-{k}`) → coordenada del bundle (`--size-{k}-{coord}`) en base.ts; 34 recipes consumen el bundle (era 1, pilot toggle), 0 crudos restantes. El bundle = alias puro → CSS generado idéntico en VALOR computado (verificado en navegador: cadena `--accordion-trigger-min-height-md` = `--size-md-control-height` = `--control-height-md` = `calc(36px*1*1)`). Guard: test en recipe-css-contract prohíbe la coordenada cruda en recipes. `base`/`xxxl` sin bundle → siguen en el primitivo tipográfico | **HECHA** | | **C8** | **READMEs** — 28 nuevos + F-1.x incompletos (~18). Baseline/Comparativa (≥3 refs reales)/Decisiones/Gaps; passive → justificación. El más pesado: requiere investigación por componente | pendiente | | **C9** | **Motion eventful gap** — decidir qué interactivos deben expresar firma de evento (hoy 10) y cablearla; criterio: alta frecuencia = sobrio (doctrina D.5) | pendiente | -| **C10** | **Tiers de madurez** — `stable · preview · experimental` en índice de componentes + criterio (PASS+README = stable) | pendiente | +| **C10** | **Tiers de madurez — REFRAMEADO 2026-07-03**: el veredicto del audit ES el oráculo de madurez. Clasificación objetiva: **stable** = PASS (82); **preview** = NEEDS-WORK solo por docs/demo (E-2.3/F-1.x/D-*) — funcionalmente sano, subdocumentado (~35, incl. button/table/listbox — maduros con gap de README, NO inmaduros); **experimental/WIP** = gap FUNCIONAL real o foráneo (pocos: float-panel A-3.7, card-group sin morfo, natural-time-picker A-3.1, media-player+words/palabras/chronos foráneos). C10 se pliega en C8 (documentar tier + excepciones al escribir READMEs). Cerrados esta pasada los flags funcionales limpios: 4 service E-2.2 (format-date/number, relative-time, trans), alert-dialog R-1.1 (compone dialog), card A-1.3 (texts.label+langs) | **parcial (reframe + flags limpios)** | +| **Gaps reales tracked** | NO silenciados: **float-panel A-3.7** (28 teclas mutantes, 6 eventos — completitud de morfo); **card-group** sin morfo; **natural-time-picker A-3.1** (interactive sin eventos declarados) + R-2.1 (sky fixed-tone, excepción cuando tenga README); announce/clipboard R-1.5 (live-region/composed-focus, excepción cuando tengan README en C8) | pendiente | ## Tandas S — hallazgos del ejercicio Knob (STUMBLES.md, 2026-07-03) diff --git a/src/uix/eidos/components/alert-dialog/README.md b/src/uix/eidos/components/alert-dialog/README.md index 194dd33a7..4077c624c 100644 --- a/src/uix/eidos/components/alert-dialog/README.md +++ b/src/uix/eidos/components/alert-dialog/README.md @@ -141,3 +141,7 @@ behavioural locking. - Chakra v3: - Radix Themes: - shadcn/ui: + +## Audit exceptions + +- `R-1.1 exception:` AlertDialog composes Dialog — soma reuses the Dialog runtime, so `data-dialog-*` markers reach the DOM and `dialog.css` paints the chrome. This recipe owns only the Action/Cancel button row; a `[data-alert-dialog]` root rule would style nothing (see the recipe header). diff --git a/src/uix/eidos/components/format-date/README.md b/src/uix/eidos/components/format-date/README.md index 7a6f3b7c7..3f65d4755 100644 --- a/src/uix/eidos/components/format-date/README.md +++ b/src/uix/eidos/components/format-date/README.md @@ -99,3 +99,7 @@ Si quieres mostrar timezone label (`timeZoneName`), usa per-axis: - Engine wiring: `src/arts/format/dates/engine-dates.ts` - Active runtime: `src/arts/format/dates/active-dates.svelte.ts` - Conflict tests: `src/arts/format/dates/test/engine-dates.test.ts` + +## Audit exceptions + +- `E-2.2 exception:` `` is a service component — it renders locale-formatted text via `$format`, with no visual recipe of its own. No `{name}.css` by design. diff --git a/src/uix/eidos/components/format-number/README.md b/src/uix/eidos/components/format-number/README.md index 9deef1086..69bd9d488 100644 --- a/src/uix/eidos/components/format-number/README.md +++ b/src/uix/eidos/components/format-number/README.md @@ -76,3 +76,7 @@ Familia con ``, ``, ``. - Intl.NumberFormat: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat - Engine: `src/arts/format/numbers/engine-numbers.ts` - Active runtime: `src/arts/format/numbers/active-numbers.svelte.ts` + +## Audit exceptions + +- `E-2.2 exception:` `` is a service component — it renders locale/currency/unit-formatted text via `$format`, with no visual recipe of its own. No `{name}.css` by design. diff --git a/src/uix/eidos/components/relative-time/README.md b/src/uix/eidos/components/relative-time/README.md index 89fb0e507..54cbc57f6 100644 --- a/src/uix/eidos/components/relative-time/README.md +++ b/src/uix/eidos/components/relative-time/README.md @@ -72,3 +72,7 @@ Familia con ``, ``, ``. - Intl.RelativeTimeFormat: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat - Dates engine: `src/arts/format/dates/engine-dates.ts` (de donde lee el locale activo) + +## Audit exceptions + +- `E-2.2 exception:` `` is a service component — it renders a live relative-time string via `$format` + a timer, with no visual recipe of its own. No `{name}.css` by design. diff --git a/src/uix/eidos/components/trans/README.md b/src/uix/eidos/components/trans/README.md index b32c564af..bc95823ef 100644 --- a/src/uix/eidos/components/trans/README.md +++ b/src/uix/eidos/components/trans/README.md @@ -80,3 +80,7 @@ sitio que toca el catalogo con `grep "` is a service component — it renders a translated idlangref via `$langs`, with no visual recipe of its own. No `{name}.css` by design. diff --git a/src/uix/langs/components/card.ts b/src/uix/langs/components/card.ts new file mode 100644 index 000000000..2b1bbc886 --- /dev/null +++ b/src/uix/langs/components/card.ts @@ -0,0 +1,8 @@ +import type { LangNode } from '$libs/langs'; + +export const cardLangs = { + label: { + es: 'Tarjeta', + en: 'Card' + } +} satisfies LangNode; diff --git a/src/uix/langs/components/index.ts b/src/uix/langs/components/index.ts index 1e4be9f41..500961638 100644 --- a/src/uix/langs/components/index.ts +++ b/src/uix/langs/components/index.ts @@ -8,6 +8,7 @@ import { breadcrumbLangs } from './breadcrumb'; import { buttonLangs } from './button'; import { buttonGroupLangs } from './button-group'; import { calendarLangs } from './calendar'; +import { cardLangs } from './card'; import { carouselLangs } from './carousel'; import { cascadeLangs } from './cascade'; import { chartLangs } from './chart'; @@ -110,6 +111,7 @@ export const componentLangs = { button: buttonLangs, 'button-group': buttonGroupLangs, calendar: calendarLangs, + card: cardLangs, carousel: carouselLangs, cascade: cascadeLangs, chart: chartLangs, diff --git a/src/uix/morfo/components/card.ts b/src/uix/morfo/components/card.ts index 92096c76e..a41c3be05 100644 --- a/src/uix/morfo/components/card.ts +++ b/src/uix/morfo/components/card.ts @@ -29,6 +29,9 @@ export const cardMorfo = { kebab: 'card', scope: ['sema', 'eidos'], expression: "family-default", + texts: { + label: '#?components.card.label|Card' + }, events: [ { name: 'commit-select',